Summer research presentation: Stone/O'Neill students

Colloquium

Speaker(s)
research students
Date
Thursday, October 8, 2009
Time
4:15 PM – 5:15 PM
Location
Galileo Pryne

Students who worked on summer research projects with Professor Stone and Professor O’Neill will present their work.


Title: OCM: Observationally Cooperative Multithreading
Speakers: Bart Broad, Kwang Ketcham, Sam Just
Research Advisers: Professors Chris Stone and Melissa O’Neill
Abstract:
Modern processors are designed to perform more tasks simultaneously, rather than to perform single tasks more quickly. These new multicore processors are powerful, but using that power is challenging; interesting problems often divide irregularly, requiring difficult and error-prone coordination among subtasks. Consequently, parallel programming is considered hard to learn and harder to do.

Observationally Cooperative Multithreading (OCM) is a new approach. In programs written for cooperative multithreading (CM), subtasks take turns and execute one at a time. The CM model is well-known to rule out conflicts and to simplify programming. OCM takes these same programs but runs them on modern multicore machines, executing subtasks simultaneously when there are no conflicts.

The result can be a speed and resource-utilization benefit with no extra complexity for programmers. Potentially, OCM could make concurrency more accessible to a broad audience, including introductory students.

Over the summer, we produced two OCM implementations for Lua, one based on Transactional Memory and one based on locks. Preliminary benchmark results are encouraging.

Title: Multilingual Introspective Memory Profiling
Students: Paul Downen (*), Eli Lindsey (*), Daniel Lubarov
Research Adviser: Professor Melissa O’Neill
(*) External student; material will be presented by Prof. O’Neill
Abstract:
Profilers are tools used for gathering information about the time and space usage of a program. Detailed and accurate profilers give both language implementors and application programmers the ability to inspect the internals of an otherwise opaque system, and are especially useful in tracking bugs such as space leaks and addressing performance issues.

Memory profiling often requires source code changes, recompilation, or a runtime system with built-in profiling support. But sometimes source is not available, or profiling runtime systems are either unavailable or unable to provide the desired profiling.

We have explored an alternate method for gathering memory profiles: we observe that many current languages provide hooks for debugging, extension, or introspection, and that those hooks can be used to allow a memory profiler to inveigle itself without making changes to the original program or the runtime system.

In this talk, we explore how introspective profiling can be applied to several different languages, describe the techniques involved, discuss the benefits of a language-agnostic logging format for memory profiles, and discuss further opportunities for understanding the memory behavior of programs.