High Performance Computing
|Title||High Performance Computing (51087)|
|Instructor||Ronald Rahaman (email@example.com)|
In this course, we will focus on compute-intensive (rather than data-intensive) parallel programming, representative of numerical applications. Computer architecture and systems will be a pervasive theme, and we will discuss how parallel APIs map to the underlying hardware.
We will implement and optimize C/C++ applications on large-scale, multicore CPU and GPU compute clusters. We learn widely-used parallel programming APIs (OpenMP, CUDA, and MPI) and use them to solve problems in linear algebra, Monte Carlo simulations, discretized partial differential equations, and machine learning.
The majority of coding assignments can be completed in either C or C++. Certain applications will require coding portions in pure C; however, in these cases, we will cover the requisite information for those with previous exposure to only C++. Previous or concurrent courses in systems and architecture can be helpful, but no prerequisite knowledge of systems/architectures is assumed.
The graded coursework will consist of 6 out-of-class, individually-completed coding projects. Most will be one week, but the final assignments will be larger two-week projects.
There will also be brief conceptual quizzes, which will be discussed in class and counted as a completion grade.
MPCS 51040 - C Programming or MPCS 51100 Advanced Programming or instructor consent.
Familiarity with C or C++
Friday 5:20pm - 7:20pm