X10 (v 2.1.0) Tutorial

Christoph von Praun, November 12, 2010

This is a tutorial for the programming language X10 based on version 2.1.0.
The tutorial was held at the University of Erlangen on November 12, 2010.

Lecture Notes

Some examples and discussions in this tutorial are adopted from referrences [2] and [4].
These materials are distributed under the Attribution-Noncommercial-Share Alike 3.0 Unported License.


X10 Resources

Examples and programming exercises in this course will be based on the programming language X10.
  1. Philippe Charles, Christopher Donawa, Kemal Ebcioglu, Christian Grothoff, Allan Kielstra, Christoph von Praun Vijay Sarsawat and Vivek Sarkar. X10: An Object-Oriented Approach to Non-Uniform Cluster Computing, Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), October 2005.
    Overview paper and motivation for a new parallel programming language.
  2. Vijay Saraswat, Bard Bloom, Igor Peshansky, Olivier Tardieu, and David Grove: Report on the Programming Language X10 - Version 2.1, October 2010.
  3. X10 Website
  4. Bard Bloom: X10 2.01 Tutorial, May 2010. [www]

Further Literature

Introduction, the Era of Multicore Programming

  1. David Patterson et al.: The Landscape of Parallel Computing Research: A View From Berkeley. August 2007 [www]
    Related Google Tech Talk "The Parallel Revolution Has Started: Are You Part of the Solution or Part of the Problem?" [youtube]

Models for Parallel Computation

  1. Maurice Herlihy and Nir Shavit: The Art of Multiprocessor Programming, Elsevier/Morgan Kaufmann 2008.
    For our course, chapter 3 on concurrent objects is of particular interest. This book is available online.
  2. Leslie Lamport: Time, Clocks and the Ordering of Events in a Distributed System, Communications of the ACM, 21(7), 558-565, 1978. [pdf]
    Original article that defines the happened-before relation.

Scalability and Performance Analysis

  1. Maged Michael, Jose Moreira, Doron Shiloach, Robert Wisniewski: Scale-up x Scale-out: A Case Study using Nutch/Lucene. Parallel and Distributed Processing Symposium (IPDPS), 2007. [pdf]

Higher-Level Parallel Programming Models

  1. John Nickolls, Ian Buck, Michael Garland, Kevin Skadron: Scalable Parallel Programming with CUDA, ACM QUEUE March/April 2008 [pdf]
  2. James Reinders: Intel Threading Building Blocks. O’Reilly, 2007.
    This book is available online.
    Arch Robison gave a keynote talk about Generic Parallel Algorithms in Intel® Threading Building Blocks at LCPC 2008. [pdf]
    Intel TBB Website [www].
  3. Philipp Haller and Martin Odersky: Scala Actors: Unifying thread-based and event-based programming, Theoretical Computer Science, Volume 410, Issues 2-3, February 2009. [pdf]
  4. Jeffrey Dean, Sanjay Ghemawat: MapReduce: Simplified Data Processing on Large Clusters, OSDI'04: Sixth Symposium on Operating System Design and Implementation, San Francisco, CA, December, 2004. [www]
    A brief video interview with the authors is available. [www]

Last Change: November 17, 2010.