Abstract
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 divided into a large
number of chunks (called virtual processors), which are mapped to
processors by an adaptive, intelligent runtime system. The runtime
system also controls communication between virtual processors. 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 virtualization - 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.