Computational Physics: Computing for Petascale Systems

Instructors:

Juana Moreno (LSU, moreno@lsu.edu )

Description:

The study of high performance computing (HPC) and the techniques used in designing and implementing computationally intensive applications on HPC systems. High performance systems including traditional parallel supercomputers, multicore-based Linux clusters, and hardware accelerators (such as GPUs and FPGAs) will be discussed. The course will focus on parallelization and memory access optimization for computationally intensive applications in science and engineering.

Textbook:

Michael J. Quinn, Parallel Programming in C with MPI and OpenMP, McGrawHill Higher Edu., 2004, ISBN 0-07-282256-2

References:

Jack Dongarra, Ian Foster, Geoffrey Fox, William Gropp, Ken Kennedy, Linda Torczon, Andy White, Soucebook of Parallel Computing, Morgan Kaufmann/Elsevier, 2003. Gramma, Gupta, Karypis, and Kumar, Introduction to Parallel Computing, 2nd Ed., Addison Wesley, 2003.

Goals:

Provide a hands-on course for computational science and engineering students to explore issues relating to application performance, parallel computing and programming techniques for computationally intensive applications.

Prereqs by Topic:

  1. Computer Programming (Fortan, C, Java or the like)

  2. Linear Algebra and/or Numerical Analysis

Topics:

1. Introduction

2. Parallel Computer Architectures(Quinn Ch. 2)

3. Parallel Programming Design (Quinn Ch. 3)

4. Introduction to using Ohio Supercomputer Center Glenn (OSC tutorial handouts)

5.MPI: Message-Passing Interface (Quinn Ch. 4, OSC tutorial handouts)

6. Examples and more MPI: Sieve of Eratosthenes (Quinn Ch. 5), Floyd's Algorithm (Quinn Ch. 6)

7. Parallel Performance Analysis/Metrics (Quinn Ch. 7)

8.Dense Linear Algebra in Parallel (Quinn Ch. 8, Ch. 11)

9. Linear Algebra Libraries (Dongarra's HPC course: lecture 11)

10. Debugging (Dongarra Ch. 15, Quinn Appendix C)

11.Profiling and Performance Measurement (Dongarra Ch. 15)

12.Performance Tuning (OSC tutorial slides)

13. OpenMP (Quinn Ch. 17)

14. Hybrid Parallel with MPI and OpenMP (Quinn Ch. 18)

15.Monte Carlo Methods (Quinn Ch. 10, Numerical Recipes (in C or Fortran), Chapter 6 of Introduction to Modern Statistical Mechanics by D. Chandler, SPRNG library)

16. Fast Fourier Transform FFT (Quinn Ch. 15, FFTW library)

17. GPGPUs & CUDA programming for NVIDIA GPUs

18. Other Programming Languages (time permitting):

a) Programmable Global Address Space (PGAS) Languages: Unified Parallel C (UPC), Co-Array Fortran (CAF), X10

b. High Level Languages (Matlab and Phython on parallel computers)

19.Advanced MPI/MPI2 (optional):

a. Parallel I/O

b. One-sided data transfers

c. Process creation

20. Student presentations on a programming assignments in Fortran90/95 or C/C++ with MPI on Linux clusters

Grading

  1. Homework combining pen&pencil and programming assignments (5-7). MPI programming, OpenMP, performance measuremen. Programming assignments may be done in groups of two: 50% of final grade

  2. Final project. Small research project in groups of two: 25% of final grade

  3. Midterm. Pen&pencil, pseudocode questions: 15% of final grade

  4. Participation. Physical and virtual class. Class discussion forums: 10% of final grade