Parallel computing is a form of computation that utilizes multiple computing resources for solving a problem. Recently, parallel computing is widely employed in various fields (e.g., simulation, graphics, AI, Etc.) to improve the performance in the perspective of speed or accuracy. Among various parallel computing architectures, multi-core CPUs and GPUs are most commonly employed computing resources. This course aims to understand the power of parallel computing and learn a basic programming skill for developing a parallel program. During the 16-week course, students will learn
Concept of parallel computing, How to design parallel algorithms
OpenMP - A programming interface for utilizing multi-core CPUs (MIMD architecture)
CUDA - A programming interface for utilizing a NVIDIA GPU (many-core SIMT architecture)
Also, students will join two team projects whose goal is improving the performance of an application by using multi-core CPUs or/and GPUs.
Previous Years: [Spring, 2019], [Spring 2018] / [Course story] [Team projects]
Schedule (This is a flipped-learning course)
Lecture: Online (EL)
Problem solving: Thur. 11:00~13:00 / #125, 2nd Eng. Building
Catch-up class (with TA) : Tue. 09:00~11:00 (#125)
Instructor: Duksu Kim (bluekds at koreatech.ac.kr / #435, 2nd Eng. Building)
Office hour : The. and Thur. 14:00~16:00 (#435)
Teaching Assistant: JaeHong Lee (oorange31 at koreatech.ac.kr / #331, 2nd Eng. Building)
Office hour : The. 15:00~17:00 (#331)
Course git repository [link]
(Required) C Programming
(Recommended) System Programming, Data structure
(Required) PC or Laptop with a multi-core CPU
(Recommended) PC or Laptop with a NVIDIA GPU
We will rent a development kit (i.g. Jetson Kit) for CUDA if you need
However, you need to prepare a monitor and a keyboard/mouse yourself to use that.
[Main textbook] Lecture notes in this page
(OpenMP) Using OpenMP, B. Chapman et al. (The MIT Press) [link]
(OpenMP) An Introduction to Parallel Programming, Peter Pacheco (MK) [Eng] [Kor]
(CUDA) CUDA C Programming guide (NVIDIA) [link]
(CUDA) Professional CUDA C Programming, Jhon Cheng, Max Grossman, Ty Mckercher (NVIDIA) [link]
This page may not work with Internet Explorer 10 or older versions (Recommended browser: Chrome)
Lecture slides of a week will be uploaded at the beginning of the week, and the lecture video will be updated on EL
Some of figures and sample code comes from reference textbooks
At the end of a week, the lecture video will be updated at this homepage (* For your attendance check, you must watch the video on EL)
Parallel construct
Work-sharing construct
Scope of variables
Videos
Synchronization Constructs
Locks
Videos
Histogram
Ver. 1, 2, 3
Video
Commentary from students
Reduction clause
Scheduling clauses
Nested parallelism
Videos
Check [here]
Hello CUDA!
Basic workflow of CUDA Program
CUDA Thread Hierarchy & Organizing threads
CUDA memory hierarchy
Memory model & Performance
Using shared memory
Slides (Eng)
Video
Global memory
Aligned memory access
Coalesced memory access
Shared memory
Bank conflict
Optimizing Matrix Multiplication
No Video for this Lab.
고성능 컴퓨팅, VR/AR, 인공지능/자율주행 등을 함께 공부/연구하고 싶으신 분들 연락주세요 :)
자세한 내용은 여기 를 확인해주세요.
Synchronization
CUDA stream
Concurrent execution
Hiding data transfer overhead
CUDA Event
Multi-GPUs
Heterogeneous Computing