Parallel Programming @ NYCU, Spring 2021
Announcement
- Logistics of the presentation sessions is available here.
- Presentation schedule registration is available at https://ppt.cc/fNFLax. Check out the slides for more details.
- Scores of assignment are available at the score sheet.
- Group member registration is now available at the group sheet. Registration is due on March 11.
General Information
Course name: Parallel Programming 平行程式(在職專班)
Class time: Rabc (Thursdays)
Class location: EC015(工程三館)
Facebook group: Link
Refer to the SYLLABUS for more details.
People
Member | Name | Office hours | Location | |
---|---|---|---|---|
Instructor | Prof. Yi-Ping You (游逸平) | ypyou [at] cs.nctu.edu.tw | By appointment | EC532 |
TA | An-Chi Liu (劉安齊) | acliu [at] cs.nctu.edu.tw | By appointment | EC618 |
Prerequisites
This course assumes that you write good code in C/C++ and are familiar with the Linux environment. You will write a lot of C/C++ code running on remote Linux machines, and also use profiling tools to analyze the performance of programs.
Requirements:
- You have taken a C/C++ course or have a fair amount of practical experience with C/C++ programming. For those who are not familiar with C++, you may need to study it by yourself.
- You know how to connect to remote machines with
ssh
,scp
, etc. - You know how to work on Linux systems (i.e., basic commands such as
cd
,rm
, and running executables and GNU tools such asmake
andgcc
).
Overview
This course examines current research in parallel and cloud computing, with an emphasis on several programming models. Topics covered include
- Parallel and distributed programming for cloud computing
- Introduction to parallel hardware and software
- Shared-memory programming with OpenMP
- Shared-memory programming with Pthreads
- Distributed-memory programming with MPI
- Data parallel programming with CUDA
- Data parallel programming with OpenCL
- Performance benchmarking
Week-by-week Schedule
Week | Lecture | Slides | Assignments | Peer-review comments |
---|---|---|---|---|
1 (02/25) | Course introduction | L0 | HW0 release | |
2 (03/04) | Parallel and distributed programming | L1 | ||
3 (03/11) | Introduction to parallel hardware and software | L2 | HW1 release | |
4 (03/18) | Shared-memory programming with Pthreads | L3-1 | ||
5 (03/25) | Shared-memory programming with Pthreads | L3-2 | HW2 release, HW1 due | |
6 (04/01) | Shared-memory programming with OpenMP | L4-1 | ||
7 (04/08) | Shared-memory programming with OpenMP | L4-2 | HW3 release, HW2 due | |
8 (04/15) | Distributed-memory programming with MPI | L5-1 L5-2 | ||
9 (04/22) | Data parallel programming with CUDA | L6 | HW4 release, HW3 due | |
10 (04/29) | Data parallel programming with CUDA | |||
11 (05/06) | Data parallel programming with OpenCL | L7 | HW5 release, HW4 due | |
12 (05/13) | Data parallel programming with OpenCL / OpenACC | L8 | ||
13 (05/20) | Hadoop and MapReduce programming | L9 | HW6 release, HW5 due | |
14 (05/27) | Final project presentations | |||
15 (06/03) | Final project presentations | HW6 due | ||
16 (06/10) | Final project presentations | |||
17 (06/17) | Final project presentations |
Textbook
Peter Pacheco, An Introduction to Parallel Programming, Morgan Kaufmann; 1 edition (January 21, 2011).
Course Project
See the project page for details.
Grading
Grades will be assigned based on
- Homework assignments (70%) and
- Final project and presentation (30%).
These weights are subject to minor variation.
References
- C++ Programming
- Gerassimos Barlas. 2014. Stanley B. Lippman, Josée Lajoie, Barbara E. Moo.C++ Primer, 5th Edition. ISBN: 9780321714114
- Scott Meyers. 2014. Effective Modern C++. ISBN: 9781491903995
- Parallel Programming.
- Multicore and GPU Programming: An Integrated Approach, 1st Edition. ISBN: 9780124171374
- Benedict R. Gaster et al. 2012. Heterogeneous Computing with OpenCL, 2nd Edition. ISBN: 9780124058941
- David B. Kirk, Wen-mei W.Hwu. 2017. Programming Massively Parallel Processors, 3rd Edition. ISBN: 9780124159921
- Stanford CS149, Fall 2019. Course: Parallel computing. http://cs149.stanford.edu/fall19/
- CMU 15-418/15-618, Fall 2019. Course: Parallel Computer Architecture and Programming. http://www.cs.cmu.edu/afs/cs/academic/class/15418-f19/www
- Jserv. 2021. 並行和多執行緒程式設計. https://hackmd.io/@sysprog/concurrency/
- Profiling
- Brendan Gregg. 2013. Systems Performance: Enterprise and the Cloud, 1st Edition. http://www.brendangregg.com/sysperfbook.html
- Brendan Gregg. 2020. Linux Perf Examples. Retrieved from http://www.brendangregg.com/perf.html
- Anish, Jon, and Jose. 2020. Debugging and Profiling of “The Missing Semester of Your CS Education”. Retrieved from https://missing.csail.mit.edu/2020/debugging-profiling/