다음을 통해 공유


MPI 애플리케이션을 실행하도록 HPC Pack을 사용하여 Windows RDMA 클러스터 설정

중요합니다

클래식 VM은 2023년 3월 1일에 사용 중지됩니다.

ASM에서 IaaS 리소스를 사용하는 경우 2023년 3월 1일까지 마이그레이션을 완료하세요. Azure Resource Manager의 다양한 기능 향상을 활용하려면 빨리 전환하는 것이 좋습니다.

자세한 내용은 2023년 3월 1일까지 IaaS 리소스를 Azure Resource Manager로 마이그레이션하기참조하세요.

Microsoft HPC 팩RDMA 지원 HPC VM 크기를 사용하여 Azure에서 Windows RDMA 클러스터를 설정하여 병렬 MPI(메시지 전달 인터페이스) 애플리케이션을 실행합니다. HPC 팩 클러스터에서 RDMA 지원 Windows Server 기반 노드를 설정하는 경우 MPI 애플리케이션은 RDMA(원격 직접 메모리 액세스) 기술을 기반으로 하는 Azure의 낮은 대기 시간, 높은 처리량 네트워크를 통해 효율적으로 통신합니다.

HPC 팩 클러스터 배포 옵션

Microsoft HPC 팩은 Windows 또는 Linux HPC 애플리케이션을 실행하기 위해 온-프레미스 또는 Azure에서 HPC 클러스터를 만들기 위해 추가 비용 없이 제공되는 도구입니다. HPC 팩에는 Windows용 메시지 전달 인터페이스(MS-MPI)의 Microsoft 구현을 위한 런타임 환경이 포함되어 있습니다. 지원되는 Windows Server 운영 체제를 실행하는 RDMA 지원 인스턴스와 함께 사용할 경우 HPC 팩은 Azure RDMA 네트워크에 액세스하는 Windows MPI 애플리케이션을 실행하는 효율적인 옵션을 제공합니다.

이 문서에서는 Microsoft HPC Pack 2012 R2를 사용하여 Windows RDMA 클러스터를 설정하는 자세한 지침에 대한 두 가지 시나리오와 링크를 소개합니다.

  • 시나리오 1. 계산 집약적 작업자 역할 인스턴스 배포(PaaS)
  • 시나리오 2. 계산 집약적 VM(IaaS)에서 컴퓨팅 노드 배포

시나리오 1: 계산 집약적 작업자 역할 인스턴스 배포(PaaS)

기존 HPC 팩 클러스터에서 PaaS(클라우드 서비스)에서 실행되는 Azure 작업자 역할 인스턴스(Azure 노드)에 추가 컴퓨팅 리소스를 추가합니다. HPC 팩에서 "Azure로 버스트"라고도 하는 이 기능은 작업자 역할 인스턴스에 대한 다양한 크기를 지원합니다. Azure 노드를 추가할 때 RDMA 지원 크기 중 하나를 지정합니다.

다음은 기존(일반적으로 온-프레미스) 클러스터에서 RDMA 지원 Azure 인스턴스로 버스트하는 고려 사항 및 단계입니다. 유사한 절차를 사용하여 Azure VM에 배포된 HPC 팩 헤드 노드에 작업자 역할 인스턴스를 추가합니다.

비고

HPC Pack을 사용하여 Azure로 버스트하는 자습서는 HPC 팩을 사용하여 하이브리드 클러스터 설정을 참조하세요. RDMA 지원 Azure 노드에 특별히 적용되는 다음 단계의 고려 사항에 유의하세요.

Azure로 버스트

