6 EC
Semester 2, period 4
5284PMCM6Y
The course provides a comprehensive introduction into state-of-the-art programming models for concurrent computing systems from multi-core processors in everyday laptops to large-scale server systems and high-end accelerators.
We start with multithreaded programming models for shared address space systems, where we look both into OpenMP compiler directives and into more low-level Posix threads. We continue with general-purpose graphics accelerators (GPGPUs) using NVidia's programming model CUDA and end with advanced topics such as directive-based GPU programming, Intel Xeon Phi programming and cross-architecture programming using the standard-driven OpenCL programming model.
Lectures on the practice of programming multi-core and many-core systems alternate with lectures on the principles, limitations and pitfalls of parallel program organization or the assessment and visualisation of parallel program performance. The lectures are complemented by labs where participants gain first-hand experience with the various programming models and by group discussion sessions (werkcolleges) where participants present their work and discuss their achievements with each other as well as with the lecturers and lab assistants.
This course is complementary to the VU courses Programming Large-scale Parallel Systems and Parallel Programming Project in that it looks into node-level concurrency, whereas the VU courses focus on systems that are made up of many nodes.
The course does not follow any specific text book. The following list summarises a number of interesting textbooks and online resources on various aspects of the course.
Parallel Programming in General:
OpenMP:
OpenACC:
CUDA:
Lecture slides and tutorials are provided via Canvas.
We use the DAS-5 compute cluster of the Advanced School of Computing and Imaging (ASCI) for the practical training. All necessary software is pre-installed on that system.
All relevant software is also available free of charge for download in the internet for installation of private machines, but this would merely be for convenience than a necessity.
Activity |
Number of hours |
Lectures |
28 |
Labs |
24 |
Workshops |
8 |
Exam |
2 |
Zelfstudie |
106 |
Programme's requirements concerning attendance (TER-B):
Additional requirements for this course:
Attendance of lectures and labs is highly recommended, but strictly speaking neither legally nor technically enforced.
This is your responsibility!!
Attendance of bi-weekly workshops (werkcolleges) is compulsory.
Item and weight | Details |
Final grade | |
0.2 (20%) Exam | Must be ≥ 5 |
0.2 (20%) Assignment 1 | |
0.2 (20%) Assignment 2 | |
0.2 (20%) Assignment 3 | |
0.2 (20%) Assignment 4 | |
Presentation | Must be ≥ pass |
Each of the four bi-weekly assignments receives one final grade. Exceptional circumstances apart, the grade is the same for both partners and accounts for 20% of the final grade. The individual exam makes up for the remaining 20% of the final grade.
Each student must give a presentation during one of the bi-weekly workshops. The quality of the presentation can affect the final grade either way with a bonus or malus of up to 0.5. Failure to give a presentation results in failing the course.
The exam is a digital open-books exam conducted via TestVisison. There is a cut-off grade of 5.0 for the exam to pass the course overall. Should the exam be graded below 5.0, the exam grade becomes the course grade, independent of the weekly assignments and the presentation.
Should we have reason to believe that workload and contributions in a group are not reasonably balanced, we reserve the right to conduct individual interviews, split groups, etc.
General feedback regarding the assignments is provided during the bi-weekly workshops. Individual feedback is provided for each assignment in written form. If needed, additional feedback can be obtained on an individual basis via the TAs during the laptop colleges.
Assignment 1: Scientific Programming and Vectorisation
Assignment 2: Application-oriented Multi-core Programming with OpenMP Compiler Directives
Assignment 3: Machine-oriented Multi-core Programming with Posix Threads
Assignment 4: Many-core and Heterogeneous Programming with CUDA and OpenACC
All assignments are to be submitted in fixed groups of 2 students. Each assignment is graded and accounts for 20% of the final course grade. Each group of participants must present its work during one of the bi-weekly workshops. The quality of the presentation may impact the final grade via bonus/malus points of up to 0.5 for presentations outstanding either way.
The 'Regulations governing fraud and plagiarism for UvA students' applies to this course. This will be monitored carefully. Upon suspicion of fraud or plagiarism the Examinations Board of the programme will be informed. For the 'Regulations governing fraud and plagiarism for UvA students' see: www.student.uva.nl
Weeknummer | Onderwerpen | Studiestof |
1 |
|
|
2 |
|
|
3 |
|
|
4 |
|
|
5 |
|
|
6 |
|
|
7 |
|
|
8 |
|
The schedule for this course is published on DataNose.
Prior knowledge: The practical parts of the course require a solid background in system-oriented programming in the language C, as well as basic knowledge of computer architecture.