![]()
|
Tulip | |||||||
|
N.B. Development of Tulip has ceased, as has direct support of new users by the developers. It does not run on NERSC systems and we do not recommend its use. A follow-on project to Tulip, called InDEPS, is in the works, and if you're interested in the functionality provided by Tulip, we suggest you wait for InDEPS. Tulip is an an implementation of the HPC++ interface specification for high performance machines. It provides two kinds of capabilities. First, inter-machine communication is supported via one sided (put and get) communication operations on typed global pointers and remote method function invocation. Second, intra-machine lightweight parallel threads are available with both Java-like and POSIX-like (Pthread) APIs. Fast global synchronization of threads and collective operations tie the two capabilities together. Tulip uses Nexus in its communication layer and can support applications across heterogeneous architectures. The TAU performance analysis environment has been incorporated for performance monitoring. Tulip Threads are extensible, (almost) portable and fast: the subset Pthreads API offers thread creation and context switching times that have been found to be 3-5 times better than Pthreads itself on a Pentium II Linux cluster and on SGI/Irix. True asynchronous data movement (overlapping communication and computation) and zero-copy messaging have been implemented whenever possible. Tulip Threads achieve both efficiency and near portability by using a small set of code that is highly optimized and hand ported to new architectures, and then layering truly portable routines on top to compose the bulk of the library. Tulip users can write parallel programs using Tulip threads within shared memory, use the communications facilities for distributed memory programs, or use both to support a clustered SMP model. Interface implementations exist for C and C++ and work is underway on a Fortran interface. Tulip Threads will be used by the (Fortran) SPPM ASCI gas dynamics benchmark on the 6144 processor, 3 TFLOP machine, Bluemountain. PAWS will use Tulip for both communication and multithreading. Tulip has been incorporated into the redesign of POOMA to provide high performance system utilization on SGI machines. Tulip threads are being evaluated for adoption in Nexus, and for use in the Overture framework. There are no plans for evaluating Tulip since its development has been discontinued. However, you can submit your own evaluation of Tulip if you would like to. Tulip is still under development, but is available now for some platforms and communication substrates, and more are being added. Current ports include Pentium II Linux clusters,
SGI/Irix, Sparc, and
DEC Alpha. An IBM SP2 port is underway. There are versions of Tulip for
Nexus, Nexus-lite, and MPI. Work is also under way to enable Tulip to
use
the PM zero-copy Myrinet software, the multiple striped HiPPI
interfaces
on SGI, and the the Scheduled Transfer (ST) OS-bypass mechanism (under
development at Los Alamos). The Tulip website contains some information about the HPC++ classes, global pointers, etc. It also contains examples and a list of frequently asked questions. Tulip was developed at the Advanced Computing Laboratory at Los Alamos National Laboratory. Its principal developers were Peter Beckman, Dennis Gannon, Suvas Vajracharya and Dirk Grunwald. |
||||||||
|
||||||||