Lab Home | Phone | Search | ||||||||
|
||||||||
Leveraging concurrency has become essential for achieving adequate performance, whether in multicore chips, GPUs, or supercomputers. Given the complexity of modern software applications, however, supporting high developer productivity and good performance while avoiding race conditions and other concurrency-related errors has proved elusive. We propose Access Permissions as a way of capturing engineering design intent, including state transitions and aliasing among objects, and show how these permissions can be used to document concurrent abstractions, eliminate even high-level race conditions, and automatically parallelize applications. This approach allows developers to focus on domain issues and high-level design, while tools and the run-time system identify potential defects and extract greater levels of concurrency.
I will close by describing possible directions for future work, including permissions that support reasoning about locality in multiprocessor systems, verifying concurrent framework use (with Robert Bocchino), and parallel programming models based on neurobiological primitives (with Cyrus Omar). |