Concurrency and Programming Languages
Research areas
- Language abstractions for parallel programming
- Language abstractions for parallelism and synchronization
- Parallel programming languages
- Language runtimes
- Deterministic parallel programs
- Parallel programming with complex memory hierarchies
- Semantics of parallel language features
- Mechanized metatheory of parallel languages
- Static analysis
- Inference of thread- and task-dependencies
- Static detection of concurrency errors
- Parallel and scalable static analyses
Ongoing work
- Compiler support for task-parallelism: We are
developing SCOOP, a compiler for task-parallel programs that
produces code for both kinds of cores in a Cell processor, and
transparently inserts all needed calls for inter-core
communication. The compiler targets a runtime system that
automatically resolves all task-dependencies and guarantees
deterministic execution of the program.
- Static dependency analysis: We are developing a static
analysis that infers task-dependencies statically, reducing the
runtime cost of synchronization, without sacrificing the soundness
and determinism of the program.
- Runtime support for parallel programming: We are
developing a language runtime that implements novel abstractions
for parallel programming. A scheduler for task-parallel programs
that provably guarantees a deterministic order of execution, and a
memory-menagement library that can hide the NUMA or distributed
memory hierarchy from the programmer.
Software and tools
- Locksmith: A tool for finding races in C programs.
- Runtime support for dependency-aware schedulers: coming soon
- Compiler support for task-parallelism on the Cell: coming soon
People
Researchers
Students