Concepedia

TLDR

Moore’s Law no longer supports clock‑frequency scaling, prompting a shift from uniprocessors to multiprocessor Non‑Uniform Cluster Computing systems, which will significantly affect existing software. The authors designed X10, a modern object‑oriented language, to enable high‑performance, high‑productivity programming of NUCC systems and to evaluate its effectiveness against Java. X10 implements a partitioned global address space with explicit locality via places, lightweight activities (async, future, foreach, ateach), a finish construct for termination detection, lock‑free atomic blocks, and cluster‑wide global data structures. Initial productivity comparisons show that X10 outperforms Java in key metrics for NUCC programming.

Abstract

It is now well established that the device scaling predicted by Moore's Law is no longer a viable option for increasing the clock frequency of future uniprocessor systems at the rate that had been sustained during the last two decades. As a result, future systems are rapidly moving from uniprocessor to multiprocessor configurations, so as to use parallelism instead of frequency scaling as the foundation for increased compute capacity. The dominant emerging multiprocessor structure for the future is a Non-Uniform Cluster Computing (NUCC) system with nodes that are built out of multi-core SMP chips with non-uniform memory hierarchies, and interconnected in horizontally scalable cluster configurations such as blade servers. Unlike previous generations of hardware evolution, this shift will have a major impact on existing software. Current OO language facilities for concurrent and distributed programming are inadequate for addressing the needs of NUCC systems because they do not support the notions of non-uniform data access within a node, or of tight coupling of distributed nodes.We have designed a modern object-oriented programming language, X10, for high performance, high productivity programming of NUCC systems. A member of the partitioned global address space family of languages, X10 highlights the explicit reification of locality in the form of places }; lightweight activities embodied in async , future , foreach , and ateach constructs; a construct for termination detection ( finish ); the use of lock-free synchronization ( atomic blocks ); and the manipulation of cluster-wide global data structures. We present an overview of the X10 programming model and language, experience with our reference implementation, and results from some initial productivity comparisons between the X10 and Java™ languages.

References

YearCitations

Page 1