+The goal of this course is to provide a deep understanding of the fundamental principles and engineering trade-offs involved in designing modern parallel computing systems, as well as to teach how to utilize hardwares and software programming frameworks (such as CUDA, MPI, OpenMP, etc.) for writing high-performance parallel programs. Due to the complexity of parallel computing architecture, this course involves a lot of advanced computer architecture and network communication content, the knowledge is quite low-level and hardcore. Meanwhile, the five assignments develop your understanding and application of upper-level abstraction through software, specifically by analyzing bottlenecks in parallel programs, writing multi-threaded synchronization code, learning CUDA programming, OpenMP programming, and the popular Spark framework, etc. It really combines theory and practice perfectly.
0 commit comments