CSE 590 (#50569): Topics in Computer Science (Supercomputing), Spring 2012
Lecture Time and Location. TuTh 5:20 pm - 6:40 pm, Earth & Space 069, West Campus
Instructor. Rezaul A. Chowdhury (rezaul{at}cs{dot}stonybrook{dot}edu)
Office Hours. TuTh 12:00 pm - 1:30 pm, 1421 Computer Science Building
Grader. Gaurav Menghani
Course Description. We will explore algorithms and techniques for programming on various state-of-the-art parallel computing platforms. The course will be split into two parts.
The first part will consist of 10-15 lectures with 2-3 lectures devoted to each of the following five topics.
- Shared-memory parallelism (and Cilk)
- Distributed-memory parallelism (and MPI)
- GPGPU computing (and CUDA)
- MapReduce and Hadoop
- Cloud computing
During the the second part of the course students will present interesting research papers in areas covered in the class as well as on cache-efficient and energy-efficient computations.
The course will have a significant programming component in the form of programming assignments and a final group project.
This course is supported by educational grants from AWS (Amazon Web Services) and XSEDE (Extreme Science and Engineering Discovery Environment). We will use the computing environments provided by these two services for all homeworks and projects.
Prerequisites. Background in algorithms analysis (e.g., CSE 373 or CSE 548) and programming languages (e.g., C/C++) is required (or consent of instructor). Computer architecture background (e.g., CSE 320 or CSE 502) will be helpful, but not essential.
Recommended Texts. No specific textbook will be followed. However, here is a list of some useful books.
- Ananth Grama, George Karypis, Vipin Kumar, and Anshul Gupta. Introduction to Parallel Computing (2nd Edition), Addison Wesley, 2003.
- Maurice Herlihy and Nir Shavit. The Art of Multiprocessor Programming (1st Edition), Morgan Kaufmann, 2008.
- Peter Pacheco. Parallel Programming with MPI (1st Edition), Morgan Kaufmann, 1996.
- David Kirk and Wen-mei Hwu. Programming Massively Parallel Processors: A Hands-on Approach (1st Edition), Morgan Kaufmann, 2010.
- Jimmy Lin and Chris Dyer. Data-Intensive Text Processing with MapReduce, Morgan and Claypool Publishers, 2010.
- Tom White. Hadoop: The Definitive Guide (2nd Edition), Yahoo Press, 2010.
- Toby Velte, Anthony Velte, and Robert Elsenpeter. Cloud Computing, A Practical Approach (1st Edition), McGraw-Hill Osborne Media, 2009.
Course Requirements. During the first part of the course there will be 4 programming assignments. During the second part each student will present one paper (at most 1 hour), write a report on a paper presented by another student, and complete a group project. The group project will also include three group presentations: one 10-15 min project proposal at the start of the 6th week of classes, one 10-15 min project progress report presentation after spring break, and one 25-30 min project presentation towards the end of the course. The course grade will be based on the following.
- Programming assignments: 15% (the lowest score will be dropped, and the remaining three will be worth 5% each)
- Paper presentation: 25%
- Project: 40%
- Paper report: 10%
- Class paricipation and attendance: 10%
Blackboard. Some course documents (e.g., homework assignments) will be available through Blackboard.
The following documents have already been uploaded.
- Apr 20, 2012: HW4
- Apr 1, 2012: HW3
- Feb 19, 2012: HW2
- Feb 7, 2012: HW1
- Jan 31, 2012: Project ideas
- Jan 31, 2012: List of papers for presentation
Programming Resources.
- Shared-memory parallelism
- Distributed-memory parallelism
- GPGPU programming
- MapReduce
- Cloud computing
Lecture Schedule.
Date |
Topic |
Notes / Reading Materials |
Tue, Jan 24 |
Introduction |
- |
Thu, Jan 26 |
Analytical Modeling and Limits of Parallelism |
- Chapter 5 (Analytical Modeling of Parallel Programs), Introduction to Parallel Computing (2nd Edition) by Grama et al.
- Gene Amdahl, “Validity of the Single Processor Approach to
Achieving Large Scale Computing Capabilities”, Reprinted from the proceedings of the Spring Joint Computer Conference, AIFPS vol 30, pp. 483-485, 1967.
- John L. Gustafson, “Reevaluating Amdahl's Law”, Communications of the ACM, 31(5), pp. 532-533, 1988.
|
Tue, Jan 31 |
The Cilk++ Concurrency Platform |
|
Thu, Feb 2 |
Analyzing Multithreaded Algorithms |
- Chapter 27 (Multithreaded Algorithms), Introduction to Algorithms (3rd Edition) by Cormen et al.
- Chapter 4 (Divide-and-Conquer), Introduction to Algorithms (3rd Edition) by Cormen et al.
|
Tue, Feb 7 |
The Message Passing Interface |
- Chapter 6 (Programming Using the Message-Passing Paradigm), Introduction to Parallel Computing (2nd Edition) by Grama et al.
- Chapter 2 (Message-Passing Computing), Parallel Programming (2nd Edition) by Wilkinson & Allen
|
Thu, Feb 9 |
Analyzing Distributed Memory Algorithms |
- Chapter 2 (Parallel Programming Platforms), Section 2.5.1 (Message Passing Costs in Parallel Computers), Introduction to Parallel Computing (2nd Edition) by Grama et al.
- Chapter 4 (Basic Communication Operations), Introduction to Parallel Computing (2nd Edition) by Grama et al.
- Chapter 6 (Programming Using the Message-Passing Paradigm), Introduction to Parallel Computing (2nd Edition) by Grama et al.
|
Tue, Feb 14 Thu, Feb 16 |
GPGPU Computing & CUDA |
|
Tue, Feb 21 Thu, Feb 23 |
MapReduce & Hadoop |
|
Tue, Feb 28 Thu, Mar 1 |
Project Proposals |
- |
Tue, Mar 6 |
Paper Presentation |
- |
Thu, Mar 8 |
Paper Presentation |
- |
Tue, Mar 13 |
Paper Presentation |
- |
Thu, Mar 15 |
Paper Presentation |
- |
Tue, Mar 20 |
Paper Presentation |
- |
Thu, Mar 22 |
Paper Presentation |
- |
Tue, Mar 27 |
Paper Presentation |
- |
Thu, Mar 29 |
Paper Presentation |
- |
Tue, Apr 3 Thu, Apr 5 |
Spring Break |
- |
Tue, Apr 10 Thu, Apr 12 |
Project Progress Reports |
- |
Tue, Apr 17 |
Paper Presentation |
- |
Thu, Apr 19 |
Paper Presentation |
- |
Tue, Apr 24 |
Paper Presentation |
- |
Thu, Apr 26 |
Paper Presentation |
- |
Tue, May 1 |
Paper Presentation |
- |
Thu, May 3 |
Paper Presentation |
- |
Homeworks.
Projects.
- Large Scale RNA Expression Analysis using Hadoop
- Parallel Quicksort for Suffix Array Construction on GPU
- Computing Shortest Paths on the Cloud
- GlueIt: A Hadoop MapReduce Library for Joins
- Information Retrieval using MapReduce
- A MapReduce Library for Solving Graph Problems
- Suffix Array Construction on Hadoop
- Minute Sort ( how much can you sort in less than a minute? )
- Minimum Spanning Trees on a GPU
- Parallel Laser Chess
- Parallel Bottom up Resolution