T36: Concurrent Object-Oriented Programming for Modern Architectures
Monday, Oct 23, from 13:30 to 17:00, E142
Two major trends are converging to reshape the landscape of concurrent object-oriented programming languages. First, trends in modern architectures (multi-core, accelerators, high performance clusters such as Blue Gene) are making concurrency and distribution inescapable for large classes of OO programmers. Second, experience with first-generation concurrent OO languages (e.g. Java threads and synchronization) have revealed several drawbacks of unstructured threads with lock-based synchronization. X10 is a second generation OO language designed to address both programmer productivity and parallel performance for modern architectures. It extends sequential Java with a handful of constructs for concurrency and distribution: a clustered address space (with global data-structures) to deal with distribution; lightweight asynchrony to deal with massive parallelism; recursive fork-join parallelism for structured concurrency; termination detection for sequencing, and atomic blocks for mutual exclusion. The tutorial illustrate how common design patterns for concurrency and distribution can be naturally expressed in X10 (wait-free algorithms, data-flow synchronization, streaming parallelism, co-processor parallelism, hierarchical task-parallelism and phased computations). It shows design patterns for establishing that programs are determinate and/or deadlock-free. Examples will be drawn from high-performance computing and middleware (transactions, event-driven computing), and demonstrated on the X10 reference implementation which is built atop the Java Concurrency Utilities.
Intermediate: Some familiarity with modern OO languages such as Java or C#, and with Java concurrency idioms (threads, locks, volatiles, java concurrency utilities).
Goals: After the tutorial, the programmer should be able to write medium-sized applications in X10, and adapt these ideas to write better concurrent Java code, using the Java Concurrency Utilities. S/he will also have a better appreciation for writing structured concurrent code which is easier to reason about. Participants will be encouraged to download the X10 reference implementation from the IBM website and experiment with it prior to and after the tutorial.
Format: Slide-based lecture, with several exercises for the participants. The tutorial will include a demo on how to write and run X10 programs from within Eclipse. Exercises and solutions will be posted on our website. Participants will be invited to subcribe to the x10-users mailing list on our website so that their follow-up questions can be answered even after the tutorial.
Vijay Saraswat, IBM TJ Watson Research Center: Vijay Saraswat joined IBM Research in 2003, after a year as a Professor at Penn State, a couple of years at startups and 13 years at Xerox PARC and AT&T Research. His main interests are in programming languages, constraints, logic and concurrency. At IBM, he leads the work on the design of X10, a modern object-oriented programming language intended for scalable concurrent computing. He also leads the DEEP project, which is developing a programming model for real-time event-based systems, based on combining modern object-oriented languages with Esterel-like synchronous constructs. Over the last twenty years he has lectured at most major universities and research labs in USA and Europe.
Vivek Sarkar, IBM TJ Watson Research Center: Vivek Sarkar is Senior Manager of the Programming Technologies Department in IBM Research, and is a member of the IBM Academy of Technology. He leads the PERCS Programming Model and Tools project which includes work on X10 design and implementation, as well as the Eclipse Parallel Tools Platform. In the past, he has worked on several projects related to implementation of parallel languages including the open source Jikes RVM project on high performance virtual machines, the PTRAN project on automatic parallelization, and the ASTI project for high-level locality optimizations and OpenMP and HPF parallelization. Vivek has lectured internationally on his research, given tutorials at several major conferences (OOPSLA, PLDI, POPL), and taught full-length courses at major universities (MIT, Stanford Summer Institute).