Real-Time Visual and Machine Learning Systems
An upcoming course which will be based on this material.
Lightning icons created by Freepik - Flaticon
.
Recommended Prerequisites
One or more of the following:
High Performance Computing
Compute Graphics
Computer Vision
Deep Learning
Advanced Deep Learning in Computer Vision
Target Audience
M.Sc. students with an interest in systems programming, especially if they are interested in deep learning, computer graphics, computer vision, image analysis or signal processing.
PhD students who need to learn about performance and real-time systems. If they don't have previous experience in C++ or Rust they may benefit from spending some time preparing by reading module 0 and the material from Rust itself.
Learning Objectives
A student who has met the objectives of the course will be able to:
- Program using the Rust language and the WGPU API.
- Describe how computational graphs work.
- Describe how virtualized memory hierarchies work.
- Describe how a GPU works and how it fits in the memory hierarchy.
- Describe basic concepts in smart pointers, graph representations and garbage collectors.
- Give an overview of core concepts in concurrency.
- Explain input events and event-based processing.
- Explain integers and bitwise operations as well as floats and precision.
- Perform performance profiling and optimization of complex heterogeneous systems.
- Analyze cases relevant to the students' specialization.
- Choose the right tools presented in the course for implementing their own project.
- Programming, presenting and analyzing the students' own real-time system.
Evaluation
All work must be done alone, but it is recommended to talk about the problems.
- Coding - Memory hierarchies and GPU's
- Analysis - Analysing a code template and minimum 3 points from a list of articles
- Programming project - presentating a functoning real-time system and hand-in of the product and a log book of the development process
Course work
Aside from reading and listening:
- Rudimentary Rust exercises
- Paper and pen exercises about memory
- Types coding exercises
- Setup one or more profilers and explore them
- Analysis, presentation and discussion exercise. Choose a use case, analyze it, present it in groups and discuss
Schedule
Work in progress
The schedule below was the way the course was taught while the underlying material was still being written. It does not necessarily reflect the way and order in which it should be taught. You can create your own view on the underlying material and choose your exercises and order. It also became apparent while teaching that another day was needed for teaching GPU programming and more material was written for it. The concept of levels has also been removed from the material.
Location: Building 321, room 232 at DTU
The lectures before New Years will be from 13-17
The project work after New Years will be all day, but you can come and go as you'd like
The course ends with a demo day where you can show off your hard work
Date | Prep | Topics | Lecture |
---|---|---|---|
26/10/23 | Read level 1 and 2 for all modules Install and run framework |
Introduction to the course Introduction to Rust Rudimentary Rust exercises |
Link |
2/11/23 | Read level 3 for modules 0 and 1 | Memory Hierarchies and computational graphs Pen and Paper exercises |
Link |
9/11/23 | Reread GPU and computational graph sections | Memory Hierarchies and computational graphs Coding Hand-in |
Link |
16/11/23 | Read level 2 & 3 for module 2, s0 to s4 | Concurrency Analysis Hand-in, m4::e0 and m4::e1 |
Link |
23/11/23 | Read level 2 & 3 for module 2, s5 to s9 | Concurrency | Link |
30/11/23 | Read level 2 & 3 for modules 3 and 5 | Types Introduction to Profiling and Performance Use Cases Types exercise Profiler exercise |
Link |
7/12/23 | Read module 4 | Introduction to real-time systems Introduction to projects Approval of projects |
Link |
2/1/24 | Project Work | ||
3/1/24 | Project Work | ||
4/1/24 | Project Work | ||
5/1/24 | Project Work | ||
8/1/24 | Project Work | ||
9/1/24 | Project Work | ||
10/1/24 | Project Work | ||
11/1/24 | Project Work Demo day |