This is a course in high performance computing. It will include a study of parallel computer architectures as well as the methods used to program these systems.
The course will begin with a study of shared memory systems and associated software, in particular we will look closely at OpenMP. Several applications will be written in C++ and then “parallelized” using OpenMP. Following this we will move onto Cluster programming using MPI, a message passing API that allows multiple computing systems to communicate with each other. The following third of this course will be a study of GPU (Graphic Programming Unit) programming. Here we will study the CUDA system developed at Nvidia and write programs that efficiently utilize the parallel hardware available in these GPU systems.
30% Major exams
15% Homework and classwork
30% Software Project
Attendance will be taken at each class meeting by having students sign a roll sheet. Some of the classes may have an in class exercise that is turned in. If you are not in class you will not get credit for these exercises. A few of the in-class exercise grades will be dropped to allow for a few special circumstances. Often new topics are introduced and the knowledge is necessary for subsequent classes. In other words it is very important that you attend every class and arrive on time.