Abstract
For the past decade, we have been developing a parallel programming
model based on virtualization. The basic idea is simple: let the
programmer divide the work into a large number of chunks, mostly
independent of the number of processors, and let the system map
these entities to processors. Moreover, this idea leads to an
effective separation of concerns between the programmer and the
runtime system (RTS), and empowers the RTS to carry out several
tasks automatically that would normally require complex parallel
programming skills. We describe the methodology, explain its
advantages, and the success it has led to, including two Gordon
Bell award nominations for ``difficult to parallelize''
applications.