12.3.2 : Hardware

  • Wednesday, Mar 22-2:00 PM - 2:50 PM CET Programming Model and Applications for the Grace Hopper Superchip [S51120]
    • Slides
    • 600GB Memory
    • 4 TB/s
    • GPU 470x
    • CPU 3x
    • ~2x throughput of Intel CPU
    • NVidia NVLink Switch System : 256 Supership connected
    • CPU partitionning and GPU MIG
    • 2.5x sur OpenFoam (compare x86 + A100)
    • Nsight fonctionne sur Grace Hopper
    • 2.5x sur NAMD (compare x86 + A100)
    • 3.8x sur CP2K (compare x86 + A100)
    • 4.7x sur Hash Joing TPC-H Query 4 (compare x86 + A100)
    • Memory Consistency
    • Sur x86 il y a un page fault qui est géré par le pilote qui déplace les données correctement sur le GPU (avec nvc++ ou nvfortran)
    • Hopper peut accéder au cache de Grace (cudaHostRegister), mais Grace accède directelemeent la la DDR du Hopper
    • Rien besoin de changer si on utilise un modèle de programmation hétérogène
    • cudaMemePrefetchAsync (on dit que l'on va avoir besoin des données sur CPU)
    • Allocator fainéante, le GPU alloue les données si il fait les premiers accès
    • Plus besoin de gérer les transfers de données
  • Wednesday, Mar 22-3:00 PM - 3:50 PM CET Optimizing Applications for Hopper Architecture [S51119]
    • Slides
    • A priori il n'y a pas besoin de changer les applications pour avoir une accélération. Mais ça peut aider
    • Les Thread Block Cluster sont Optionels
    • Les blocks dans un même thread block vont être exécutés en même temps.
    • Thread block cluster => CUDA cooperatove_group()
    • On peut appeler une synchronisation que sur un cluster
    • 224kB of shared memory par SMs (A100 164kB, V100 96kB, 64 kB P100, 48kB Kepler)
    • H100 cluster : 3648 kB of shared memory (16 SMs)
    • Des optimisation de cuFTT sont en cours pour utiliser les clusters, mais pas encore intégrées.