Split-C: a Practical Parallel Language for Distributed Memory Machines David E. Culler Computer Science Division U.C. Berkeley The traditional distinctions between Shared Memory, Message Passing, and SIMD are disappearing as technology forces machine designs toward systems based on state-of-the-art microprocessors with sizable local memory and a fast network interface. Split-C seeks to abstract this emerging common structure while retaining its fundamental performance characteristics, much as C does for modern uniprocessors. Split-C provides the programmer with an explicit global address space, while retaining the ability to run highly-tuned sequential code on each local portion. It provides a rich set of global access operations to allow communication to be optimized. Within this framework, shared memory, message passing, and data parallel programming can be freely mixed as alternative programming styles. I will present the Split-C language and its CM-5 implementation based on Active Messages.