everything.study
EN.601.420

Parallel Programming & Performance Engineering

3 Credits.

This course guides the learner to write efficient software with focus on exploiting hardware parallelism and efficient memory usage. Modern microprocessors are remarkably complex and implement parallelism at many levels, including instruction level, vectorization, pipelining, multicore, and memory. Simple or naïve implementations realize only a fraction of the performance available. Exploiting the capabilities or processors require an understanding of algorithms, computer architecture, systems (compilers, PL, OS) and how they interact. The course programs mostly in C/C++, because most performance-oriented software is written in these languages. It will also touch on at parallel programming in Python and CUDA for GPUs. Familiarity with Python required.

Sources