SCPY 571 Parallel Programming


Instructor: Chaiwoot Boonyasiriwat (chaiwoot@gmail.com)
Class Hours: Monday and Thursday (3:00PM - 4:30PM)
Objectives: To learn how to program on various parallel computer achitectures
Grading: Homework 100
Book: book.pdf

Course Schedule

Week Lecture Date Topics Materials
1 1 Aug 8, 2016 Introduction to parallel programming, parallel computer architectures, Amdahl's and Gustafson's laws, computational speedup and efficiency 01_introduction.pdf
1 2 Aug 11, 2016 MPI: Introduction
Lab 1: Image thresholding
02_MPI.pdf
2 3 Aug 15, 2016 MPI: Point-to-point and collective communications, numerical integration
Lab 2: 1D and 2D wave propagation
hello.c, nonblocking.c, mandelbrot_serial.c
2 4 Aug 18, 2016 MPI: Partitioning, synchronous computation, and load balancing send.c, collective.c, sumnum.c
3 5 Aug 22, 2016 MPI: I/O TACC, Prof. Gropp, MPI I/O examples, mpi_file.f90
3 6 Aug 25, 2016 OpenMP: Introduction
4 7 Aug 29, 2016 OpenMP: loop-level parallelism; Memory alignment, row-major and column-major order array2d.c
4 8 Aug 31, 2016 OpenMP: parallel regions
Lab 3: 2D random walk (random.f90)
-
5 9 Sep 5, 2016 OpenMP: synchronization, data race, MPI/OpenMP hybridization
Lab 4: 2D Laplace image filtering
03_OpenMP.pdf
5 10 Sep 9, 2016 Torque/PBS: Job submission -
6 11 Sep 12, 2016 PThread: Introduction, Pthreads tutorial by Blaise Barney, LLNL 05_Pthread.pdf, mutex.c
6 12 Sep 15, 2016 Introduction to general-purpose GPU (GPGPU) programming using NVIDIA CUDA
7 13 Sep 19, 2016 CUDA C programming guide 7.5
Lab 5: Vector addition
-
7 14 Sep 22, 2016 CUDA: programming interface, allocation of 2D and 3D arrays using CUDA runtime functions
Lab 6: RGB to Gray image conversion
-
8 15 Sep 28, 2016 CUDA: shared memory
Lab 7: matrix multiplication
8 16 Oct 3, 2016 CUDA: (continued)
Lab: 2D random walk
-
9 17 Oct 5, 2016 Random number generation
Lab: random number generation on GPU
-
9 18 Oct 17, 2016 Random walk on GPU (continued)
Resource: walk1d.c
10 19 Oct 19, 2016 Prefix sum
10 20 Oct 26, 2016 Lab: Domain decomposition for finite difference method (1D Code)
11 21 Oct 31, 2016 Lab: Domain decomposition for finite difference method (2D Code) -
11 22 Nov 2, 2016 Hybrid between MPI and CUDA
Resource: simpleMPI example in NVIDIA CUDA sample directory 0_simple
12 23 Nov 7, 2016 Domain decomposition using MPI and CUDA
12 24 Nov 14, 2016 OpenGL Compute Shader (GLSL)
Resources: OpenGL code, Compute Shader code
13 25 Nov 16, 2016 OpenGL compute shader (continued) -
13 26 Nov 21, 2016 OpenCL: task- and data-parallel computing
Resources: OpenCL codes
14 27 Nov 23, 2016 OpenCL (continued)
14 28 Nov 28, 2016 OpenCL (continued) -
15 29 Nov 30, 2016 Applications -

References