단계

  1. HPC Pack 2012 R2 헤드 노드 배포 및 구성

    Microsoft 다운로드 센터에서 HPC 팩 설치 패키지를 다운로드합니다. Azure 버스트 배포를 준비하기 위한 요구 사항 및 지침은 Microsoft HPC Pack을 사용하여 Azure 작업자 인스턴스로 버스트를 참조하세요.

  2. Azure 구독에서 관리 인증서 구성

    헤드 노드와 Azure 간의 연결을 보호하도록 인증서를 구성합니다. 옵션 및 절차는 HPC 팩에 대한 Azure 관리 인증서를 구성하는 시나리오를 참조하세요. 테스트 배포의 경우 HPC 팩은 Azure 구독에 빠르게 업로드할 수 있는 기본 Microsoft HPC Azure 관리 인증서를 설치합니다.

  3. 새 클라우드 서비스 및 스토리지 계정 만들기

    Azure Portal을 사용하여 배포를 위한 클라우드 서비스(클래식) 및 스토리지 계정(클래식)을 만듭니다. 사용하려는 H 시리즈, A8 또는 A9 크기를 사용할 수 있는 지역에서 이러한 리소스를 만듭니다. 지역별 Azure 제품을 참조하세요.

  4. Azure 노드 템플릿 만들기

    HPC 클러스터 관리자에서 노드 템플릿 만들기 마법사를 사용합니다. 단계는 "Microsoft HPC 팩을 사용하여 Azure 노드를 배포하는 단계"에서 Azure 노드 템플릿 만들기 를 참조하세요.

    초기 테스트의 경우 템플릿에서 수동 가용성 정책을 구성하는 것이 좋습니다.

  5. 클러스터에 노드 추가

    HPC 클러스터 관리자에서 노드 추가 마법사를 사용합니다. 자세한 내용은 Windows HPC 클러스터에 Azure 노드 추가를 참조하세요.

    노드 크기를 지정할 때 RDMA 지원 인스턴스 크기 중 하나를 선택합니다.

    비고

    컴퓨팅 집약적 인스턴스를 사용하여 Azure로의 각 버스트에서 HPC 팩은 사용자가 지정한 Azure 작업자 역할 인스턴스 외에 최소 2개의 RDMA 지원 인스턴스(예: A8)를 프록시 노드로 자동으로 배포합니다. 프록시 노드는 구독에 할당된 코어를 사용하고 Azure 작업자 역할 인스턴스와 함께 요금이 발생합니다.

  6. 노드를 시작(프로비전)하고 온라인으로 가져와서 작업을 실행합니다.

    노드를 선택하고 HPC 클러스터 관리자에서 시작 작업을 사용합니다. 프로비전이 완료되면 노드를 선택하고 HPC 클러스터 관리자에서 온라인 가져오기 작업을 사용합니다. 노드는 작업을 실행할 준비가 된 것입니다.

  7. 클러스터에 작업 제출

    HPC 팩 작업 제출 도구를 사용하여 클러스터 작업을 실행합니다. Microsoft HPC 팩: 작업 관리를 참조하세요.

  8. 노드 중지(프로비전 해제)

    작업 실행이 완료되면 노드를 오프라인으로 전환하고 HPC 클러스터 관리자에서 중지 작업을 사용합니다.

시나리오 2: 계산 집약적 VM(IaaS)에 컴퓨팅 노드 배포

이 시나리오에서는 Azure 가상 네트워크의 VM에 HPC 팩 헤드 노드 및 클러스터 컴퓨팅 노드를 배포합니다. HPC 팩은 자동화된 배포 스크립트 및 Azure 빠른 시작 템플릿 을 포함하여 Azure VM에서 여러 배포 옵션을 제공합니다. 예를 들어 다음 고려 사항 및 단계는 HPC 팩 IaaS 배포 스크립트 를 사용하여 Azure에서 HPC Pack 2012 R2 클러스터의 배포를 자동화하는 방법을 안내합니다.

Azure VM의 클러스터

