CS 4331: Introduction to Parallel Programming
Fall 2012
4:054:55am MWF
129 Fisher
Program 3  Due: Monday, Dec. 7 
vibe.c  Sequential source code for Program 3 
inprod.c  Parallel source code for inner product code 
Midterm Exam  In class: Wednesday, Nov. 14 
Program 2  Due: Wednesday, Nov. 7 
Homework 1  Due: Monday, Oct. 15 
Program 1  Due: Monday, Oct. 1 
MPI pingpong code  (Code updated with a nonblocking message passing example.) 
Ping pong output:  blocking and nonblocking message passing measurements. 
Pingpong handout. 
A parallel program uses more than one processor (from 2 to 2^{16}) to solve a single problem. Parallel programs solve problems faster or solve larger problems (or both) than can be solved without the programmer's explicit use of muliple processors. Current examples of such problems include the socalled grand challenge problems. (Contrast this to the concept of distributed processing where many processors are used at the same time but they are used to solve multiple, unrelated problems such as scheduling airline reservations or serving media downloads.) Parallel computing is the only way that many economically and strategically important scientific and engineering problems can be practically solved.
This course shows how to design, write, analyse, debug, and measure the performance of parallel programs. The shared memory and the message passing paradigms will be studied, represented by UPC and MPI, respectively. Other topics include parallel computer architecture, data partitioning strategies, and load balancing. Discrete applications, such as sorting, and numerical applications, such as matrix multiplication, will be treated.
Text (required): 


Prerequisites:  CS 3331, CS 3421 and CS 4321.  
Instructor:  Steve Seidel  
Office hours:  34pm Tuesday and Wednesday, and whenever my door is open, and by appointment  
Office:  310 Rekhi Hall  
Phone:  4872950  
Email:  steve@mtu.edu 