Ejercicio: Búsqueda de la asignación de NUMA correcta para una SKU de HPC

Completado

Una de las aplicaciones de HPC estrechamente acopladas de su equipo de I+D utiliza paralelización híbrida (MPI+subprocesos) para conseguir el mejor rendimiento. El equipo ha determinado que HB120_v2 es la mejor SKU para esta aplicación, y necesitan identificar el lugar óptimo para anclar el proceso y los subprocesos.

En el siguiente ejercicio, seguirá el procedimiento que utilizó su equipo de I+D para determinar la topología NUMA de HB120_v2, y descubrirá qué identificadores de CPU corresponden a qué dominios NUMA.

Nota:

Este ejercicio es opcional. Si le interesa completar este ejercicio, deberá crear una suscripción de Azure antes de empezar. Si no tiene una cuenta de Azure o no quiere crear una en este momento, puede leer las instrucciones para comprender la información que se está presentando.

  1. Abra un símbolo del sistema donde tenga instalada la CLI de Azure.

  2. Inicie sesión en la cuenta de Azure. Este paso garantiza que tiene permiso para implementar recursos.

    az login
    
  3. Cree un grupo de recursos. Implemente la máquina virtual de HB120_v2 en este grupo de recursos. Reemplace RESOURCE-GROUP_NAME por un nombre único de su elección y LOCATION por una ubicación cercana (por ejemplo, eastus).

    az group create \
       --name <RESOURCE-GROUP_NAME> \
       --location <LOCATION>
    
  4. Cree una máquina virtual HB120_v2 que use la imagen CentOS-HPC 7.8 de Azure Marketplace. Reemplace RESOURCE-GROUP_NAME por el grupo de recursos que creó en el último paso y VM-NAME por un nombre único de su elección.

    az vm create \
       --resource-group <RESOURCE-GROUP-NAME> \
       --name <VM-NAME> \
       --admin-username azureuser \
       --generate-ssh-keys \
       --image OpenLogic:CentOS-HPC:7_8:latest \
       --size Standard_HB120rs_v2
    

    Este comando podría tardar algún tiempo en completarse. Cuando se haya creado la máquina virtual, tome nota del valor publicIpAddressde la máquina virtual, que formará parte de la salida JSON. Usará esta dirección IP en el paso siguiente.

  5. Inicie sesión en la máquina virtual HB120_v2 con las claves SSH que se han generado automáticamente.

    ssh azureuser@<VM-PUBLIC-IP-ADDRESS>
    
  6. Instale lstopo-no-graphics (de hwloc rpm).

    sudo yum install -y hwloc
    
  7. Ejecute lstopo-no-graphics para determinar la topología NUMA.

    lstopo-no-graphics 2>&1 | tee lstopo-no-graphics.out
    
  8. Anote los identificadores del núcleo y de los nodos de dominio NUMA a los que pertenecen.

Las asignaciones de los identificadores de los núcleos de HB120v2 a los 30 dominios NUMA son: 0-3, 4-7, 8-11, 12-15, 16-19, 20-23, 24-27, 28-31, 32-35, 36-39, 40-43, 44-47, 48-51, 52-55, 56-59, 60-63, 64-67, 68-71, 72-75, 76-79, 80-83, 84-87, 88-91, 92-95, 96-99, 100-103, 104-107, 108-111, 112-115 y 116-119.

Con esta información de asignación de NUMA, sabe dónde anclar los procesos y subprocesos. Cada proceso debe estar asignado a su propio dominio NUMA. Solo para los procesos de MPI, intente ejecutar uno, dos, tres o cuatro procesos por dominio NUMA. Vea qué asignación proporciona el mejor rendimiento (por ejemplo, un tiempo de reloj más bajo). En el caso de las aplicaciones paralelas híbridas, agrupe el proceso y sus subprocesos en el mismo dominio NUMA. La siguiente unidad MPI muestra los argumentos de línea de comandos de MPI que se deben usar para anclar los procesos a los dominios NUMA.