Prerequisites: CS 302
Syllabus
CS 473: Parallel Computing
|
Meeting Times |
Lect: 12:00 - 12:50 MWF, HB 112 Labs: 12:00 - 12:50 Tu, HB 207 |
|
Instructor |
Dr. Razvan Andonie, HB 219-B, Office hours |
| TA | Jonathan Thorsvik |
|
Text |
Michael J. Quinn, Parallel Programming in C with MPI and OpenMP, McGraw Hill, 2004 |
|
|
Motivations for parallel processing |
|
|
Parallel computer architectures |
|
|
Parallel algorithm design and Foster's methodology |
|
|
Message passing programming with MPI |
|
|
Performance analysis |
|
|
Fundamental algorithms: backtracking, branch-and-bound, divide and conquer, sorting, searching |
|
|
Applications: data mining, artificial intelligence, computational intelligence, scientific computing |
|
|
Shared-memory programming with OpenMP |
Student Learning Outcomes
On completion of this course, the student will have:
|
|
Designed and analyzed algorithms that execute efficiently on parallel computers. |
|
|
Applied this knowledge to problems in a range of application areas. |
|
|
Implemented parallel programs in C, using the Message Passing Interface (MPI) and its MPICH2 implementation. |
|
|
Understand the shared-memory model and using OpenMP. |
The slides for lectures, additional materials (including several MPI examples from Quinn's textbook), and the projects can be found in the shared directory.
Exams (2 - 25% each)
50%
Lab Projects 1-3 (10% each) 30% Final Project (Paper & Presentation)
20%
HWs will be not graded. Lab Project 4 is extra credit, 5% of the final grade.
95 - 100 A
90 - 94 A-
87 - 89 B+
83 - 86 B
80 - 82 B-
77 - 79 C+
73 - 76 C
70 - 72 C-
67 - 69 D+
63 - 66 D
60 - 62 D-
0 - 59 F
If you must miss an exam, contact your instructor prior to the exam to schedule a time to make it up. Late submission of assignments is generally not accepted. No partial credit for late assignments will be offered.
|
|
Have a look at the MPICH2 Installer's Guide. If you have trouble installing or using MPICH2, first see the FAQ page. If you have trouble with the Windows version of MPICH2, see the tips for installing and running MPICH2 on Windows XP, or see the MPICH2 Windows Development Guide. |
|
|
Introduction to MPI, is an online course created by the PACS Training Group. It can be downloaded and printed. |
|
|
|
The OpenMP C and C++ application program interface lets you write applications that effectively use multiple processors. Visual C++ supports the OpenMP 2.0 standard. If you want to program in OpenMP under Windows, read this tutorial from Microsoft: OpenMP and C++. More information about OpenMP can be found at http://www.openmp.org/blog/resources/#Shareware/Freeware and http://www.llnl.gov/computing/tutorials/openMP/.
|
|
Designing and Building Parallel Programs, an online book by Ian Foster, Addison-Wesley, 1995. |
|
|
Nan's Parallel Computing Page. This list contains links related to parallel computing. |
|
|
Top 500 Supercomputer sites. |
|
|
The Landscape of Parallel Computing Research: A View from Berkeley. A very important technical report. |
|
|
Wilkinson B. and M. Allen, Parallel Programming: Techniques and Applications Using Networked Workstations and Parallel Computers, Prentice Hall, 2005. |
|
|
Gropp, W., E. Lusk, and A. Skjellum, Using MPI: Portable Parallel Programming with the Message-Passing Interface, MIT Press, 1999. |
|
|
Grama, A., A. Gupta, G. Karypis, and V. Kumar, Introduction to Parallel Computing, 2nd ed., Addison-Wesley, 2003. |
|
|
Ghosh, S. Distributed Systems - An Algorithmic Approach, Chapman & Hall/CRC, 2007. An excellent textbook on distributed systems, with an emphasis on algorithms. |
|
|
Chapman, B., G. Jost, and R. V. D. Pas, Using OpenMP Portable Shared Memory Parallel Programming, MIT Press, 2008. |
Final Project Guidelines
The final project is to be completed in groups of two, or individually. The project should contain the problem description, the code, the benchmarking, and a discussion. For a good presentation, read Quinn's effective presentation techniques guidelines.
Grading criteria: 10% Difficulty of the project, 50% Submitted document, 40% Presentation. Projects:Ex. 5.11 (Harmonic Progression in OpenMP) - Sorin Bucse Ex. 5.11 (Harmonic Progression in MPI) - Christopher Stearns Ex. 4.12 (Numerical Integration in MPI) - Abraham Dybvig Ex. 4.10 (Student ID Shop in MPI) - Jason White Ex. 6.12 (Sunlight on Map in OpenMP) - Michael Wilson
|
Date |
Topics | Reading | Assignments |
| 9/19 |
Introduction |
|
|
| 9/21 | Motivation and History | Ch. 1 | |
| 9/24 | Parallel Algorithm Design | 3.1-3.3 | |
| 9/26 | Parallel Algorithm Design: Boundary Value Problem | 3.4 | |
| 9/28 | Parallel Algorithm Design: Finding the Maximum | 3.5 | HW 1: Ex. 3.12 |
| 10/1 | Message-Passing Programming; Discuss HW 1 | Ch. 4 |
HW 1 due
HW 2: Ex. 3.13 |
| 10/3 | Message-Passing Programming; Discuss HW 2 | Ch. 4 |
HW 2 due
HW 3: Ex. 3.14 |
| 10/5 | The Sieve of Eratosthenes; Discuss HW 3 | Ch. 5 |
HW 3 due
HW 4: Ex. 3.15 |
| 10/8 | The Sieve of Eratosthenes; Discuss HW 4 | Ch. 5 | HW 4 due |
| 10/10 | Floyd's Algorithm | Ch. 6 | HW 5: Ex. 6.1 |
| 10/12 |
Discuss HW 5
Floyd's Algorithm |
Ch. 6 | HW 5 due |
| 10/15 | Performance Analysis | Ch. 7 | |
| 10/17 | Exam I | ||
| 10/19 | Matrix-Vector Multiplication | Ch. 8 | |
| 10/22 | Matrix-Vector Multiplication | Ch. 8 | |
| 10/24 | Document Classification | Ch. 9 | |
| 10/26 | Document Classification, Discuss Final Projects | Ch. 9 | |
| 10/29 | Combinatorial Search: Divide and Conquer, Backtracking | Ch. 16 | Final Project Proposal due |
| 10/31 | Combinatorial Search: Branch and Bound | Ch. 16 | |
| 11/2 | class canceled | ||
| 11/5 | Combinatorial Search: Game Trees, Alpha-Beta Search | Ch. 16 | |
| 11/7 | Sorting: Quicksort | 14.1-14.3 | |
| 11/9 | Sorting: Hyperquicksort, Parallel Sorting by Regular Sampling | 14.4-14.6 | |
| 11/12 | Veterans day | ||
| 11/14 | Shared-Memory Programming with OpenMP | Ch. 17 | |
| 11/16 | Shared-Memory Programming with OpenMP | Ch. 17 | |
| 11/19 | Q & A for Exam II, All Questions Will Be Answered | ||
| 11/21 | Thanksgiving | ||
| 11/23 | Thanksgiving | ||
| 11/26 | Exam II | ||
| 11/28 | Presentations 1: Numerical Integration (MPI) - Abraham Dybvig Sunlight on Map (OpenMP) - Michael Wilson | ||
| 11/30 |
Presentations 2: Harmonic Progression (OpenMP) - Sorin Bucse Harmonic Progression (MPI) - Christopher Stearns Student ID Shop (MPI) - Jason White |
||
| 12/7 | Presentations 3: 12:00 - 02:00 |
|
Date |
Topic |
Item Due |
| 9/25 | Setup | |
| 10/2 | Project 0 (on Neve-cs473) | |
| 10/9 | Project 1: Ex. 4.4. Use program SATI.c on Neve-cs473 | Project 0 due |
| 10/16 | Project 2: Ex. 4.8 | Project 1 due |
| 10/23 | Project 3: Ex 6.11 (a, c). Use program Sieve.c on Neve-cs473 | Project 2 due |
| 10/30 | Project 4 (on Neve-cs473) as extra credit, 5% of the final grade | Project 3 due |
| 11/6 | Project 4 | Project 4 due |
| 11/13 | Final Project | |
| 11/20 | Final Project | |
| 11/27 | Final Project |
All work turned in for credit, including exams and all components of the project, are to be the work of the student whose name is on the exam or project. For all project components, the student can receive assistance from individuals other than the instructor only to ascertain the cause of errors. Thus you can get help if you need it to figure out why something doesn't work. You just can't get help from anyone, other than the instructor or TA, to figure out how to make something work. All solutions turned in for credit are to be your individual work and should demonstrate your problem solving skills, not someone else's. The following text should appear on all assignments: " I pledge that I have neither given nor received help from anyone other than the instructor for all program components included here."
Help each other with the lab assignments. You may work together, but do the work on separate computers. The point is to understand the material enough so that you to go on and complete that week's programming assignment on your own.
Help each other understand and debug the programming assignments. However, you should write the code for your programs yourself. Writing it yourself is the only way you will learn. Do not work together to solve the programming assignments to the extent that two programs are essentially the same solution.
All program solutions turned in for credit are to be your individual work and should demonstrate your problem solving skills, not someone else's. Since everyone is writing their own code, no two programs should be the same or so similar that I could convert one to the other by a simple mechanical transformation (e.g. changing variable names and comments). I consider this plagiarism and a violation of academic code. First violation: Students must meet with the instructor. In most cases, the grade will be split between the authors of the copied programs. Second violation: Students will receive no credit for the assignment. An incident letter will be placed on file in the Computer Science Department and the matter referred to the Computer Science Department Chair.
Class
attendance is expected and recorded.
Students with disabilities who wish to set up academic adjustment in this class should give me a copy of their "Confirmation of Eligibility for Academic Adjustment" from the Disability Support Services Office as soon as possible so we can discuss how the approved adjustment will be implemented in this class. Students without this form should contact the Disability Support Services Office, Buillon 205 or dssrecept@cwu.edu or 963-2171.
The schedule
and procedures for this course are subject to change. It is the student's
responsibility to learn of and adjust to changes.