Skip to content

Real-Time Visual and Machine Learning Systems

An upcoming course which will be based on this material.
Lightning icons created by Freepik - Flaticon .

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