Print as pdf if you want a pdf! If you want a nicer printout, click off the browser's automatically added header and footer.
Blekinge Institute of Technology
Department of Computer Science
Revision: 2
Reg.no:
Multiprocessor Programming
Multiprocessor Programming
7.5 credits (7,5 högskolepoäng)
Course code: DV2597
Main field of study: Computer Science
Disciplinary domain: Technology
Education level: Second-cycle
Specialization: A1N - Second cycle, has only first-cycle course/s as entry requirements
Language of instruction: English
Applies from: 2023-08-11
Approved: 2023-08-11
This course is established by Dean 2020-03-04. The course syllabus is approved by Head of Department of Computer Science 2023-08-11 and applies from 2023-08-11.
Admission to the course requires 60 credits completed in the subject area Computer science or in the subject area Software engineering, including completed courses in programming, 12 credits, algorithm and data structures, 6 credits and operating system 6 credits and computer engineering 6 credits.
Parallelism has been an approach to achieve high performance in computer systems for many years. Today, computer systems incorporate parallelism at several levels: regular arrays (matrices) of SIMD processor cores as in GPUs, a smaller number of general CPU cores as in multicore processors, or as connected processing nodes as in a distributed system. To utilize the performance potential of the hardware, we need to write efficient parallel programs. In other words, parallel computer systems and parallel programming are fundamental building blocks for contemporary as well as future computer systems.
The aim of this course is to teach the students how to program computer systems consisting of many processors or processor cores to achieve high performance. We will look at programming of shared memory, both MIMD and SIMD, as well as programming of distributed systems. The focus in the course will be on programming of shared-memory multiprocessors.
The course covers the following areas:
• Introduction to multiprocessor systems and parallel programming
• Design principles for parallel computer architectures and computer systems
• Programming models and design principles for parallel programs to achieve high performance, e.g., partition of work to fit the target architecture, communication, and synchronization
• Libraries for parallel programming, e.g., pthreads and CUDA
• General-purpose computing on GPUs (GPGPU)
• Example algorithms for a number of interesting application domains
• Practical training in development of parallel programs
The following learning outcomes are examined in the course:
The teaching consists of a combination of lectures and laboratory exercises. The lectures present and explains the theoretical parts of the course. In addition, the students are expected to independently acquire the theoretical knowledge by self studies of relevant literature. The laboratory assignments focus on exercises that develop the student’s knowledge in the domain.
The mandatory laboratory assignments are solved independently or in groups within given time limits. Information whether the laboratory assignments can be solved in groups is given at course start and in the course PM. The laboratory assignments are mainly performed in the programming languages C / C++. The student is expected to have enough knowledge of these languages to independently be able to apply the theory in practice to solve the laboratory assignments.
Modes of examinations of the course
Code | Module | Credit | Grade |
2110 | Written examination | 3 credits | AF |
2120 | Laboratory session 1 | 1.5 credits | GU |
2130 | Laboratory session 2 | 1.5 credits | GU |
2140 | Laboratory session 3 | 1.5 credits | GU |
The course will be graded A Excellent, B Very good, C Good, D Satisfactory, E Sufficient, FX Failed result, a little more work required, F Fail.
The information before the start of the course states the assessment criteria and make explicit in which modes of examination that the learning outcomes are assessed.
An examiner can, after consulting the Disability Advisor at BTH, decide on a customized examination form for a student with a long-term disability to be provided with an examination equivalent to one given to a student who is not disabled.
The course evaluation should be carried out in line with BTH:s course evaluation template and process.
The course can form part of a degree but not together with another course the content of which completely or partly corresponds with the contents of this course.
Main literature
• Wen-mei W. Hwu, David B. Kirk, and Izzat El Hajj, Programming Massively Parallel Processors: A Hands-on Approach, 4th Edition, 2022, ISBN-9780323912310 (paper back) ISBN-9780323984638 (ebook).
• T. Rauber and G. Rünger, Parallel Programming for Multicore and Cluster Systems, 2nd ed., Springer, 2013, ISBN 978-3-642-37800-3.
• Material from the department.
• Wolfgang Engel, GPU PRO 4: Advanced Rendering Techniques, ISBN-10: 1466567430 ISBN-13: 978-1466567436.
• Jason Zink, Matt Pettineo, Jack Hoxley, Practical Rendering and Computation with Direct3D 11, ISBN-10:1568817207, ISBN-13: 978-1568817200.
• A. Grama, A. Gupta, G. Karypis, and V. Kumar, Introduction to Parallel Computing, 2nd edition, Addison-Wesley, 2003, ISBN 0201648652.
• J.L. Hennessy and D.A. Patterson, Computer Architecture – A Quantitative Approach, 4th edition, Morgan Kaufmann Publishers, 2007, ISBN 0-12-370-490-1.
• Maurice Herlihy, Nir Shavit, Victor Luchangco, and Michael Spear, The Art of Multiprocessor Programming, 2nd edition, Morgan Kaufmann Publishers, 2020, Paperback ISBN: 9780124159501, eBook ISBN: 9780123914064.