CS 4331: Introduction to Parallel Programming
|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 ping-pong code||(Code updated with a nonblocking message passing example.)|
|Ping pong output:||blocking and nonblocking message passing measurements.|
A parallel program uses more than one processor (from 2 to 216) 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 so-called 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.
|Prerequisites:||CS 3331, CS 3421 and CS 4321.|
|Office hours:||3-4pm Tuesday and Wednesday, and whenever my door is open, and by appointment|
|Office:||310 Rekhi Hall|