CMSE 890 (005) - Algorithms for Next-Generation Architectures (Fall 2018)
Description: Hardware architectures are constantly changing, and the need to keep up with new paradigms in programming are essential for modern science and engineering. For example, in 2018 two new technologies seem to be competing to corner the market on the road to Exascale supercomputers. These technologies include the newest generation of General Purpose Graphics Processing Units (GPGPUs) and Field Programmable Gate Arrays (FPGA).
This course will look into the pros and cons of these new technologies, and students in the course will investigate their capabilities in order to try to understand how best leverage these new architectures in their own research.
Time: Fridays - 12:40-2:30 p.m. in 1220 Engineering Building
Prerequisites: Comfort programming in C/C++. Parallel programming experience at the level of CMSE 822 is helpful but not explicitly required. Undergraduate students are welcome to enroll!
Major topics covered:
- Architecture of Field-Programmable Gate Arrays (FPGAs) and Graphics Processing Units (GPUs)
- General principles of programming for heterogeneous architectures
- Technologies used for performance-portable programming: OpenMP, OpenACC, OpenCL, Kokkos
- Implementation of widely-used numerical algorithms (sparse and dense matrix operations; finite difference equations; N-body; Fourier transforms; etc.) on FPGAs and GPUs