ECE 56300 - Programming Parallel MachinesLecture Hours: 3 Credits: 3
Areas of Specialization(s):
CMPE Special Content Elective
Normally Offered: Spring - odd years
This course will allow students to do parallel computations in a variety of engineering fields and the data sciences by presenting methods and techniques for programming parallel computers, such as multicore and high-end parallel architectures. A short introduction to computer architecture and general parallelization concepts will be presented. Parallel architectures to be considered are shared-memory and distributed-memory multiprocessor systems and accelerators such as Graphics Processing Units (GPUs). Programming paradigms for these machines will be compared, including directive-based (OpenMP), thread-based (Posix threads), message passing (MPI) and a language targeting accelerators. Methodologies for analyzing and improving the performance of parallel programs will be discussed. There will be a class project in which each student develops and tunes a parallel application.
Course Format: class: three lectures per week. In part, the lectures will be held in computer labs, where the students will do hands-on assignments. Exams: One in class written exam and a final written or oral exam. Computer Languages Used: C and some Fortran. Computer facilities Required: For documentation, programming, and implementation experiments, personal computers and several parallel machines will be used. Class Projects Each student will do an application project. An application of the student's choice will be converted to a parallel program and executed on a parallel machine. The project report will document the original and tuned performance for each program section as well as intermediate results of each program tuning step. Important findings of the projects will be presented in class.
Required Text(s): None.
- Research papers and course handouts.
|1||Introduction and Motivation|
|1||Efficiency and Speedup Measures|
|1||Tuning Automatically Parallelized Programs|
|2||Explicit Program Parallelization|
|2||Programming Methodologies and Tools|