단계

  1. 클라이언트 컴퓨터에서 HPC 팩 IaaS 배포 스크립트를 실행하여 클러스터 헤드 노드 및 컴퓨팅 노드 VM 만들기

    Microsoft 다운로드 센터에서 HPC 팩 IaaS 배포 스크립트 패키지를 다운로드합니다.

    클라이언트 컴퓨터를 준비하려면 스크립트 구성 파일을 만들고 스크립트를 실행하려면 HPC 팩 IaaS 배포 스크립트를 사용하여 HPC 클러스터 만들기를 참조하세요.

    RDMA 지원 컴퓨팅 노드를 배포하기 위한 고려 사항은 고성능 컴퓨팅 VM 크기를 참조하고 다음 사항에 유의하세요.

    • 가상 네트워크: 사용하려는 H 시리즈, A8 또는 A9 크기를 사용할 수 있는 지역에 새 가상 네트워크를 지정합니다. 지역별 Azure 제품을 참조하세요.

    • Windows Server 운영 체제: RDMA 연결을 지원하려면 컴퓨팅 노드 VM에 대해 Windows Server 2012 R2와 같은 호환되는 Windows Server 운영 체제를 지정합니다.

    • 클라우드 서비스: 스크립트는 클래식 배포 모델을 사용하므로 클러스터 VM은 Azure 클라우드 서비스(ServiceName 구성 파일의 설정)를 사용하여 배포됩니다. 하나의 클라우드 서비스에 헤드 노드를 배포하고 다른 클라우드 서비스의 컴퓨팅 노드를 배포하는 것이 좋습니다.

    • 헤드 노드 크기: 이 시나리오에서는 헤드 노드에 대한 최소 A4(초대형) 크기를 고려합니다.

    • HpcVmDrivers 확장: 배포 스크립트는 Windows Server 운영 체제를 사용하여 크기 A8 또는 A9 컴퓨팅 노드를 배포할 때 Azure VM 에이전트 및 HpcVmDrivers 확장을 자동으로 설치합니다. HpcVmDrivers는 RDMA 네트워크에 연결할 수 있도록 컴퓨팅 노드 VM에 드라이버를 설치합니다. RDMA 지원 H 시리즈 VM에서 HpcVmDrivers 확장을 수동으로 설치해야 합니다. 고성능 컴퓨팅 VM 크기를 참조하세요.

    • 클러스터 네트워크 구성: 배포 스크립트는 토폴로지 5(엔터프라이즈 네트워크의 모든 노드)에서 HPC 팩 클러스터를 자동으로 설정합니다. 이 토폴로지는 VM의 모든 HPC 팩 클러스터 배포에 필요합니다. 클러스터 네트워크 토폴로지 나중에 변경하지 마세요.

  2. 컴퓨팅 노드를 온라인 상태로 설정하여 작업 실행

    노드를 선택하고 HPC 클러스터 관리자에서 온라인 가져오기 작업을 사용합니다. 노드는 작업을 실행할 준비가 된 것입니다.

  3. 클러스터에 작업 제출

    헤드 노드에 연결하여 작업을 제출하거나 이 작업을 수행하도록 온-프레미스 컴퓨터를 설정합니다. 자세한 내용은 Azure의 HPC 클러스터에 작업 제출을 참조하세요.

  4. 노드를 오프라인 상태로 전환하고 중지(할당 해제)하세요

    작업 실행이 완료되면 HPC 클러스터 관리자에서 노드를 오프라인으로 전환합니다. 그런 다음, Azure 관리 도구를 사용하여 종료합니다.

클러스터에서 MPI 애플리케이션 실행

예: HPC 팩 클러스터에서 mpipingpong 실행

RDMA 지원 인스턴스의 HPC 팩 배포를 확인하려면 클러스터에서 HPC 팩 mpipingpong 명령을 실행합니다. mpipingpong 은 RDMA 지원 애플리케이션 네트워크에 대한 대기 시간 및 처리량 측정 및 통계를 계산하기 위해 쌍을 이루는 노드 간에 데이터 패킷을 반복적으로 보냅니다. 이 예제에서는 클러스터 mpiexec 명령을 사용하여 MPI 작업(이 경우 mpipingpong)을 실행하는 일반적인 패턴을 보여 줍니다.

