Performance and Productivity in Parallel Programming via Processor Virtualization
Laxmikant V. Kalé · 2004
We have been pursuing a research program aimed at enhancing productivity and performance in parallel computing at the Parallel Programming Laboratory of University of Illinois for the past decade. We summarize the basic approach, and why it has improved (and will further improve) both productivity and performance. The centerpiece of our approach is a technique called processor virtualization: the program computation is di-vided into a large number of chunks (called virtual pro-cessors), which are mapped to processors by an adap-tive, intelligent runtime system. The runtime system also controls communication between virtual proces-sors. This approach makes possible a number of runtime optimizations. We argue that the following strategies are necessary to improve productivity in parallel programming: • Automated resource management via processor vir-tualization • Modularity via concurrent composability • Reusability via frameworks, libraries, and multi-paradigm interoperability Of these, the first two directly benefit from processor virtualization, while the last is indirectly impacted. We describe our research on all these fronts. 1.