CS 294-61, Fall 2010
Highly Productive Parallel Programming
Armando Fox & David Patterson
Required Background
- Experience programming in an efficiency-level language, such as C or C++
- Experience in at least one scripting language, such as Python or Ruby
- Taken a standard undergraduate compiler course (or equivalent knowledge)
Administrative Info
- 3 units, letter graded
- CCN: 27163
- Tues & Thurs 2-3:30pm, 320 Soda
Related Courses
Course Description:
During the first part of the course we will read papers and invite guest lectures on related topics. These lectures will be highly interactive and followed by Q&A. The goal is to expose students to the different approaches now used for both efficiency and productivity parallel programming. There will be some programming assignments to give experience in both efficiency and productivity languages.
A key element of the Par Lab's approach to parallelism is the use of parallel programming patterns. During the second part of the course, students will select a project that focuses on taking implementation techniques for a particular pattern in an efficiency language (such as C) and adapting them for use in a highly-productive language (such as Python). We have existing efficiency code strategies for a variety of patterns & platforms. The project will investigate how difficult it is for someone other than the author of that code to deliver it to productivity-level programmers. We have some interesting ideas, tools, and prototypes for doing this using an approach called SEJITS (Selective Embedded Just-In-Time Specialization), which you are encouraged to use as a starting point. Some good questions to investigate include:
- To what extent can you capture efficient implementation strategies in a platform-independent way? Will a new implementation of a given pattern be needed for each new hardware platform?
- When two or more patterns have to be composed, and the optimal strategy for the composition is not simply the composition of the optimal strategies, is there a way to provide this to the productivity programmer without separately "co-tuning" every pair of patterns together?
- How difficult is it to turn existing efficiency code into a specializer available to a productivity language?
- What extra facilities will be needed for debugging and checking the correctness of specialized code?
Projects will culminate in presentations or a poster session on Tuesday, November 30, followed by a written report due Friday, December 3. The written report should be approximately the length and style of a workshop paper (5-6 pages of two column format text).
Outline of homework assignments (details coming soon)
- Write efficiency code in a language of your choice for a dwarf
- Now write it in Python
- Package your original HW#1 as a specializer using the API’s you defined for HW#2; we will give you SEJITS infrastructure pieces that help
Comments (0)
You don't have permission to comment on this page.