이 예는 "Azure로 버스트" 구성에서 Azure 노드를 추가한 것으로 가정합니다([시나리오 1](#scenario-1.-deploy-compute-intensive-worker-role-instances-(PaaS) 참조). Azure VM 클러스터에 HPC 팩을 배포한 경우 명령 구문을 수정하여 다른 노드 그룹을 지정하고 추가 환경 변수를 설정하여 네트워크 트래픽을 RDMA 네트워크로 전달해야 합니다.

클러스터에서 mpipingpong을 실행하려면 다음을 수행합니다.

  1. 헤드 노드 또는 올바르게 구성된 클라이언트 컴퓨터에서 명령 프롬프트를 엽니다.

  2. 4개 노드의 Azure 버스트 배포에서 노드 쌍 간의 대기 시간을 예측하려면 다음 명령을 입력하여 작은 패킷 크기와 많은 반복으로 mpipingpong을 실행하는 작업을 제출합니다.

    job submit /nodegroup:azurenodes /numnodes:4 mpiexec -c 1 -affinity mpipingpong -p 1:100000 -op -s nul
    

    이 명령은 제출된 작업의 ID를 반환합니다.

    Azure VM에 배포된 HPC 팩 클러스터를 배포한 경우 단일 클라우드 서비스에 배포된 컴퓨팅 노드 VM이 포함된 노드 그룹을 지정하고 다음과 같이 mpiexec 명령을 수정합니다.

    job submit /nodegroup:vmcomputenodes /numnodes:4 mpiexec -c 1 -affinity -env MSMPI_DISABLE_SOCK 1 -env MSMPI_PRECONNECT all -env MPICH_NETMASK 172.16.0.0/255.255.0.0 mpipingpong -p 1:100000 -op -s nul
    
  3. 작업이 완료되면 출력(이 경우 작업의 작업 1 출력)을 보려면 다음을 입력합니다.

    task view <JobID>.1
    

    여기서 <JobID> 는 제출된 작업의 ID입니다.

    출력에는 다음과 유사한 대기 시간 결과가 포함됩니다.

    핑퐁 지연 시간

  4. Azure 버스트 노드 쌍 간의 처리량을 예측하려면 다음 명령을 입력하여 큰 패킷 크기와 몇 가지 반복으로 mpipingpong을 실행하는 작업을 제출합니다.

    job submit /nodegroup:azurenodes /numnodes:4 mpiexec -c 1 -affinity mpipingpong -p 4000000:1000 -op -s nul
    

    이 명령은 제출된 작업의 ID를 반환합니다.

    Azure VM에 배포된 HPC 팩 클러스터에서 2단계에서 설명한 대로 명령을 수정합니다.

  5. 작업이 완료되면 출력을 보려면(이 경우 작업의 작업 1의 출력) 다음을 입력합니다.

    task view <JobID>.1
    

    출력에는 다음과 유사한 처리량 결과가 포함됩니다.

    핑퐁 처리량

MPI 애플리케이션 고려 사항

다음은 Azure에서 HPC Pack을 사용하여 MPI 애플리케이션을 실행하기 위한 고려 사항입니다. 일부는 Azure 노드의 배포("Azure로 버스트" 구성에 추가된 작업자 역할 인스턴스)에만 적용됩니다.

  • 클라우드 서비스의 작업자 역할 인스턴스는 Azure에서 예고 없이 주기적으로 다시 프로비전됩니다(예: 시스템 유지 관리의 경우 또는 인스턴스가 실패하는 경우). 인스턴스가 MPI 작업을 실행하는 동안 다시 프로비전되는 경우 인스턴스는 데이터를 잃고 처음 배포되었을 때 상태로 돌아갑니다. 이로 인해 MPI 작업이 실패할 수 있습니다. 단일 MPI 작업에 사용하는 노드가 많을수록 작업이 실행되는 동안 인스턴스 중 하나가 다시 프로비전될 가능성이 높아집니다. 또한 배포에서 단일 노드를 파일 서버로 지정하는 경우 이를 고려합니다.

  • Azure에서 MPI 작업을 실행하려면 RDMA 지원 인스턴스를 사용할 필요가 없습니다. HPC 팩에서 지원하는 모든 인스턴스 크기를 사용할 수 있습니다. 그러나 RDMA 지원 인스턴스는 노드를 연결하는 네트워크의 대기 시간 및 대역폭에 민감한 비교적 대규모 MPI 작업을 실행하는 데 권장됩니다. 다른 크기를 사용하여 대기 시간 및 대역폭에 민감한 MPI 작업을 실행하는 경우 단일 작업이 몇 노드에서만 실행되는 작은 작업을 실행하는 것이 좋습니다.

  • Azure 인스턴스에 배포된 애플리케이션에는 애플리케이션과 연결된 라이선스 조건이 적용됩니다. 클라우드에서 실행하기 위해 라이선스나 기타 제한 사항에 대한 상용 애플리케이션을 공급 업체에 확인합니다. 모든 공급업체가 종량제 라이선스를 제공하는 것은 아닙니다.

  • Azure 인스턴스는 온-프레미스 노드, 공유 및 라이선스 서버에 액세스하기 위한 추가 설정이 필요합니다. 예를 들어 Azure 노드가 온-프레미스 라이선스 서버에 액세스할 수 있도록 하려면 사이트 간 Azure 가상 네트워크를 구성할 수 있습니다.

  • Azure 인스턴스에서 MPI 애플리케이션을 실행하려면 hpcfwutil 명령을 실행하여 각 MPI 애플리케이션을 인스턴스의 Windows 방화벽에 등록합니다. 이렇게 하면 방화벽에 의해 동적으로 할당된 포트에서 MPI 통신이 수행됩니다.

    비고

    Azure 배포에 버스트의 경우 클러스터에 추가된 모든 새 Azure 노드에서 자동으로 실행되도록 방화벽 예외 명령을 구성할 수도 있습니다. hpcfwutil 명령을 실행하고 애플리케이션이 작동하는지 확인한 후 Azure 노드의 시작 스크립트에 명령을 추가합니다. 자세한 내용은 Azure Nodes에 대한 시작 스크립트 사용을 참조하세요.

  • HPC 팩은 CCP_MPI_NETMASK 클러스터 환경 변수를 사용하여 MPI 통신에 허용되는 주소 범위를 지정합니다. HPC Pack 2012 R2부터 CCP_MPI_NETMASK 클러스터 환경 변수는 도메인에 가입된 클러스터 컴퓨팅 노드(온-프레미스 또는 Azure VM) 간의 MPI 통신에만 영향을 줍니다. 변수는 Azure 구성에 버스트에 추가된 노드에서 무시됩니다.

  • MPI 작업은 서로 다른 클라우드 서비스에 배포된 Azure 인스턴스 간에 실행할 수 없습니다(예: 서로 다른 노드 템플릿을 사용하는 Azure 배포에서의 버스트 또는 여러 클라우드 서비스에 걸쳐 배포된 Azure VM 컴퓨팅 노드). 여러 노드 템플릿으로 시작하는 여러 Azure 노드 배포가 있는 경우 MPI 작업은 하나의 Azure 노드 집합에서만 실행되어야 합니다.

  • 클러스터에 Azure 노드를 추가하고 온라인 상태로 설정하면 HPC 작업 스케줄러 서비스가 즉시 노드에서 작업을 시작하려고 합니다. 워크로드의 일부만 Azure에서 실행할 수 있는 경우 Azure에서 실행할 수 있는 작업 유형을 정의하기 위해 작업 템플릿을 업데이트하거나 만들어야 합니다. 예를 들어 작업 템플릿을 사용하여 제출된 작업이 Azure 노드에서만 실행되도록 하려면 노드 그룹 속성을 작업 템플릿에 추가하고 필요한 값으로 AzureNodes를 선택합니다. Azure 노드에 대한 사용자 지정 그룹을 만들려면 Add-HpcGroup HPC PowerShell cmdlet을 사용합니다.

다음 단계