1) Project: "Teaching parallel programming as a pattern language on the example of X10" (X10 Innovation Award)
Summary: This project is about an undergraduate (2nd year) class for parallel programming. The course is organized around three fundamental sources of complexity that make parallel programming difficult: (1) the problem domain and algorithmic decomposition; (2) the programming technology and language; (3) the implementation platform (hardware). The course presents and discusses recurring problems and challenges found in each category and documents principal concepts and solution templates to each problem in the form of reusable patterns. This course puts emphasis on code examples and exercises which are based on the programming language X10.
2) Related Project: X10-Tutorial (version 2.1)
Dr. Gordon and Dr. Hudak of the Ohio Supercomputer Center (OSC) will develop an online tutorial and conduct a two-day workshop entitled "Introduction to X10". The tutorial is targeted at novice-to-intermediate parallel programmers who are unfamiliar with the new concepts contained in X10 and who may, in fact, be hindered by “thinking MPI” or “thinking OpenMP” when approaching X10. The tutorial is designed to progressively increase the complexity of the parallel concepts. The first module prepares students to write efficient scientific code in an object-oriented environment (like Java’s) using X10’s points, regions and arrays. The second module provides an introduction to concurrency by describing activities and selected language constructs (notably, async, atomic and finish). The third module introduces the data layout problem by describing multiple places through array distributions. Finally, the students will put activities and places together (using when and at) for structured multithreading applications in the fourth module. The students will use Eclipse PTP and X10DT and all workshop exercises will be conducted using OSC's Glenn cluster. The tutorial and workshop will be publicized through the OSC Ralph Regula School of Computational Science http://www.rrscs.org/ as well as HPC University http://www.hpcuniv.org/ website. The tutorial materials will also be submitted to the HPC University digital library for wider dissemination.
The computer science curriculum at Kassel University includes courses "Parallel Computing 1 to 3", which are elective courses of 3 ECTS each. Parallel Computing 1 and 2 is typically attended by second- or third-year students, Parallel Computing 3 is for master students. Traditionally, the courses teach programming in OpenMP, MPI, and a third system (e.g. Cuda, Java Threads), as well as other parallel computing topics such as basic terms, architectures, algorithms, and performance optimization. Each course includes programming assignments to be solved in teams of two students, which are the basis for grading. Project goal is to redesign the courses such that they use X10 instead of OpenMP and MPI. After this change, more time should be available to spend on principles of parallel programming, performance factors, parallel algorithms, and advanced example programs. English versions of slides and programming assignments will be published.
Dr. Reiss will teach the course Programming Parallel and Distributed Systems course using X10 as a unifying language. The course covers a range of topics, including lightweight threads on multi-core machines, large-scale distribution on clouds, and high-performance parallel computing on supercomputers. X10 will serve as a common language for the course, as it is designed to work well in all these domains. Students will get experience programming multi-core, distributed systems, and supercomputer platforms and will look at real applications in each of these domains.
Dr. Cartwright and Dr. Sarkar of Rice University will create curricular material for a "first programming course" using X10, based on their experience co-teaching COMP 211 (Principles of Program Design, https://wiki.rice.edu/confluence/display/cswiki/211) at Rice in Spring 2010. COMP 211 was the first course on software design and programming methodology offered to freshmen in their second semester. These concepts were taught using a combination of Scheme and Java. The idea behind this proposal is to create a modified version of the COMP 211 lecture material by replacing Scheme and Java by X10, and introducing implicit and explicit parallelism wherever there is a natural fit. COMP 211 is taught with the assumption that an IDE is available to the students (specifically, DrScheme for Scheme and DrJava for Java), so it will also be natural to incorporate the use of X10DT in this material.
This project is to develop courseware for a short course on parallel programming with X10. The courseware could be used for a stand alone short course on parallel programming with X10, or be integrated with other materials, such as MPI and OpenMP, to comprise the courseware for a typical one-semester parallel programming course. It would contain lecture notes, program examples, hands-on-exercises, problem sets with sample solutions and a set of term-project topics including the reference report of the term-project.
Having already taught graduate student course “Methods and applications of parallel computing” for some years, Dr. Shaohua Liu will incorporate X10 into his course in next semester. This course consists of curricular development activities in the area of parallel programming based on the X10 programming language. In this course, graduate students will learn new programming skills that will be useful for programming multi-core or cluster computers. The course will be about methods and applications of parallel computing and parallel programming languages. Dr. Shaohua Liu will give three fourths of the lectures, and the participants will give the remainder. This course could help the students start their new research work in this emerging area, and then cause a "snowball effect" in their future research team, work group and networking communities.
This project consists of two topics: 1) Research on migrating astronomical computing algorithms to X10 on a super computer, and 2) Parallel Computing course development to introduce the X10 programming language. The research on astronomical computing algorithms is based on our long term cooperation with astronomers. We choose two algorithms from our ongoing work which have been parallelized using pthread and MPI. Course development for X10 will be included in our “Parallel Computing” course. We will design an individual unit for X10, including language concepts and related exercises. Two course versions will be released for graduate and undergraduate students respectively.