"What can anyone give you greater than now" - William Stafford
Split-C - UC Berkeley, CS Division
Split-C is a parallel extension of the C programming language that supports efficient access to a global address space on current distributed memory multiprocessors. It retains the "small language" character of C and supports careful engineering and optimization of programs by providing a simple, predictable cost model. This is in stark contrast to languages that rely on extensive program transformation at compile time to obtain performance on parallel machines. Split-C programs do what the programmer specifies; the compiler takes care of addressing and communication, as well as code generation. Thus, the ability to exploit parallelism or locality is not limited by the compiler's recognition capability, nor is there need to second guess the compiler transformations while optimizing the program. The language provides a small set of global access primitives and simple parallel storage layout declarations. These seem to capture most of the useful elements of shared memory, message passing, and data parallel programming in a common, familiar context.
Split-C is currently implemented on the Thinking Machines Corp. CM-5, the Intel Paragon, the IBM SP-2, and the Meiko CS-2, and is under development on the Cray T3D. All versions are built using the Free Software Foundation's GCC and the message passing systems available on each machine. Faster implementations are underway for the Meiko CS-2 using the Elan libraries and for networks of workstations using Active Messages. It has been used extensively as a teaching tool in parallel computing courses and hosts a wide variety of applications. Split-C may also be viewed as a compilation target for higher level parallel languages.
Available documentation for Split-C includes the following:
Download the Split-C distribution for your platform (Meiko only - other platforms soon to be added)
Related projects include: