CX10: a distributed runtime for X10
Summary
X10 is an object-oriented (OO) programming language supporting partitioned global address space (GAS) programming, being developed at IBM. It's designed to enable high-performance programming for applications in scientific computing domain, as well as in commercial, general-purpose domain. Its main features include: places, abstractions of computing contexts (such as a node in a cluster) with a locally synchronous view of the shared memory. Places can be mapped to runtime resources flexibly; activities, abstractions of tasks, threads or processes. They may access memory locations in places where they live synchronously; and they must spawn new activities to access memory locations at other places; clocks, abstractions for coordination between activities; atomics, abstractions for ensuring atomicity of a sequence of operations inside a activity; arrays, flexibly indexed; and whose elements can span multiple places.
CX10 project aims to develop an efficient runtime for running X10 programs on top clusters, while at the same time, investigating ways to do checkpointing, computation migration and distributed transaction; exploring new and novel programming paradigms which takes advantages of the features designed into X10.
Status
We have a fairly complete support for features in X10. The code passed all available X10 programs under x10.common (both in single VM mode and multiple VM mode), and we can run the full set of Java Grande Benchmarks, converted to X10. There are still some inefficiency in (de)serialization, memory consumption, and in some operations on the distribution constructs, in the current code. We are working on them. Take a look at the current performance of cx10, running JGF.
Downloads
Source Release
- CX10-1.0.tar.gz: Aug. 2006, our first source release. A fairly complete distributed array operations are now supported. Robustness of other features, Finish and Clock, are improved. Our code pass all the x10 programs under x10.common/examples directory, when run in both single VM mode and multiple VM mode.
Binary Release
- latest: Aug. 2006 updated, binary release of the most recent version under development.
- release 0.1: May 2006; A preliminary version supporting X10 features: places, asyncs, futures, finish, clock, atomic, when, value objects, distributed arrays. Support for array operations is not complete.
Documentation
- README For instructions to install the binary release, using the x10c and x10 commands to compile and run X10 programs, and scripts cx10run.sh (currently, Linux platform only) to run a X10 program on a cluster.
- Overview of CX10 An overview of the design of cx10 and some comments on writing multiple-placed programs in X10.
Comments
Please send comments, bug reports, and suggestions to Bin Xin.
Last updated Aug. 22, 2006