TDDD56 |
Multicore and GPU Programming, 6 ECTS credits.
/Multicore- och GPU-Programmering/
For:
CS
D
DAV
ELE
I
Ii
IT
MMAT
MT
Y
|
|
Prel. scheduled
hours: 60
Rec. self-study hours: 100
|
|
Area of Education: Technology
Main field of studies: Computer Engineering, Computer Science, Information Technology, Media Technology and Engineering
|
|
Advancement level
(G1, G2, A): A
|
|
Aim:
Modern computers feature processors with multiple cores and powerful many-core based hardware accelerators such as graphics processing units (GPUs) that can be used for general-purpose computations (GPGPU or GPU Computing). The performance potential of such architectures can only be leveraged for speeding up applications if the code is properly parallelized and (re)written to exploit the specific architectural features.
After this course, the student will:
- be able to write code and re-write code for multicore and GPGPU architectures
- understand parallel algorithms and data structures, and be able to analyze them
- know general principles for parallel computing and techniques for parallelization.
|
|
Prerequisites: (valid for students admitted to programmes within which the course is offered)
Computer engineering. Data structures and algorithms.
Concurrent programming and operating systems. Programming skills in C. Some basic familiarity with C++ is useful.
Note: Admission requirements for non-programme students usually also include admission requirements for the programme and threshhold requirements for progression within the programme, or corresponding.
|
|
Supplementary courses:
Programming of parallel computers - methods and tools is complementary to this course. Both address parallel computing,
where this course emphasizes thread programming and GPU programming while TDDC78 focuses on OpenMP and message passing as required for programming larger clusters.
|
|
Organisation:
A lecture series introduces the theory and gives an overview of architectural concepts and programming techniques. A lab series contains programming assignments in multi-core thread programming and GPU programming. Lessons introduce the technical programming platforms used for the labs.
|
|
Course contents:
Introduction to multi-core, many-core and GPU architecture concepts. Theory of parallel computing. Theory of parallelization. Design and analysis of parallel algorithms. Survey of parallel programming language concepts. Thread programming for multicore computing. SIMD-programming and data-parallel programming. GPU-programming with OpenCL and/or CUDA. Non-blocking synchronization and transactional memory. Scheduling for multicore and operating system issues. Introduction to heterogeneous multicore and
parallel DSP architecture concepts and programming.
|
|
Course literature:
To be announced on the course home page.
|
|
Examination: |
|
Written examination Laboratory work |
3 ECTS 3 ECTS
|
|
|
The questions in the written exam check how well the student has fulfilled the learning goals of the course. For passing the exam, deficits in fulfilling certain partial goals can be balanced by a better fulfilling of other partial goals.
|
Course language is English.
Department offering the course: IDA.
Director of Studies: Ahmed Rezine
Examiner: Christoph W. Kessler
Link to the course homepage at the department
Course Syllabus in Swedish
|