|Kursusnavn (dansk):||High Performance Computing |
|Kursusnavn (engelsk):||High Performance Computing |
|Semester:||Efterår 2018 |
|Udbydes under:||cand.it., spil (games) |
|Omfang i ECTS:||7,50 |
|Min. antal deltagere:||15 |
|Forventet antal deltagere:||0 |
|Maks. antal deltagere:||50 |
|Formelle forudsætninger:||Students must have experience with and be comfortable with programming, and be capable of independently implementing algorithms from descriptions in pseudocode. This corresponds to at least having passed an intermediate-level programming course and created medium sized software projects.
Basic mathematics understanding; Trigonometry, vectors and linear algebra, etc.
- Design and implement algorithms for specific hardware architecture (especially cache layout).
- Explain how memory is structured in modern hardware architecture (CPU registers, cache levels, main memory).
- Implement parallel C++11 code using multiple threads.
- Use SIMD instructions on CPU to boost single threaded performance.
- Write code that minimizes numerical errors
- Use the appropriate floating-point representation
- Different trade-offs of speed / accuracy / size
- Using IEEE 754
- Working with numerical errors
- Compute shaders / OpenCL / CUDA
- Data transfer
- Memory model
- Optimizing performance using shared memory between hardware threads
- Job distributions
- Describe performance characteristics of a program (algorithmic complexity, cache misses, memory access patterns, scalability)
- Use data-oriented design to performance tune code.
|Fagligt indhold:||The course will focus on how to achieve the highest possible performance based on modern hardware architecture. In the course you will use low level C++ code for creating solution using vectorization, cache-friendly memory layout and multithreading. In the course you will also learn how to use the GPU to solve certain kind of problems using Compute Shaders / OpenCL / CUDA. |
10 weeks of lectures. 4 weeks of project work.
The lectures of the class will include class-based discussions and small quizzes to make the students reflect about the topics.
The course will contain compulsory programming assignments.
Weekly exercises (5 of which is mandatory).
|Obligatoriske aktivititer:||5 mandatory exercises must be handed in and approved.
Be aware: The student will receive the grade NA (not approved) at the ordinary exam, if the mandatory activities are not approved and the student will use an exam attempt.
|Eksamensform og -beskrivelse:||D22: Aflevering med mundtlig eksamen suppleret af aflevering., (7-scale, external exam)|
Submission of an individual project including source code, binaries (if any) and a short report describing the implementation details and the theory used.
The exam will cover both the curriculum as well a project.
Oral exam: 20 min.