Exercício - Encontre o mapeamento NUMA correto para um SKU HPC
Uma das aplicações HPC fortemente acopladas da sua equipa de I&D utiliza paralelização híbrida (MPI+threads) para obter desempenho. A equipe determinou que HB120_v2 é o melhor SKU para esta aplicação, e a equipe precisa determinar o local ideal para fixar o processo e os threads.
No exercício a seguir, você segue o procedimento que sua equipe de pesquisa e desenvolvimento usou para determinar a topologia NUMA HB120_v2 e descobrir quais IDs de CPU correspondem a quais domínios NUMA.
Nota
Este exercício é opcional. Se quiser concluir este exercício, terá de criar uma subscrição do Azure antes de começar. Se você não tiver uma conta do Azure ou não quiser criar uma no momento, leia as instruções para entender as informações que estão sendo apresentadas.
Abra um prompt de comando onde você tenha a CLI do Azure instalada.
Inicie sessão na sua conta do Azure. Esta etapa garante que você tenha permissão para implantar recursos.
az login
Crie um grupo de recursos. Você implanta a HB120_v2 VM neste grupo de recursos. Substitua RESOURCE-GROUP_NAME por um nome exclusivo de sua escolha e substitua LOCATION por um local perto de você (por exemplo, eastus).
az group create \ --name <RESOURCE-GROUP_NAME> \ --location <LOCATION>
Crie uma VM HB120_v2 que use a imagem do CentOS-HPC 7.8 do Azure Marketplace. Substitua RESOURCE-GROUP_NAME pelo grupo de recursos criado na última etapa e substitua 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
Pode levar algum tempo para que esse comando seja concluído. Quando sua VM tiver sido criada, tome nota do publicIpAddress da VM, que fará parte da saída JSON. Você usará esse endereço IP na próxima etapa.
Entre na sua HB120_v2 VM usando as chaves ssh que foram geradas automaticamente.
ssh azureuser@<VM-PUBLIC-IP-ADDRESS>
Instale lstopo-no-graphics (a partir de hwloc rpm).
sudo yum install -y hwloc
Execute lstopo-no-graphics para determinar a topologia NUMA.
lstopo-no-graphics 2>&1 | tee lstopo-no-graphics.out
Anote os IDs principais e em quais nós de domínio NUMA eles são membros.
Os mapeamentos de IDs principais 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.
Com essas informações de mapeamento NUMA, agora você sabe onde fixar processos e threads. Cada processo deve ser mapeado para seu próprio domínio NUMA. Apenas para processos MPI, tente executar um, dois, três ou quatro processos por domínio NUMA. Veja qual mapeamento oferece o melhor desempenho (por exemplo: um tempo de relógio de parede inferior). Para aplicativos paralelos híbridos, agrupe o processo e seus threads no mesmo domínio NUMA. A próxima unidade MPI mostra quais argumentos de linha de comando MPI usar para fixar processos em domínios NUMA.