Corriendo High Performance Linpack (HPL) los técnicos del CCAD descubrieron un diferencia de frecuencia entre los dos procesadores de Serafín que hacen un 2% más lento el cómputo de este benchmark. Mostramos otras sutilezas que derivan en la instalación de una supercomputadora con la última tecnología.
Serafín ya está operativa, pero la instalación no estuvo exenta de problemas. Es que una plataforma nueva, de altísima densidad de cómputo y con interfaces de comunicación muy rápidas, necesita software nuevo, tal vez muy nuevo.
El cluster corre Rocky Linux 8.4, un derivado de RHEL salido hace 3 meses con kernel 4.18.0-305.10.2.el8_4.x86_64. La suite de compilación es aocc-3.1 también de julio de 2021. Se compilaron utilizando el viejo gcc-8.4 que trae Rocky y a través de Spack, un gcc-11.2 también de finales de julio de 2021. Ambos compiladores son capaces de emitir código para la arquitectura Zen2.
Una sutileza en la frecuencia de operación del Procesador 1
A fin de probar la plataforma se compiló HPL de AMD para correr primeramente en un solo nodo y verificar la potencia de cálculo que según lo que pudimos estimar de ejemplares similares (2*EPYC 7532, RAM DDR4-3200) en la lista TOP500, debería estar en 2.2 TFLOPS por nodo usando toda la suite de AMD (compilador aocc, biblioteca de BLAS AMD BLIS).
En este punto surgió el primer detalle. A pesar de haber usado todas las recetas de AMD, e incluso un parche para usar la MKL de Intel en Zen2, se obtuvo un resultado más bajo.
================================================================================ T/V N NB P Q Time Gflops -------------------------------------------------------------------------------- WR11C2R4 120064 224 4 4 552.55 2.0883e+03 HPL_pdgesv() start time Tue Aug 17 10:02:15 2021 HPL_pdgesv() end time Tue Aug 17 10:11:27 2021 -------------------------------------------------------------------------------- ||Ax-b||_oo/(eps*(||A||_oo*||x||_oo+||b||_oo)*N)= 2.92090121e-03 ...... PASSED ================================================================================
Luego de intercambiar emails con los ingenieros de AMD, y con el N ajustado a 120000 con AMD BLIS se obtuvo un 2% menos de lo que se debería.
================================================================================
T/V N NB P Q Time Gflops
--------------------------------------------------------------------------------
WR11C2R4 120000 224 4 4 534.06 2.1571e+03
HPL_pdgesv() start time Wed Sep 1 19:15:12 2021
HPL_pdgesv() end time Wed Sep 1 19:24:06 2021
--------------------------------------------------------------------------------
||Ax-b||_oo/(eps*(||A||_oo*||x||_oo+||b||_oo)*N)= 3.02955319e-03 ...... PASSED
================================================================================
Usando el mismo no, pero con el MKL parchado, se llegó a lo que se esperaba, salvo que la medición patrón del TOP500 debería estar realizada con AMD BLIS y no con la MKL parchada. ¿Dónde está ese 2% de performance que faltaba?
Como en el CCAD uno de los lineamientos es tratar de obtener el máximo desempeño posible del hardware adquirido, los técnicos empezaron a buscar el problema.
================================================================================
T/V N NB P Q Time Gflops
--------------------------------------------------------------------------------
WR11C2R4 120000 224 4 4 521.69 2.2082e+03
HPL_pdgesv() start time Wed Sep 1 19:58:28 2021
HPL_pdgesv() end time Wed Sep 1 20:07:10 2021
--------------------------------------------------------------------------------
||Ax-b||_oo/(eps*(||A||_oo*||x||_oo+||b||_oo)*N)= 3.29733621e-03 ...... PASSED
================================================================================
Luego de actualizar al BIOS 2.2 (20210831) de la placa madre H12DST-B, y obtener los mismos resultados, se lanzó la ejecución monitoreando temperatura, frecuencia y voltaje, ya que el DVFS de los procesadores actualmente hacen lo que pueden para no dañar el silicio, brindando el mayor desempeño posible. Apareció algo extraño que se puedo observar monitoreando el sistema.
Tomando algunos valores constatamos que hay una brecha en la frecuencia de funcionamiento de las dos pastillas. La CPU1, que está más cercana al aire frío, tiene un reloj dado por el DVFS que es entre 2% y el 5% menor que la CPU2 que está detrás, que a su vez está entre 5C y 7C más caliente.
fPKG0 fPKG1 Abs % 2523 2614 91 3.48 2522 2610 88 3.37 2520 2605 85 3.26 2564 2684 120 4.47 2684 2793 109 3.90 2642 2759 117 4.24 2519 2608 89 3.41 2513 2603 90 3.45 2645 2781 136 4.89 2678 2805 127 4.52 2639 2719 80 2.94 2559 2675 116 4.33 2690 2834 144 5.08 2702 2810 108 3.84 2544 2610 66 2.52 2507 2575 68 2.64 2663 2803 140 4.99 2560 2637 77 2.91 2505 2575 70 2.71 2565 2665 100 3.75 2647 2738 91 3.32 2505 2575 70 2.71 2506 2574 68 2.64 2624 2766 142 5.13 2504 2574 70 2.71
Estimamos que cuando podamos solucionar este detalle entre los ingenieros de AMD, Supermicro y nuestros CPA-CONICET, obtendremos 2.2 TFLOPS con aocc+BLIS y un poquito más con el truco de la MKL parchada.
Comunicaciones colectivas de MPI aceleradas, memory leak
Durante el período de prueba el usuario Fabio Negreiros Ribeiro, detectó que sus corridas de Quantum ESPRESSO (QE) se cortaban por falta de memoria y los procesesos quedaban colgados.
El switch Infiniband de Serafín, un Mellanox MQM8790-HS2F soporta offloading de operaciones colectivas mediante el protocolo Mellanox SHARP. Este protocolo se activó usando OpenUCX dentro de OpenMPI, usando la biblioteca HCOLL de NVIDIA-Mellanox.
Efectivamente había bugs [1,2] en la versión de OpenMPI más nueva que soporta Spack y se tuvo que utilizar openmpi@4.1.2rc1 +legacylaunchers +pmix fabrics=ucx,hcoll,cma,xpmem schedulers=slurm
para solucionar ese problema y tener desempeño y estabilidad.
Hacemos notar que este problema solo surgía con Quantum ESPRESSO, y en el resto de los programas que se corrieron multinodo como GADGET o GROMAC, no hubo ningún problema.
Parches para el compilador AOCC en Spack
En todo este desarrollo de instalar el software básico para Serafín se utiliza fuertemente Spack. Aunque Spack sporta aocc, este compilador no es tan popular como el resto y hubo problemas con gdb [1], amdlibflame [2] y UCX [3], todos ya solucionados por esta gran comunidad.
Instalar una supercomputadora no es algo sencillo, pero claramente los técnicos del CCAD están en el bleeding edge y saben manejarlo.