PARALLEL COMPUTING FOR ENGINEERS
Modern engineering is increasingly relying on numerical software applications and benefits from fast turnaround time enabled by multi-core processors. From smart phones to flagship supercomputers, parallelism has become pervasive. This class introduces students to parallel scientific computing with compiled languages. Students will develop a basic understanding of computer architecture, memory hierarchy, number representations and computer arithmetic. Students will become proficient in modern software environment of supercomputers, working with large scientific software and using sophisticated external libraries to solve technical problems. Students will learn Flynn's taxonomy for parallel computers and develop parallel programs using the message passing interface (MPI) library for distributed-memory parallelism, OpenACC for computing with graphics processing units (GPU) and shared memory parallelism with OpenMP. Students will learn common data formats to store and visualize large data. Class assignments and projects will be derived from linear algebra, partial differential equations and numerical analysis.