HOME COURSES RESEARCH PUBLICATIONS SOFTWARE PEOPLE

MAHIDOL UNIVERSITY CENTER FOR SCIENTIFIC COMPUTING

SCPY403/571 Parallel Programming


InstructorChaiwoot Boonyasiriwat (chaiwoot@gmail.com)
Class HoursFriday (9:00AM - 12:00PM)
GradingHomework 50, Project 50 (marking scheme)
Slides
Resources
AMD OpenCL SDK (AMD APP SDK)
Intel OpenCL SDK
Old video clips

Course Schedule

Date Topics Videos Assignments
Jan 13, 2023 Parallel computer architectures, levels of parallelism, performance measurement (execution time, throughput, Amdahl's law, Gustafson's law, speedup, efficiency, scalability), C++ programming View
Jan 20, 2023 C++ programming, computational complexity, big O notation, timing your codes View
Jan 27, 2023 C++ programming, writing/reading binary files, writing/reading image files, preprocessor directives

Codes: stb_image_write.h, mandelbrot.cpp, hello_openmp.cpp,

View
Feb 3, 2023 OpenMP: parallel regions, parallel loop and loop scheduling, data race and synchronization, performance consideration View Submit HW1
Feb 10, 2023 C++: compiling multiple source files, using third-party libraries
OpenCL: platform model
View
Feb 17, 2023 OpenCL: platform and device queries, execution model, kernel programming model, memory model, vector addition

Codes: vecadd.cpp, vecadd.cl, stb_image.h, building.png

View
Feb 24, 2023 OpenCL: matrix addition and 2D index space, timing kernel executions, checking for OpenCL errors,

Codes: cl_util.h, query3.cpp

View
Mar 3, 2023 OpenCL: vector addition, matrix addition, image histogram

Codes: stair-gray.jpg, histogram4.cpp, histogram.cl

View
Mar 17, 2023 OpenCL: histogram equalization, image rotation, image filtering, python programming, PyOpenCL

Codes: histogram_equalization.cpp, pyOpenCL.ipynb

View
Mar 24, 2023 CUDA: programming model and interface, CPU and GPU timing, vector and matrix addition, performance guidelines, PyCUDA, CuPy, Numba, pyOpenCL

Codes: vecadd.cu, matadd.cu, a1d.m, pyCUDA.ipynb, CuPy.ipynb, numba.ipynb, pyOpenCL2.ipynb (matrix multiplication in pyOpenCL)

View
Mar 31, 2023 MPI: point-to-point and collective communications, timing, synchronization

Codes: mpi_hello.cpp, mpi_timing.cpp, send_recv.cpp, nonblocking.cpp, mpi4py_send_recv.py,

View
Apr 7, 2023 Parallel programming in MATLAB
Parallel algorithms: wave propagation, Julia set fractal, cellular automata
View
Apr 21, 2023 MPI, Slurm
Codes: integrate_serial.cpp, integrate_mpi.cpp, job.txt,
View
Apr 28, 2023 Direct and inverse scattering, finite-difference time-domain (FDTD) method, n-body problem and particle simulations, ocean simulation View1, View2
TBA Project presentation

References

Copyright © 2013-2023 Mahidol University Center for Scientific Computing. All rights reserved.
272 Rama VI Road, Ratchathewee, Bangkok 10400, THAILAND. Tel: +662 201 5770-1