Development and Execution Environments
Principal Investigators: Sarita Adve, Vikram Adve, Matt Frank, María Garzarán, Sanjay Kale, Rakesh Kumar, David Padua, Madhu Parthasarathy, Josep Torrellas, Wen-mei Hwu, Craig Zilles
Our research in development execution environments is driven by the following observations:
Supporting discipline
New disciplined programming models will require support from the system. For example, disciplined use of shared memory could benefit from hardware support for race detection and from speculation. To truly separate performance concerns from correctness, and to support portability and scalability, it is likely that the runtime will need to expose a common virtual parallel interface as a target for the compiler and then map that interface to the current hardware at execution time. Autotuning and efficient run-time resource management require better performance sensors and actuators.
Rewarding discipline
Our research goes further than providing only the support required to enable our disciplined models. Too often, information available at higher levels of the system stack is lost at the lower levels, forgoing significant opportunities. All of our disciplined programming models naturally capture a rich amount of information about the program. Our research seeks to exploit this information to the fullest so we can reward discipline with robust performance, and foster the adoption of such models.
Facilitating transition to disciplined programs
Change is always disruptive, even change for the better. We can accelerate change by lowering its cost. Tools such as refactoring tools and correctness checking tools can make it easier to adopt our techniques; e.g., by enabling interactive (semi-automated) conversion of old code into the new models and by making it possible to use the new models with the old. Moreover, architectural support for deterministic replay of parallel programs, data-race detection, and pervasive program monitoring will facilitate the transition of users to the new environments.
Supporting co-existence
New programming models and new runtime environments will need to co-exist with currently available software for many years. Although we want to reward discipline, we cannot punish current software stacks. We therefore need to continue to provide performance and aid programmability with current programming models.
Driven by the above, we are engaged in the following research:
- Translation environment
- Runtime system
- Hardware architecture
- Formal methods and tools to check correctness