High Performance Numerical Computing
Summer Workshop, 2019
DESCRIPTION:
This 10-week summer bootcamp will provide an introduction to a
variety of topics, tools, and techniques for high performance
numerical computing, such OpenMP, MPI and computational
machine leaning. Participants will experience various aspects of
common computational workflows. The focus is not on a specific
programming language but to provide exposure to a range of topics
to gain skills necessary for being a successful user of modern
computational tools. The workshop will be held in 1-hour sessions
twice a week, with some in-class hands-on exercises, scheduled for
Tues. and Thurs. 11am-12pm, in KUPF 118, starting from June
4. The workshop will be taught by Prof. Afkhami from the
Department of Mathematical Sciences, and will include the following
topics:
- Week 1: Getting started with NJIT HPC systems Intro to the bash
command line Linux tutorial
- Week 2: Intro to version control with GIT and GITHUB Intro to
parallel computing
- Week 3: Intro to Open MP: Parallel matrix and vector operations
Advanced Open MP: Parallelizing iterative linear solvers with Open
MP
- Week 4: Performance metrics Examples: 2D Poisson equation;
Multigrid methods; Fast Fourier Transform (FFT)
- Week 5: Introduction to Open MPI: Communication and
synchronization
- Week 6: Advanced Open MPI: Domain decomposition; Load balancing
- Week 7: Examples: Parallelizing iterative linear solvers with Open
MPI; MPI FFT
- Week 8: The Machine Learning landscape
- Week 9: Widely-used Machine Learning algorithms Software libraries:
TensorFlow
- Week 10: Machine learning applied to Computational Fluid Dynamics
Lecture Notes
- Introduction
- Shell Basics
- Shell Examples
- Using the Clusters
- Introduction to OpenMP
- Parallel Programming with OpenMP - Part 1
- Parallel Programming with OpenMP - Part 2
- Introduction to Version Control
- Introduction to MPI
- Parallel Programming with MPI - Part 1
- Parallel Programming with MPI - Part 2
- Parallel Programming with MPI - Part 3
- Hybrid Parallel Programming with OpenMP and MPI
Exercises
- Exercise 1, The Unix Shell
- Exercise 2, Getting Started With HPC Systems
- Exercise 3, OpenMP Getting Started
- Exercise 4, OpenMP work-sharing, parallel loop, parallel loop reduction
- Exercise 5, OpenMP Matrix Multiplication
- Exercise 6, Open MPI Send and Receive
- Exercise 7, Open MPI Numerical Integration, Array Decomposition,
Matrix Multiplication
- Exercise 8, Open MPI Non-Blocking Send/Receive
- Exercise 9, Open MPI Collective Communications, Numerical PI
computation, Matrix Multiplication