Spring 2015

ACMS 40212/60212: Advanced Scientific Computing

Class time: MWF 9:25am - 10:15am.

Classroom: Hayes Healy Center 125

Office hours: W 4:00 pm - 5:00pm, HH242

Course Syllabus


MPI


U1010 UNIX for beginners

OpenMP


Textbook

  • Introduction to Parallel Computing, Second Edition has been put on reserve in Math. library. The electronic version is also available online at http://link.library.nd.edu/rplow (please contact Math. librarian for access if there is a problem)
  • Sample code is at /afs/crc.nd.edu/user/z/zxu2/Public/ACMS40212-S12 on crc machine.

    Projects and Homework Assignments
    02/10/2015 Project 1 (Due on 02/20)
    04/10/2015 Project 2 (Due on 04/22)
    TBA TBA
    TBA TBA
    TBA TBA
    8:00am-10:00am, 05/05/2015 Final Project Presentation. (Hayes Healy Center 125)

    Final Projects (subject to change) Final Project Guidelines
    All-pairs Shortest Path Problem (Undergraduate students only)
    Document Classification (Undergraduate students only)
    Monte Carlo Simulation of Buffon's needle problem using GPU (Undergraduate students only) Matlab code of the Monte Carlo Simulation
    Bacterial branching growth using diffusive Fisher equations with a cutoff
    Kinetic Monte Carlo simulation using OpenMP
    Implementing red-black Gauss Seidel to solve 2D Laplace equation on GPUs
    Implementing 2D (explicit) high-order accurate finite difference/volume/element method for time dependent PDEs on GPU or using MPI
    Accelerating numerical solution of Stochastic Differential Equations with CUDA
    Cellular Automata for reaction-diffusion

    Lecture notes
    Lecture 01 Single processor performance
    Lecture 01.1 Pointers (from cplusplus.com), Pointer and Memory (Notes from Stanford) Short notes on C++ , Short Introduction to Makefile
    Additional Reading Software Pipelining of Nested Loops Rixner etal, Memory access scheduling Best practices for scientific computing
    Additional Reading Tips for writing clean code
    Lecture 02 Parallel programming platforms
    Lecture 03 Message-Passing Programming Using MPI (Part 1), (Part 2) Introduction to C/C++ MPI and PBS
    Lecture 04 Principles of Parallel Algorithm Design (part 1) , (part 2), (part 3), (part 4)
    Lecture 05 Parallel Matrix Algorithms (part 1), (part 2), (part 3)
    Lecture 06 Performance Analysis
    Lecture 07 Advanced MPI - process topology
    Lecture 7 GPU Programming
    GPU programming from nvidia developer centers Introduction to GPU Computing , CUDA C Programming Guide , CURAND
    Lecture 08 Fast Linear Solvers (part 1) , (part 2) , (part 3) , (part 4) , (part 5) , (part 6)
    Supplementary material Debugging in Serial and Parallel, Totalview Tutorial
    Supplementary material Walker. Parallel GMRES , Erhel. Parallel GMRES
    Lecture 09 Numerical PDEs



    Previous lecture notes are available here.