Professor: | Quinn Snell |
Office: | 2218 TMCB |
Office Hours: | ??? |
Phone: | 422-5098 |
Email: | snell@cs.byu.edu |
TA: | |
Office: | |
Phone: | |
Email: |
Text:
Introduction to Parallel Computing by Kumar, Grama, Gupta, and Karypis
Designing and Building Parallel Programs by Ian Foster
Course Description:
Parallel processing is seen by most experts as the most likely way to achieve continued improvements in computing speed during the next decade. Most microprocessor vendors have included multiprocessor support in their current generation chip design and many PC vendors are supporting multiple processors on their system boards. Parallel processing is distinguished from distributed processing in that it utilizes many processors in solving a single instance of a problem. In order to solve this single problem in an efficient manner, significant attention must be paid to keeping all processors active during the execution of a program.
Parallel programming requires many skills that are not necessary in developing software for sequential machines. Different algorithms must be used in order to achieve efficient execution. More insight into the machine architecture is also required to utilize the power of current parallel machines. Finally, experience in writing parallel applications is indispensable for software engineers who are going to enter this dynamic field.
This class will focus on developing the skills required for parallel software developers and system architects. The first part of the class will examine concurrent architectures, topologies and machine models. The last part of the class will be spent in Laboratory experiences in developing algorithms and applications for several problems that can efficiently utilize concurrent processing.
Prerequisites:
CS 312, 252, 380, 345.
Grade Breakdown:
Homework and Laboratory Assignments | 35 % |
Quizzes | 5 % |
Midterm | 20 % |
Final | 15 % |
Project | 25 % |
Grading:
A 90-100% C 65-80% B 80-90% D 55-65%Check out your grades here
Homework and Laboratory Exercises:
Clusters of workstations are becoming increasingly popular as a parallel hardware platform. We will be using the unix machines in the open labs, and the Fulton Supercomputing Center facilities for our laboratory experiences. We will use the Message Passing Interface (MPI) libraries and high level parallel compiler directives for the majority of the programming exercises.
Much of the material in this class is theoretical so there will be a significant number of problems assigned from the book. An understanding of the theoretical background is fundamental to effective utilization of parallel machines.
Homework is due in class on the day noted in the schedule.
Quizzes:
Reading is fundamental to learning (-: even the TV commercials tell you this :-). I will expect you to thoroughly read each of the reading assignments before you come to class. This will promote discussion and learning. To help you remember, an online quiz will be given with each reading assignment.
Quizzes are due one hour before class on the day noted in the schedule. If you don't submit it in time, you will get a zero. Quizzes will not be accepted late, and there will be no make-up quizzes.
Project:
Each student will be required to participate in a class project that is related to parallel processing. In addition, each student will perform a literature search with respect to their chosen project. The project will be presented to the class and the instructor. It is intended that this project be a meaningful experience for the students. In order to provide this experience it is essential that the student begin early!
Each semester, a number of projects are selected for the class to work on. Each student is required to participate in one of the projects. The end result of the projects is a paper of publishable quality. The project list and descriptions can be found here.
Check out the Projects from Fall 1998
Check out the Projects from Fall 1999
Honor Code:
I expect you to follow the honor code including the dress and grooming standards. You can work together in groups on the homework and laboratories from a conceptual perspective, but the answers that you give and the programs that you write should be your own, not copies of other students work. Your project report should focus on your own ideas and things you have learned from your experimentation. It should not be a summary of other researchers ideas. You should carefully reference other authors ideas and make sure that you quote their words and reference their ideas. The BYU class schedule includes a detailed description of fair use of other's ideas.
Cheating will NOT be tolerated. Any assignment turned in that is not your work will be given a negative full value score. Any cases of multiple offense or cheating on a test or the project will result in failure of the class.
Further Information:
"Development of such a machine (a teraflop computer) is considered by some to be in the same category of importance as landing a person on the moon. It's a major step toward the larger challenge of virtual testing for nuclear weapons and other similarly complex problems."
-- Gil Weigand, deputy for computing and manufacturing programs DOE