Check out the new USENIX Web site. next up previous contents
Next: References Up: Extending the Standard Template Previous: Related Work

Conclusions

  In this article we discussed how the generic programming paradigm can be used for parallel programming. The discussion was in the context of Coir<Futures>, our multi-threaded parallel C++ library. We introduced two abstractions - one for future-based control parallelism and the other for data parallel generic algorithms. The idea of futures is not new [2, 11, 24] but the notion of combining them with generic programming paradigms is one of the contributions of our work. Futures fit well with the template-based programming style of STL. Data parallel generic algorithms help reuse the corresponding sequential algorithms, provide an easy pattern for writing the parallel counterparts of the sequential algorithms, and provide a uniform interface and even implementations for different work distribution strategies in the spirit of generic programming. Generic reduction mechanism, and generic data-parallel algorithm design are some of the other contributions of this paper.

The idea of futures can be extended beyond just delayed computation. As futures are place-holders, they are similar to proxies. Futures need not only represent computation in the current address space, but can also be used for remote method invocations and persistent data types. The use of object-oriented and generic programming paradigms make it possible to provide a uniform interface for these objects with different behaviors and allow such objects to interact easily.

As we continue to work on the Coir<Futures> system, we are also working on more general ideas for software patterns [8, 5] for object-oriented parallel programming. Though some language-specific work already exists [12], specifying them beyond the language barrier will aid in interoperability.



Sundaresan Neelakantan
Thu May 15 16:11:49 PDT 1997