A brief version of Chapter 7 is included in the Chapter 7 & 8 link below. Itís short; weíll discuss it this week.
Wednesday 2:30-3:20 Allen 503
Parallel programming is different from standard sequential programming: The preferred algorithms are different, the resources being optimized are different, algorithm analysis is different and much more complex, etc. In the past parallel programming was an "enrichment" class, but now because multi-core chips are standard on consumer platforms, parallel programming is essential. As Sutter and Larus wrote in Queue
programs that cannot exploit concurrency will fall off of the performance curve. The free lunch is over.
Fall 590o, which usually treats advanced research topics, will instead teach basic parallel programming. The main resource for the class is a draft of a textbook I'm writing with Calvin Lin (UT Austin prof and UW CSE alum) on parallel programming. The class will be largely independent study using the book; students will write and run parallel programs in the standard languages; students will be asked to anonymously critique the book.
The Book: Fundamentals of Parallel Programming, Calvin Lin and Larry Snyder, Addison Wesley, DRAFT
The Deal: Students will learn the basics of parallel programming and practical parallel algorithm design; the authors will receive the thoughtful feedback of the students. An anonymous email link has been set up for this purpose. Please use the link whenever anything comes to your notice. Your feedback is most useful if
<![if !supportLists]>(a) <![endif]>It ignores, typos, poor grammar, formatting bugs, etc. Editors will sweep the document.
<![if !supportLists]>(b) <![endif]>It focuses on the clarity of the explanations, the accuracy of the diagrams and code segments, organization, topic selection, etc.
<![if !supportLists]>(a) <![endif]>Refers to specific pages in the document: Fundamentals
Your comments cannot be acknowledged specifically, of course, itís anonymous! But at the end of the term, all participants who sent one or more critiques (honor system) can add their names to a list to allow the authors to give proper credit and thanks in the Acknowledgments of the published book.†
The Schedule (to be adjusted incrementally):
Week 1: Overview
††††††††††† Prep: Read Sutter and Larus
††††††††††† Resources: Draft Chapters 1 & 2
Week 2: Parallel Model of Computation
††††††††††† Prep: Read Chapters 1 & 2
††††††††††† Resources: Draft Chapters 3 & 4
Week 3: Terminology and Concepts
††††††††††† Prep: Read Chapter 3
Week 4: Algorithms & Techniques 1
††††††††††† Prep: Read Chapter 4
††††††††††† Resources: Draft Chapters 5 & 6
Week 5: Algorithms & Techniques 2
††††††††††† Prep: Read Chapter 5
Week 6: Threading
††††††††††† Prep: Read Chapter 6
††††††††††† Resources Draft Chapters 7 & 8
Week 7: Message Passing
††††††††††† Prep: Read Chapter 7
Week 8: ZPL
††††††††††† Prep: Read Chapter 8
Week ~: Thanksgiving, no class
Week 9: Realities of Achieving Performance
Week A: Textbook Critique and Discussion
1) For the threading assignment, you are given an annotated radix sort program.† The task is to create a multithreaded version of this program. The annotations show where threading code must be added to make the program multithreaded.
2) For the ZPL assignment, there are two problems.† You can grab a copy of the software from the ZPL page, and for purposes of working through the assignment, it suffices to use the sequential version.