ConsultancyHPC en parallelisatie
Rekenkracht die schaalt.
We versnellen simulaties, datapijplijnen en AI-training: van performance-analyse tot parallelisatie over duizenden cores en GPU's. Synchroon waar het moet, asynchroon waar het kan.
Synchroon of asynchroon: waar de tijd verdwijnt.
In een bulk-synchroon programma wacht elke processor bij iedere barrière op de traagste. Bij asynchrone uitvoering start een taak zodra haar eigen buren klaar zijn. Hoe groter de spreiding in rekentijd, hoe groter het verschil.
De wet van Amdahl is onverbiddelijk.
Als 5% van een programma serieel blijft, is de maximale versnelling 20 keer, hoeveel cores u ook toevoegt. Daarom beginnen we altijd bij meten: waar zit het seriële deel, en hoe krijgen we het weg?
Gustafson laat de andere kant zien: wie met meer rekenkracht ook grotere problemen oplost, schaalt veel verder. Welke wet voor u telt, hangt af van uw vraag.
Van één node tot het hele cluster.
We werken op elk niveau van de stack: van de vectorinstructies in een binnenste lus tot de workload manager die duizenden jobs verdeelt.
Gedistribueerd geheugen
Domeindecompositie, niet-blokkerende en one-sided communicatie, en topologiebewuste plaatsing van processen.
- MPI
- UCX
- Halo-uitwisseling
- RMA
Gedeeld geheugen
Threading, NUMA-bewuste datalayout en vectorisatie, zodat elke core en elke SIMD-lane meedoet.
- OpenMP
- oneTBB
- AVX-512
- NEON en SVE
GPU-versnelling
Kernels herschrijven en tunen, geheugentransfers verbergen en schalen over meerdere GPU's en nodes.
- CUDA
- HIP en ROCm
- SYCL
- NCCL
Asynchrone runtimes
Taakgebaseerd parallellisme, futures en event loops die rekenen, communicatie en I/O laten overlappen.
- HPX
- Taskflow
- asyncio
- Ray
- Dask
Performance engineering
Profiling, roofline-analyse en het meten van geheugenbandbreedte en cachegedrag, voordat we iets veranderen.
- Nsight
- VTune
- perf
- LIKWID
AI op schaal
Gedistribueerde training met data-, model- en pipelineparallellisme, en inferentie met hoge doorvoer.
- PyTorch DDP en FSDP
- DeepSpeed
- Triton
Infrastructuur
Clusters, cloud bursting en containers, zo ingericht dat onderzoekers en engineers er zelf mee verder kunnen.
- Slurm
- Kubernetes
- Apptainer
- Spack
Eigen onderzoek: parallelle simulatie van tumorgroei.
In dit hoofdstuk analyseren we de parallelle efficiëntie van een framework dat de groei van maligne pleuramesothelioom simuleert: een Cellular Potts-model gekoppeld aan PDE’s voor zuurstof, voedingsstoffen en cytokines, in een driedimensionaal domein uit CT-data.
Een dynamische bounding box verkleint het domein waarop de PDE’s worden opgelost tot het gebied rond de tumor. De PDE’s worden met de eindige-volumemethode en een impliciet Euler-schema opgelost; de parallelisatie loopt via mpi4py met PETSc en een GMRES-solver. Resultaat: kortere rekentijd dan serieel, zuiniger geheugengebruik en een betere werkverdeling over de cores.
- Titel
- Multiscale Parallel Simulation of Malignant Pleural Mesothelioma via Adaptive Domain Partitioning – An Efficiency Analysis Study
- Auteurs
- Anton Dolganov, Valeria Krzhizhanovskaya, Stefano Trebeschi, Vivek M. Sheraton
- Verschenen in
- Computational Science – ICCS 2025 Workshops, Lecture Notes in Computer Science, deel 15911, Springer, 2025, p. 20–32
- DOI
- 10.1007/978-3-031-97570-7_3
Communicatie verbergen achter rekenwerk.
Een klein verschil in code, een groot verschil op schaal. Door de uitwisseling met buren te starten vóór het rekenwerk aan de binnenkant van het domein, wacht alleen de rand nog op data.
Blokkerend
rekenen wacht op communicatiefor (int it = 0; it < iters; ++it) {
exchange_halos(u); /* MPI_Sendrecv */
compute_interior(u, unew);
compute_boundary(u, unew);
swap(&u, &unew);
}
Overlappend
rekenen terwijl data onderweg isfor (int it = 0; it < iters; ++it) {
MPI_Request req[8];
post_halo_exchange(u, req); /* MPI_Irecv, MPI_Isend */
compute_interior(u, unew); /* overlapt met transfer */
MPI_Waitall(8, req, MPI_STATUSES_IGNORE);
compute_boundary(u, unew); /* alleen de rand wacht */
swap(&u, &unew);
}
Eerst meten, dan versnellen.
Elke optimalisatie begint met een reproduceerbare meting en eindigt met een team dat de winst kan vasthouden.
- 01
Meten
Een reproduceerbare baseline en profiling op uw eigen hardware en datasets.
- 02
Modelleren
Roofline-analyse en een schaalbaarheidsmodel: waar zit de echte bottleneck?
- 03
Paralleliseren
De juiste strategie per knelpunt: vectoriseren, threads, MPI, GPU of asynchrone taken.
- 04
Valideren
Numerieke correctheid en reproduceerbaarheid, bewaakt met regressietests.
- 05
Schalen
Strong- en weak-scaling-metingen op de doelomgeving, van werkstation tot cluster.
- 06
Overdragen
Documentatie, benchmarks in CI en training, zodat uw team de winst vasthoudt.
Rekent uw software te langzaam?
Vertel ons wat er draait, waarop en hoe lang het duurt. We laten zien waar de winst zit.
Plan een gesprek