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, multicorebased 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 0072822562 
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, 2^{nd} Ed., Addison Wesley, 2003. 
Goals: 
Provide a handson 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: 

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: MessagePassing 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), CoArray Fortran (CAF), X10 b. High Level Languages (Matlab and Phython on parallel computers) 19.Advanced MPI/MPI2 (optional): a. Parallel I/O b. Onesided data transfers c. Process creation 20. Student presentations on a programming assignments in Fortran90/95 or C/C++ with MPI on Linux clusters 
Grading 
