CS-463 / 6 crédits

Enseignant: Bourgeat Thomas Emile

Langue: Anglais


Summary

This course offers a deep dive into the architecture and programming of modern computing systems, moving beyond general-purpose CPUs to explore how hardware and software are co-designed for maximum efficiency.

Content

Note : This is a hands-on, implementation-focused class where students will transition from theoretical performance modeling to programming specilized hardware.

Serveral of the course block will be based on the textbook "Efficient Processing of Deep Neural Networks (Synthesis Lectures on Computer Architecture)" by Vivienne Sze & al.

Tentative syllabus (up to reordering; a subset of bullet points within each block might be selected from year to year)

Block 0 : Principles of Hardware-Software codesign :

  • Speed of light, Roofline analysis, Arithmetic intensity
  • Little's law
  • Taxonomy of parallelisms
  • Custom datatypes (dynamic range, precision, quantitative benefits of quantization)

Block 1 : GPU

  • Architecture (multi-level parallelism and integrated accelerators)
  • GPU pseudo-ISAS (PTX)
  • Compilation challenges
  • Divergence
  • Explicit management of memory hierarchy
  • Practical GPU programming
  • Kernel fusion (FlashAttention)
  • Static dataflow graphs on a GPU

Block 2 : Systolic Architectures

  • Systolically computable functions (theory), space-time mapping
  • GEMM : Input, Weight, Output stationary dataflows
  • Architecture (0-D + 1-D + 2-D systolic units + data orchestrators)
  • Kernel fusion on systolic architectures
  • Low-level programming for a TPU-like machine

Block 3 : Spatial architectures

  • BSP paradigm
  • Programming around the NoC
  • Hypergraph partitioning

Block 4 : Sparsity

  • Sparse matrix multipliction, graph analytics, recommendation systems
  • Metadata representation
  • Memory amplification and sort reduce
  • Historical dataflow machines and modern reincarnation

Block 5 : Compilation challenges and techniques

  • Domain space exploration : space of loop nest reordering "Algorithm vs Mapping"
  • MILP for DSL compilers
  • Simple DSL "JIT"s
  • Egraphs
  • Decoupled languages (Halide)
  • Tiling languages (Triton, tilelang, cuTILE
  • MLIR

Note that topics are tentative and will be explored at different depths. In class participation is strongly recommended.

Learning Prerequisites

Required courses

CS-173 Fundamentals of digital systems

CS-200 Computer architecture

CS-320 Computer language processing

CS-214 Software construction

Recommended courses

CS-470 Advanced computer architecture

CS-420 Advanced compiler construction

Important concepts to start the course

  • Abstract Syntax Tree, Compilers
  • Pipelining, Banking, Caching
  • Comfort programming and debugging in HDL : Verilog/VHDL/Chisel/Bluespec
  • Good software programming skills

Learning Outcomes

By the end of the course, the student must be able to:

  • Analyze Performance Bounds
  • Optimize Data Representation for hardware
  • Do some simple Low-Level GPU Progamming
  • Design Systolic Dataflows (Map kernels onto systolic arrays architecture, selecting good dataflows)
  • Mitigate memory amplification
  • Understand and Implement Kernel Fusion
  • Build simple Domain-Specific Compilers

Teaching methods

  • Ex cathedra lectures, labs, and final project

Expected student activities

  • Come lecture, do the labs, do the project

Assessment methods

  • Homework, written report (final project), presentation (final project)

Supervision

Office hours No
Assistant.e.s Yes

Resources

Moodle Link

Dans les plans d'études

  • Semestre: Printemps
  • Forme de l'examen: Pendant le semestre (session d'été)
  • Matière examinée: Hardware-software co-design
  • Cours: 2 Heure(s) hebdo x 14 semaines
  • Projet: 4 Heure(s) hebdo x 14 semaines
  • Type: optionnel
  • Semestre: Printemps
  • Forme de l'examen: Pendant le semestre (session d'été)
  • Matière examinée: Hardware-software co-design
  • Cours: 2 Heure(s) hebdo x 14 semaines
  • Projet: 4 Heure(s) hebdo x 14 semaines
  • Type: optionnel
  • Semestre: Printemps
  • Forme de l'examen: Pendant le semestre (session d'été)
  • Matière examinée: Hardware-software co-design
  • Cours: 2 Heure(s) hebdo x 14 semaines
  • Projet: 4 Heure(s) hebdo x 14 semaines
  • Type: optionnel
  • Semestre: Printemps
  • Forme de l'examen: Pendant le semestre (session d'été)
  • Matière examinée: Hardware-software co-design
  • Cours: 2 Heure(s) hebdo x 14 semaines
  • Projet: 4 Heure(s) hebdo x 14 semaines
  • Type: optionnel

Semaine de référence

Cours connexes

Résultats de graphsearch.epfl.ch.