연습 - HPC SKU의 올바른 NUMA 매핑 찾기

완료됨

R&D 팀의 밀결합된 HPC 애플리케이션 중 하나는 하이브리드 병렬 처리(MPI+스레드)를 사용하여 성능을 향상합니다. 팀은 HB120_v2가 이 애플리케이션에 가장 적합한 SKU임을 확인했으며, 프로세스 및 스레드를 고정하기 위한 최적의 지점을 결정해야 합니다.

다음 연습에서는 R&D 팀이 HB120_v2 NUMA 토폴로지를 확인하는 데 사용되는 절차를 따르고 어느 CPU ID가 어느 NUMA 도메인에 해당하는지 검색합니다.

참고 항목

이 연습은 선택 사항입니다. 이 연습을 완료하려면 시작하기 전에 Azure 구독을 만들어야 합니다. Azure 계정이 없거나 지금 만들지 않으려는 경우 제시되는 정보를 이해할 수 있도록 지침을 끝까지 읽어 보세요.

  1. Azure CLI가 설치된 명령 프롬프트를 엽니다.

  2. Azure 계정에 로그인합니다. 이 단계를 통해 리소스를 배포할 수 있는 권한을 확보합니다.

    az login
    
  3. 리소스 그룹을 만듭니다. HB120_v2 VM을 이 리소스 그룹에 배포합니다. RESOURCE-GROUP_NAME을(를) 선택한 고유한 이름으로 바꾸고 LOCATION을(를) 가까운 위치(예: eastus)로 바꿉니다.

    az group create \
       --name <RESOURCE-GROUP_NAME> \
       --location <LOCATION>
    
  4. Azure Marketplace의 CentOS-HPC 7.8 이미지를 사용하는 HB120_v2 VM을 만듭니다. RESOURCE-GROUP_NAME을(를) 마지막 단계에서 만든 리소스 그룹으로 바꾸고 VM-NAME을(를) 선택한 고유한 이름으로 바꿉니다.

    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
    

    이 명령을 완료하는 데는 시간이 약간 걸릴 수 있습니다. VM이 만들어지면 JSON 출력의 일부가 VM의 publicIpAddress를 메모합니다. 이 IP 주소는 다음 단계에서 사용됩니다.

  5. 자동으로 생성된 SSH 키를 사용하여 HB120_v2 VM에 로그인합니다.

    ssh azureuser@<VM-PUBLIC-IP-ADDRESS>
    
  6. lstopo-no-graphics를 설치합니다(hwloc rpm).

    sudo yum install -y hwloc
    
  7. lstopo-no-graphics를 실행하여 NUMA 토폴로지를 확인합니다.

    lstopo-no-graphics 2>&1 | tee lstopo-no-graphics.out
    
  8. 코어 ID 및 해당 코어 ID가 속하는 NUMA 도메인 노드를 메모합니다.

HB120v2 코어 ID와 30개 NUMA 도메인 간 매핑은 다음과 같습니다. 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, 116-119.

이제 이 NUMA 매핑 정보를 사용하면 프로세스 및 스레드를 고정할 위치를 알 수 있습니다. 각 프로세스는 자체 NUMA 도메인에 매핑되어야 합니다. MPI 프로세스에 한해 NUMA 도메인당 프로세스를 1개, 2개, 3개 또는 4개로 실행해 봅니다. 어느 매핑의 성능이 가장 좋은지(예: 짧은 실제 소요 시간) 확인합니다. 하이브리드 병렬 애플리케이션의 경우 동일한 NUMA 도메인에서 프로세스와 해당 스레드를 그룹화합니다. 다음 MPI 단원에는 NUMA 도메인에 프로세스를 고정하는 데 사용할 MPI 명령줄 인수가 나와 있습니다.