X10: An Object-Oriented Approach to Non-Uniform Cluster Computing
Town and Country Room
Tuesday, 11:15, 45 minutes
Philippe Charles, IBM Research
Christopher Donawa, IBM Software Group
Kemal Ebcioglu, IBM Research
Christian Grothoff, Purdue University
Allan Kielstra, IBM Software Group
Vijay Saraswat, IBM Research
Vivek Sarkar, IBM Research
Christoph von Praun, IBM Research
The next generation of high performance computers (e.g. those capable of O(1015) operations per second) will be based on scale-out techniques rather than increasing clock rates. This leads to a notion of clustered computing: a single computer may contain hundreds of thousands of tightly coupled nodes. Unlike a distributed model, failure of a single node is tantamount to failure of the entire machine. However, the cost of memory access by a hardware processor may vary as much as five orders of magnitude across the cluster; hence the notion of a single shared memory may no longer be appropriate for such machines.
We have designed a concrete modern object-oriented programming language, X10, for high performance, high productivity programming of such machines. Past work in the Java Grande Forum has exposed the need for substantial changes in modern OO languages in order to support high performance computation (e.g. support for true multi-dimensional arrays, value types, relaxed exception model, changes to the concurrency model, support for distribution etc.) X10 builds on this past work. A member of the partitioned global address space family of languages (which includes Titanium, UPC, and Co-Array Fortran), X10 is distinguished by the explicit reification of locality (places), termination detection (finish), by the use of lock-free synchronization (conditional atomic sections), and by the ability to express clustered data-structures (e.g. arrays scattered across multiple places). X10 smoothly integrates concurrent shared memory access (e.g. as expressed by OpenMP or Java threads) with message-passing (e.g. as expressed by MPI). We present the design of the core features of the language, experience with a reference implementation and present results from some initial productivity studies.