Fondamenta di sistemi e GPU
Prima di ottimizzare un serving engine devi sapere cosa succede dentro una GPU: dove vivono i dati, quanto costa spostarli e come migliaia di thread vengono schedulati sullo stesso chip.
Perché questo stageNon puoi ottimizzare ciò che non capisci a livello di silicio. Ogni tecnica dei prossimi stage (PagedAttention, FlashAttention, quantizzazione, tensor parallelism) è una risposta a un vincolo fisico che incontri qui.
Le lezioni
Cosa saprai fare alla fine
- Leggere una scheda tecnica di una GPU e stimare subito se un carico è limitato da calcolo o da memoria.
- Scrivere kernel CUDA corretti, con accessi coalescenti e uso consapevole della shared memory.
- Spiegare occupancy, divergenza di warp e latency hiding con numeri alla mano.
- Scegliere la topologia giusta (PCIe o NVLink) per un deployment multi-GPU.
- Profilare un kernel con Nsight Compute e confrontarlo con cuBLAS.
Strumenti
CUDA Toolkit 12.x
nvcc, librerie (cuBLAS, cuDNN), header e runtime.
Nsight Compute
ncu: profilazione per singolo kernel, roofline, metriche di memoria.
Nsight Systems
nsys: timeline dell'intero processo, CPU e GPU insieme.
Rust + cargo
Toolchain stabile, tokio, cudarc per binding CUDA.