COSC 6374 - Parallel Computations
Single thread performance has stagnated for some time due to the increasing cost of energy consumption and heat dissipation. Computers of all sizes, from the fastest supercomputers to tackle the most challenging problems, to personal computers and mobile divices have resorted to multi-threading, networked clustering, and accelerators such GPUs to improve performance. Parallel computing thus are increasingly important in making efficient use of today's computer systems, which are all parallel computers.
This course starts by introducing parallel computer architectures, parallel computing principles, programming models, and technologies (MPI, OpenMP, pthreads, CUDA). The second part explores using parallel computing for several key computational kernels (linear algebra operations, simulations, graphs, FFT etc) which are workhorses for computational sciences and data sciences. The course will consist of lectures, readings, and programming projects.