Fri Aug 12, 11-12, 4750 Boelter Hall Computing at Scale -- the Design of X10 Vijay Saraswat IBM Watson We present the design of the X10 programming language, a modern object-oriented programming language intended to express computations for high-end computers operating with hundreds of thousands of threads. At such large scales, data access times and latency can vary widely across the machine, making it very difficult to support a notion of uniform shared memory. X10 introduces the notion of *places* to reify locality: a place contains data, together with one or more activities operating on the data. A computation may have millions of places. Aggregate data-structures, such as arrays, may be scattered across multiple places. Activities may be spawned dynamically to operate on local or remote data. Clocks are introduced to provide a determinate way of managing distributed phased operations. An activity may wait for computation of a subactivity to terminate before progressing. Taken together, these provide a very rich, expressive and yet disciplined framework for concurrent programming over distributed datastructures. (We show, for instance, that programs using the X10 constructs above cannot deadlock.) Thus X10 covers those programming areas that are today handled with a combination of OpenMP (for intra-node parallelism) and MPI (for message-passing between nodes). We illustrate through several (running) examples, and discuss the status of the current reference implementation. Joint work with Vivek Sarkar, Kemal Ebcioglu, Christoph von Praun, Christian Grothoff, Philippe Charles, Allan Kielstra, Christopher Donawa and Armando Solar-lezama. Host: Jens Palsberg