But what about those cases where you don't know what kind of interconnect there will be between processes when they run? This might be because your program is expected to last longer than any particular target platform (and the next one might have a different kind of interconnect), or because you are programming a very complex platform (such as a cluster of multiprocessors, or a "computational grid") with a variety of interconnects, and don't know (or don't want to care) precisely where the various processes will eventually end up relative to one another. And even if you do know the kind of interconnect between every two processes, maybe the "wrong" programming model has some (but perhaps not all) of the properties which you desire for your particular problem.
It is for these situations that CDS was created. CDS is not a message-passing library, or a shared memory library, per se, though it can be used as either (or both). CDS is a library that provides a simple way for the programmer to express his or her needs (i.e. the policy) for each communication independently, with the appropriate mechanism (such as message passing or shared memory) to be chosen dynamically at run-time based on those needs and the architecture and current state of the platform. In fact, if you already have a favorite communication mechanism (such as an ultra-fast message-passing library, for example), Elepar would like to help by interfacing CDS to it. That is, CDS can be made to use your library automatically for those architectural cases where it will yield the best performance.
If you are an MPI user, compare CDS to MPI (1 and 2) in terms of simplicity and flexibility for the kinds of tasks that you perform. If you see CDS lacking some functionality that you find important, please let us know! We are always happy to improve CDS. (This includes hearing the needs of others like ourselves who would like to use CDS in building runtime support for high-level portable parallel languages.) Or, better yet, take part in efforts to make the CDS interface (or something similar) into an independent standard, to facilitate its widespread deployment and support for a large number of platforms.
Copyright 2000 © elepar All rights reserved