PERCS -- Productive, Easy-to-use, Reliable Computing Systems

Funded under a grant from IBM within the DARPA's High Productivity Computing Systems (HPCS) initiative.

PI: Vitek

X10 is a modern object-oriented programming language in the family of languages supporting a partitioned global address space (GAS), which include language such as UPC, Titanium and Co-Array Fortran. The fundamental goal of X10 is to enable scalable, high-performance, high-productivity programming for traditional numerical computation workloads (such as weather simulation, molecular dynamics, particle transport problems etc) as well as commercial server workloads. X10 is based on state-of-the-art object-oriented programming ideas and takes advantage of years of research (e.g. in the context of the Java Grande forum) on how to adapt such languages to the context of high-performance numerical computing.

X10 introduces a flexible treatment of concurrency, distribution and locality, within an integrated type system. X10 extends the GAS model to the globally asynchronous, locally synchronous (GALS) model originally developed in hardware and embedded software research. X10 introduces places as an abstraction for a computational context with a locally synchronous view of shared memory. An X10 computation runs over a large collection of places. Each place hosts some data and runs one or more activities. Activities are extremely lightweight threads of execution. An activity may synchronously (and atomically) use one or more memory locations in the place in which it resides, leveraging current symmetric multiprocessor (SMP) technology. It must spawn activities asynchronously to access or update memory at other places. X10 provides weaker ordering guarantees for inter-place data access, enabling applications to scale. Immutable data needs no consistency management and may be freely copied between places.