This is an old revision of the document!
Table of Contents
HBM
Casi toda la info se puede encontrar en la documentación oficial de Intel.
354227-intel-xeon-cpu-max-series-configuration-and-tuning-guide-rev3.pdf
Cada nodo tiene un paquete de 64GB de HBM por cada socket, i.e. 128GB en total. La memoria tiene dos modos de operación en conjunto con DDR4: Flat y Cache.
El modo flat expone la HBM como un address space separado de la RAM, y requiere pasos adicionales después del booteo que Lenovo no entregó, ademas de requerir que el usuario use explícitamente la memoria. El modo cache es transparente al usuario como una caché L4, y se recomienda usar fake NUMA nodes. A su vez, se puede usar una configuración adicional, SNC4, que permite “partir” el acceso a la HBM de manera más granular.
Selección de modo
Para cambiar de modo flat a cache se tiene que configurar la bios del nodo con:
# nodeconfig <nodos> Memory.MemoryHierarchy=Cache
(Flat para volver a modo flat)
Para seleccionar SNC4:
# nodeconfig <nodos> Processors.SNC=SNC4
(Disabled para desactivarlo)
Configuración del kernel
De acuerdo a la documentación, para el modo cache normal es recomendable dividir la memoria en fake NUMA nodes de 64GB (16GB para SNC4). Para esto, es necesario cambiar los argumentos del kernel agregando numa=fake=4U (numa=fake=8U en el caso de SNC4). Esto se logra, en confluent, cambiando el archivo profile.yaml (por ejemplo /var/lib/confluent/public/os/rhel-8.8-x86_64-diskless-gpu/profile.yaml)y haciendo un deploy:
# osdeploy updateboot rhel-8.8-x86_64-diskless-gpu # nodedeploy <nodos>
Además, cuando ya bootea, es necesario hacer un enable de zone-reclaim:
# echo 2 > /proc/sys/vm/zone_reclaim_mode
(automatizable en confluent/ansible)
y antes de cada job hacer un flush de la cache:
# sync; echo 3 > /proc/sys/vm/drop_caches; # echo 1 > /proc/sys/vm/compact_memory
(Automatizable en un prolog de Slurm)

