Chai With JaiGPU Study Hall
Menu

Blog / Learning in public

More of the machine.
One version at a time.

I’m studying Aalto University’s open Programming Parallel Computers course. This is my visual learning log: start with a correct answer, then learn to move less data and do more work at once.

The optimization lab

Same answer.
Different use of the machine.

Aalto’s running example finds the cheapest route using at most two edges. Change the version to see how the work moves through memory and execution lanes.

Chapter 2 · two-hop paths
V0

Strided reads

Baseline

One output, one reduction chain. A row scan meets a strided column scan.

Read this version at Aalto ↗

Arithmetic lanes

0

One chain depends on its previous minimum.

Conceptual model · no timing claims
D · row 0
0815310175121401561671788209316104218150963191515151501515159121518208113915281407166155144130
D · column 1
0815310175121401561671788209316104218150963191515151501515159121518208113915281407166155144130
R · click an output to inspect it

R[0, 1] = min over k of
D[0, k] + D[k, 1]

At k = 0: 0 + 8 = 8

Final minimum 8

The result stays the same across versions. Only how we organize the work changes.

A small illustration of the access and reuse ideas, not an execution trace of Aalto’s C++ or CUDA kernels. Tile shapes and lane counts are schematic. CPU OpenMP parallelism is an additional layer across the case study.

Put the ideas to work

The exercise map.

Every task in Open 2026, grouped by problem family and the hardware idea it develops. Topic tags are my reading of the published instructions.

32 of 32 tasks
Pre0

prerequisite test

Prerequisite
Foundations
CP1

CPU baseline

Correlated pairs
Baseline
CP2a

instruction-level parallelism

Correlated pairs
Instruction-level
CP2b

multicore parallelism

Correlated pairs
Multicore
CP2c

vectorization

Correlated pairs
SIMD
CP3a

fast solution with doubles

Correlated pairs
SIMDMulticoreReuse
CP3b

fast solution with floats

Correlated pairs
SIMDMulticoreReuse
CP4

GPU baseline

Correlated pairs
GPUBaseline
CP5

fast GPU solution

Correlated pairs
GPUReuse
CP9a

better algorithm

Correlated pairs
Algorithm
IS2

simple solution

Image segmentation
Baseline
IS4

fast solution

Image segmentation
MulticoreReuse
IS6a

fast CPU solution for 1-bit images

Image segmentation
SIMDReuse
IS6b

fast GPU solution for 1-bit images

Image segmentation
GPUReuse
IS9a

better algorithm

Image segmentation
Algorithm
MF1

CPU baseline

Median filter
Baseline
MF2

multicore parallelism

Median filter
Multicore
MF9a

better algorithm

Median filter
Algorithm
SO4

merge sort

Sorting
MulticoreAlgorithm
SO5

quicksort

Sorting
MulticoreAlgorithm
SO6

fast GPU solution

Sorting
GPUAlgorithm
LLM9a

CPU optimization

Language model
SIMDMulticoreReuse
I8MM2

CPU baseline

Integer matrix multiplication
Baseline
I8MM3

fast CPU

Integer matrix multiplication
MulticoreSIMDReuse
I8MM4

GPU baseline

Integer matrix multiplication
GPUBaseline
I8MM5

fast GPU

Integer matrix multiplication
GPUReuse
I8MM6

Tensor Core baseline

Integer matrix multiplication
GPUTensor cores
I8MM9a

CPU AVX512-VNNI

Integer matrix multiplication
SIMD
I8MM9b

SIMD GPU

Integer matrix multiplication
GPUSIMD
I8MM9c

fast Tensor Core

Integer matrix multiplication
GPUTensor coresReuse
X0a

CPU experiments

Experiments
Experiment
X0b

GPU experiments

Experiments
GPUExperiment

Task names and requirements: Aalto PPC · Open 2026. Checked October 8, 2026. Follow the official task pages for restrictions, precision requirements, hardware, and deadlines.

Watch. Read. Try.

Six lectures.
A connected set of ideas.

The lectures introduce the tools; the case studies show how they change a real implementation.

Open the reading map

The work behind the notes

Study alongside me.

Source-linked moments from my streams. Caption excerpts retain the auto-generated wording; they can contain transcription errors.

Programming Parallel Computers: Open 2026Watch the session ↗

Course study

Programming Parallel Computers: Open 2026

My first learning log: why parallelism matters, how the exercises fit together, and where to start.

Download timestamped captions ↓

English auto-generated captions · retrieved October 8, 2026

5:21 · Watch this moment ↗

Why parallel computers?

is programming parallel computers. So why not say programming computers? Why say programming parallel computers? So all computers are massively parallel processors. The CPU of a normal desktop or a laptop computer like what you might be watching this on easily may have hundreds of arithmetic operations in progress. simultaneously.
YouTube auto-generated caption excerpt
34:38 · Watch this moment ↗

Surveying the exercise families

correlated pairs and then we'll probably you know quickly understand why each of these are important or maybe like briefly try to understand the concept. Then we have image segmentation, median filter. [snorts] So I'm going to say image segmentation. Then I'm going to say median filter.
YouTube auto-generated caption excerpt
42:09 · Watch this moment ↗

Starting with a CPU baseline

the correlated pairs. So then we're going to have the CPU baseline. So then I'm going to say problem two, the first one, it's going to be CPU baseline. And then let's get a note on this.
YouTube auto-generated caption excerpt
View captured caption notes

Browser captures of this blog’s caption reader, built from the timestamped source captions.

Open the course caption capture ↗Open the WebGPU caption capture ↗

Keep learning

Correct. Measure.
Understand. Improve.

This guide is an independent learning companion by Jai Bhagat. The original course, lectures, examples, and exercise instructions are by Aalto’s Programming Parallel Computers team. Use their material alongside these notes.