|
> |
Filaments and CableFilamentsFilaments is a library package that can be used to create architecture-independent parallel programs---that is, programs that are portable efficient across vastly different parallel machines. Filaments virtualizes the underlying machine in terms of the number of processors and the interconnection. This simplifies parallel program design in two ways. First, programs can be written (or generated) with the focus on the parallelism inherent in the application, not the architecture. Second, programs can be written that use familiar shared-variable communication. Furthermore, Filaments uses a carefully designed API along with machine-specific runtime libraries and preprocessing that allow programs to run unchanged on both shared- and distributed-memory machines. Most importantly, applications programmed in Filaments run efficiently. The home page for the Filaments Project is here. CableFilaments for a distributed memory machine (Distributed Filaments) uses a multithreaded software distributed shared memory (SDSM), which we call Cable. It was the first multithreaded SDSM. Multithreading is critical to efficiency because it permits the overlapping of communication and computation. This is doubly important in a SDSM because remote data is requested on demand. Without the abililty to overlap, a remote request would be prohibitively expensive. Cable also supports multiple page consistency protocols (PCP). There are many different sharing/access patterns in applications. Consequently, a single protocol cannot be ideal for all applications. In a Cable, a protocol guards each page containing application data. The application selects the protocol for each page. It may employ multiple protocols simultaneously. This is quite useful because within an application the ideal protocol varies among data structures. At least the following PCPs have been implemented.
SupportSupport for our work is/has come from the following
|