Exercício – Encontrar o mapeamento de NUMA correto para um SKU de HPC

Concluído

Um dos aplicativos de HPC firmemente acoplados da equipe de P&D usa paralelização híbrida (MPI+threads) para melhorar o desempenho. A equipe determinou que o HB120_v2 é o melhor SKU para esse aplicativo e precisa determinar onde é o lugar ideal para fixar o processo e os threads.

No exercício a seguir, você seguirá o procedimento que a equipe de P&D usou para determinar a topologia NUMA do HB120_v2 e descobrir quais IDs de CPU correspondem a quais domínios NUMA.

Observação

Este exercício é opcional. Para concluir este exercício, será necessário criar uma assinatura do Azure antes de começar. Se você não tiver uma conta do Azure ou não quiser criar uma no momento, poderá ler as instruções para entender as informações que estão sendo apresentadas.

  1. Abra um prompt de comando em que você tenha a CLI do Azure instalada.

  2. Entre em sua conta do Azure. Essa etapa garantirá que você tenha permissão para implantar recursos.

    az login
    
  3. Crie um grupos de recursos. Você implantará a VM HB120_v2 nesse grupo de recursos. Substitua RESOURCE-GROUP_NAME por um nome exclusivo de sua escolha e LOCATION por um local próximo a você (por exemplo, eastus).

    az group create \
       --name <RESOURCE-GROUP_NAME> \
       --location <LOCATION>
    
  4. Crie uma VM HB120_v2 que use a imagem CentOS-HPC 7.8 por meio do Azure Marketplace. Substitua RESOURCE-GROUP_NAME pelo grupo de recursos criado na última etapa e VM-NAME por um nome exclusivo de sua escolha.

    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
    

    Esse comando pode levar algum tempo para ser concluído. Quando sua VM tiver sido criada, anote o publicIpAddress da VM, que fará parte da saída JSON. Você usará esse endereço IP na próxima etapa.

  5. Entre em sua VM HB120_v2 usando as chaves SSH que foram geradas automaticamente.

    ssh azureuser@<VM-PUBLIC-IP-ADDRESS>
    
  6. Instale o lstopo-no-graphics (do RPM hwloc).

    sudo yum install -y hwloc
    
  7. Execute o lstopo-no-graphics para determinar a topologia NUMA.

    lstopo-no-graphics 2>&1 | tee lstopo-no-graphics.out
    
  8. Anote as IDs de núcleo e de quais nós de domínio NUMA elas são membros.

Os mapeamentos de IDs de núcleo do HB120v2 para os 30 domínios NUMA são: 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 e 116-119.

Tendo essas informações de mapeamento NUMA em mãos, você saberá onde fixar processos e threads. Cada processo deve ser mapeado para seu próprio domínio NUMA. Somente para processos de MPI, tente executar um, dois, três ou quatro processos por domínio NUMA. Veja qual mapeamento fornece o melhor desempenho (por exemplo: tempo total do relógio menor). Para aplicativos paralelos híbridos, agrupe o processo e seus threads no mesmo domínio NUMA. A próxima unidade de MPI mostra quais argumentos de linha de comando de MPI usar para fixar processos em domínios NUMA.