Given the high cost of developing parallel software, there is a high
premium on being able to reuse parallel software modules. Yet, by the
nature of parallel computing, writing reusable parallel modules is
more difficult. In the traditional SPMD style, one can write reusable
libraries in the form of subroutines, but these are not adequate for
performance (because they cannot overlap idle time with useful
computations across modules, for example. See 95-07),
nor multi-context reuse. Data driven paradigms, such as Charm++ (data
driven objects) or user-level multi-threading are better in this
regard, and are the approaches we are pursuing. Within this context,
several issues still need to be researched to enable development of
truly reusable components. These include: distributed data exchange,
name-space collisions, interoperability among multiple paradigms,
etc. We are actively engaged in studying these issues and developing
techniques that address them. We believe that our parallel object
system (Charm++), and the interoperable runtime system (Converse)
provide a strong foundation for this research.
|