Topología en SMP

Presenter Notes

Resumen:

  • False sharing
  • Distancias
  • Ubicación
  • Impacto

Nicolás Wolovick 20200515

Presenter Notes

False sharing

Presenter Notes

Cache (Coherency) Line Size (CLS)

1 zx81:$ cat /sys/devices/system/cpu/cpu*/cache/index*/coherency_line_size | sort | uniq -c
2     112 64

Todos los niveles de caché tienen líneas de 64 bytes.

Presenter Notes

Exponiendo el false sharing

 1 #pragma omp parallel sections
 2 {
 3     #pragma omp section
 4     {
 5     for (size_t i=0; i<N/2; ++i) {
 6         sum[0] += i;
 7     }
 8     }
 9     #pragma omp section
10     {
11     for (size_t i=N/2; i<N; ++i) {
12         sum[OFFSET] += i;
13     }
14     }
15 }
  • Ir variando el OFFSET de 1 a 15 y ver que pasa.
  • Siempre con -O0 o usa registros para acumular y chau false-shaing.

Presenter Notes

Topología

  • Cómputo:
    • Sockets.
    • CPUs.
    • Unidades compartidas (KNL, Bulldozer)
    • Hilos virtuales (SMT, Hyperthreading®).
  • Memoria:
    • Cache.
    • NUMA.
  • Comunicación:
    • A que socket están conectadas las GPUs, NICs, Storage, etc.

Portable Hardware Locality hwloc

  • Proyecto de OpenMPI.
  • libhwloc, lstopo.

Presenter Notes

Sencillas

Core 2 Duo (Penryn)

  • No hay nada complejo ... nada.

Presenter Notes

Sencillas

i7 980 (Gulftown, 32nm shink de Nehalem)

  • Aun nada complejo ... nada.

Presenter Notes

Dos nodos NUMA (nabu)

2 * E5-2680v2

Presenter Notes

Dos nodos NUMA (2 * E5-2620v3, zx81)

Presenter Notes

Hyperthreading

Notar numeración "Intel", primero los físicos, luego los lógicos.

Presenter Notes

4 nodos NUMA (AMD Bulldozer)

  • Cores adjacentes comparten L1i y L2
  • En realidad cada dos Bulldozer cores se forma un Cluster Multi-Threading (CMT). Dos ALU 256 bits, una FPU de 256 bits.
  • Numeración "AMD" físico-lógico-físico-lógico-...

Presenter Notes

Bulldozer, compute nodes

Presenter Notes

KNL (7210, Eulogia)

Presenter Notes

Demasiado grande, lo naveguemos

1 $ lstopo -i topo_7210_knl.xml

Son 32 módulos de dos 2*VPU (vector processing units)

Presenter Notes

EPYC Rome

Dos niveles

  • CCD (Core Complex Die): conjunto de CCXs conectados por Infinity Link.
  • CCX (Core CompleX): conjunto de 4 cores con su propia caché L3

.
.
.

Optimizing Linux for AMD EPYC™ 7002 Series Processors with SUSE Linux Enterprise 15 SP1, 2021

Presenter Notes

EPYC Rome dual 32 core

Presenter Notes

NUMA

¿Cómo transformar una máquina NUMA en UMA?

Presenter Notes

Bibliografía

Presenter Notes

Bibliografía

Presenter Notes

La clase que viene

  • Affinity aka placement.

Presenter Notes