Practical Course: Data Processing on Modern Hardware
Content
This Praktikum aims to give students practical experience in implementing concepts covered in the Data Processing on Modern Hardware lecture. Attending the lecture is recommended but not required for completing the Praktikum.
We will explore how carefully laying out data in memory and good algorithm design can increase the effectiveness of hardware caches; how we can speed up database operations by parallelizing on modern CPUs; how to achieve efficient synchronization for data structures; and how to leverage specialized instructions/accelerators (e.g., SIMD, GPUs) for data processing. We are also going to take a look at offloading computation to programmable hardware devices (FPGAs), and see how we can benefit from novel network and storage technologies (interconnects, RDMA and NVRAM).
Organization
Preliminary meeting: 29.01.2025, 15:00 (online on BBB)
Grade will be based on take-home coding assignments and an end-term project.
Previous Knowledge Expected
The course is aimed at Master-level students who have experience in programming in a systems-level programming language (Rust, C/C++).
Knowledge from the Data Processing on Modern Hardware lecture (CIT3230004) would be helpful, but is not required. It is recommended to take this Praktikum alongside the lecture.
Additionally, knowledge from the following (or similar) courses is expected:
- Introduction to Databases (IN0008)
- Introduction to Computer Architecture (IN0004)
- Advanced Computer Architecture (IN2076)
Objective
After the completion of this course students should:
- have hands-on experience with how the memory hierarchy and its abstraction affect algorithm design and performance;
- have understanding of different methods to achieve vectorisation (explicit SIMD, compiler autovectorisation) and its impact on performance;
- be able to reliably measure performance, analyse experiment results, and make scientific conclusions;
- know how to debug code for performance, use tools like perf, analyse traces and flamegraphs;
- obtain hands-on experience with offloading computation from the CPU to other devices like GPUs, FPGAs, etc.
- be able to visualise performance data on charts and present results clearly and understandably to peers;
- be able to understand and discuss systems papers.
Recommended Reading
All of the resources from the Data Processing on Modern Hardware lecture will be useful.
- "Computer Architecture: A Quantitative Approach" (6th edition) by Hennessy and Patterson;
- "Computer Systems: A Programmer's Perspective" (3rd edition) by Bryant and O'Hallaron.