Lectures: 2 sessions / week, 1.5 hours / session
This course is an advanced interdisciplinary introduction to applied parallel computing on modern supercomputers. It has a hands-on emphasis on understanding the realities and myths of what is possible on the world's fastest machines.
Numerical topics include: dense and sparse linear algebra, N-body problems, multigrid, fast-multipole, wavelets and Fourier transforms. Geometrical topics include partitioning and mesh generation. Other topics include: applications oriented architecture, understanding parallel programming paradigms, MPI, data parallel systems, Star-P for parallel Python and parallel MATLAB®, graphics processors, virtualization, caches and vector processors.
One emphasis for this course will be VHLLs or Very High Level Languages for parallel computing. This includes the Julia programming language. Julia is a high-level, high-performance dynamic language for technical computing, with syntax that is familiar to users of other technical computing environments. It provides a sophisticated compiler, distributed parallel execution, numerical accuracy, and an extensive mathematical function library.
There is no textbook for this course. A list of links to suggested readings and videos can be found in the related resources section.
There will be two homework assignments and one project that will take roughly one half of the semester. You will need to hand in progress reports, a midterm, and make final presentation. The midterm is to report on your progress and is an opportunity for real feedback. The final project can be presented at the end.