Konfigurera ett Windows RDMA-kluster med HPC Pack för att köra MPI-program

Viktigt

Klassiska virtuella datorer dras tillbaka den 1 mars 2023.

Om du använder IaaS-resurser från ASM slutför du migreringen senast den 1 mars 2023. Vi rekommenderar att du gör bytet tidigare för att dra nytta av de många funktionsförbättringarna i Azure Resource Manager.

Mer information finns i Migrera dina IaaS-resurser till Azure Resource Manager senast den 1 mars 2023.

Konfigurera ett Windows RDMA-kluster i Azure med Microsoft HPC Pack - och RDMA-kompatibla HPC VM-storlekar för att köra parallella MPI-program (Message Passing Interface). När du konfigurerar RDMA-kompatibla Windows Server-baserade noder i ett HPC Pack-kluster kommunicerar MPI-program effektivt via ett nätverk med låg svarstid och högt dataflöde i Azure som baseras på RDMA-teknik (Remote Direct Memory Access).

Distributionsalternativ för HPC Pack-kluster

Microsoft HPC Pack är ett verktyg som tillhandahålls utan extra kostnad för att skapa HPC-kluster lokalt eller i Azure för att köra Windows- eller Linux HPC-program. HPC Pack innehåller en körningsmiljö för Microsoft-implementeringen av gränssnittet för meddelandeöverföring för Windows (MS-MPI). När HPC Pack används med RDMA-kompatibla instanser som kör ett Windows Server-operativsystem som stöds är det ett effektivt alternativ för att köra Windows MPI-program som har åtkomst till Azure RDMA-nätverket.

Den här artikeln innehåller två scenarier och länkar till detaljerad vägledning för att konfigurera ett Windows RDMA-kluster med Microsoft HPC Pack 2012 R2.

  • Scenario 1. Distribuera beräkningsintensiva arbetsrollinstanser (PaaS)
  • Scenario 2. Distribuera beräkningsnoder i beräkningsintensiva virtuella datorer (IaaS)

Scenario 1: Distribuera beräkningsintensiva arbetsrollinstanser (PaaS)

Från ett befintligt HPC Pack-kluster lägger du till extra beräkningsresurser i Azure Worker-rollinstanser (Azure-noder) som körs i en molntjänst (PaaS). Den här funktionen, som även kallas "burst to Azure" från HPC Pack, stöder en rad storlekar för arbetsrollinstanserna. När du lägger till Azure-noderna anger du en av de RDMA-kompatibla storlekarna.

Följande är överväganden och steg för att burst till RDMA-kompatibla Azure-instanser från ett befintligt (vanligtvis lokalt) kluster. Använd liknande procedurer för att lägga till arbetsrollinstanser till en HPC Pack-huvudnod som distribueras på en virtuell Azure-dator.

Anteckning

En självstudiekurs om att burst-överföra till Azure med HPC Pack finns i Konfigurera ett hybridkluster med HPC Pack. Observera övervägandena i följande steg som gäller specifikt för RDMA-kompatibla Azure-noder.

Burst till Azure

Steg

  1. Distribuera och konfigurera en HPC Pack 2012 R2-huvudnod

    Ladda ned HPC Pack-installationspaketet från Microsoft Download Center. Krav och instruktioner för att förbereda för en Azure Burst-distribution finns i Burst to Azure Worker Instances with Microsoft HPC Pack (Burst to Azure Worker Instances with Microsoft HPC Pack).

  2. Konfigurera ett hanteringscertifikat i Azure-prenumerationen

    Konfigurera ett certifikat för att skydda anslutningen mellan huvudnoden och Azure. Alternativ och procedurer finns i Scenarier för att konfigurera Azure Management Certificate for HPC Pack. För testdistributioner installerar HPC Pack ett Microsoft HPC Azure Management-standardcertifikat som du snabbt kan ladda upp till din Azure-prenumeration.

  3. Skapa en ny molntjänst och ett lagringskonto

    Använd Azure Portal för att skapa en molntjänst (klassisk) och ett lagringskonto (klassiskt) för distributionen. Skapa dessa resurser i en region där storleken H-serien, A8 eller A9 som du vill använda är tillgänglig. Se Azure-produkter efter region.

  4. Skapa en Azure-nodmall

    Använd guiden Skapa nodmall i HPC Cluster Manager. Anvisningar finns i Skapa en Azure-nodmall i "Steg för att distribuera Azure-noder med Microsoft HPC Pack".

    För inledande tester rekommenderar vi att du konfigurerar en princip för manuell tillgänglighet i mallen.

  5. Lägga till noder i klustret

    Använd guiden Lägg till nod i HPC Cluster Manager. Mer information finns i Lägga till Azure-noder i Windows HPC-klustret.

    När du anger storleken på noderna väljer du någon av de RDMA-kompatibla instansstorlekarna.

    Anteckning

    I varje burst till Azure-distribution med beräkningsintensiva instanser distribuerar HPC Pack automatiskt minst två RDMA-kompatibla instanser (till exempel A8) som proxynoder, utöver de Azure Worker-rollinstanser som du anger. Proxynoderna använder kärnor som allokeras till prenumerationen och debiteras tillsammans med Azure Worker-rollinstanserna.

  6. Starta (etablera) noderna och ta dem online för att köra jobb

    Välj noderna och använd åtgärden Start i HPC Cluster Manager. När etableringen är klar väljer du noderna och använder åtgärden Bring Online i HPC Cluster Manager. Noderna är redo att köra jobb.

  7. Skicka jobb till klustret

    Använd HPC Pack-jobböverföringsverktyg för att köra klusterjobb. Se Microsoft HPC Pack: Jobbhantering.

  8. Stoppa (avetablera) noderna

    När du är klar med att köra jobb tar du noderna offline och använder åtgärden Stoppa i HPC Cluster Manager.

Scenario 2: Distribuera beräkningsnoder i beräkningsintensiva virtuella datorer (IaaS)

I det här scenariot distribuerar du HPC Pack-huvudnoden och klusterberäkningsnoderna på virtuella datorer i ett virtuellt Azure-nätverk. HPC Pack innehåller flera distributionsalternativ på virtuella Azure-datorer, inklusive automatiserade distributionsskript och Azure-snabbstartsmallar. Följande överväganden och steg hjälper dig till exempel att använda HPC Pack IaaS-distributionsskriptet för att automatisera distributionen av ett HPC Pack 2012 R2-kluster i Azure.

Kluster i virtuella Azure-datorer

Steg

  1. Skapa en klusterhuvudnod och virtuella datorer med beräkningsnoder genom att köra HPC Pack IaaS-distributionsskriptet på en klientdator

    Ladda ned HPC Pack IaaS Deployment Script-paketet från Microsoft Download Center.

    Om du vill förbereda klientdatorn skapar du skriptkonfigurationsfilen och kör skriptet i Skapa ett HPC-kluster med IaaS-distributionsskriptet för HPC Pack.

    Mer information om hur du distribuerar RDMA-kompatibla beräkningsnoder finns i VM-storlekar med höga prestanda och observera följande:

    • Virtuellt nätverk: Ange ett nytt virtuellt nätverk i en region där storleken H-serien, A8 eller A9 som du vill använda är tillgänglig. Se Azure-produkter efter region.

    • Windows Server-operativsystem: För att stödja RDMA-anslutning anger du ett kompatibelt Windows Server-operativsystem, till exempel Windows Server 2012 R2 för de virtuella datorerna för beräkningsnoden.

    • Molntjänster: Eftersom skriptet använder den klassiska distributionsmodellen distribueras de virtuella klusterdatorerna med hjälp av Azure-molntjänster (ServiceName inställningar i konfigurationsfilen). Vi rekommenderar att du distribuerar huvudnoden i en molntjänst och dina beräkningsnoder i en annan molntjänst.

    • Huvudnodstorlek: I det här scenariot bör du överväga en storlek på minst A4 (extra stor) för huvudnoden.

    • HpcVmDrivers-tillägget: Distributionsskriptet installerar Azure VM-agenten och HpcVmDrivers-tillägget automatiskt när du distribuerar storlek A8- eller A9-beräkningsnoder med ett Windows Server-operativsystem. HpcVmDrivers installerar drivrutiner på de virtuella datorerna för beräkningsnoden så att de kan ansluta till RDMA-nätverket. På RDMA-kompatibla virtuella datorer i H-serien måste du installera HpcVmDrivers-tillägget manuellt. Se Vm-storlekar för beräkning med höga prestanda.

    • Konfiguration av klusternätverk: Distributionsskriptet konfigurerar automatiskt HPC Pack-klustret i topologi 5 (alla noder i Enterprise-nätverket). Den här topologin krävs för alla HPC Pack-klusterdistributioner på virtuella datorer. Ändra inte klusternätverkstopologin senare.

  2. Ta beräkningsnoderna online för att köra jobb

    Välj noderna och använd åtgärden Bring Online i HPC Cluster Manager. Noderna är redo att köra jobb.

  3. Skicka jobb till klustret

    Anslut till huvudnoden för att skicka jobb eller konfigurera en lokal dator för att göra detta. Mer information finns i Skicka jobb till ett HPC-kluster i Azure.

  4. Ta noderna offline och stoppa (frigöra) dem

    När du är klar med att köra jobb tar du noderna offline i HPC Cluster Manager. Använd sedan Azure-hanteringsverktyg för att stänga av dem.

Köra MPI-program i klustret

Exempel: Köra mpipingpong i ett HPC Pack-kluster

Om du vill verifiera en HPC Pack-distribution av RDMA-kompatibla instanser kör du kommandot HPC Pack mpipingpong i klustret. mpipingpong skickar datapaket mellan parkopplade noder upprepade gånger för att beräkna svarstider och dataflödesmått och statistik för det RDMA-aktiverade programnätverket. Det här exemplet visar ett typiskt mönster för att köra ett MPI-jobb (i det här fallet mpipingpong) med hjälp av kommandot cluster mpiexec .

Det här exemplet förutsätter att du har lagt till Azure-noder i en "burst to Azure"-konfiguration ([Scenario 1](#scenario-1.-deploy-compute-intensive-worker-role-instances--(PaaS) i den här artikeln). Om du har distribuerat HPC Pack i ett kluster med virtuella Azure-datorer måste du ändra kommandosyntaxen för att ange en annan nodgrupp och ange ytterligare miljövariabler för att dirigera nätverkstrafik till RDMA-nätverket.

Så här kör du mpipingpong i klustret:

  1. Öppna en kommandotolk på huvudnoden eller på en korrekt konfigurerad klientdator.

  2. Om du vill beräkna svarstiden mellan nodpar i en Azure Burst-distribution av fyra noder skriver du följande kommando för att skicka ett jobb för att köra mpipingpong med en liten paketstorlek och många iterationer:

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

    Kommandot returnerar ID:t för jobbet som skickas.

    Om du har distribuerat HPC Pack-klustret som distribuerats på virtuella Azure-datorer anger du en nodgrupp som innehåller virtuella datorer för beräkningsnoder som distribuerats i en enda molntjänst och ändrar kommandot mpiexec på följande sätt:

    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. När jobbet har slutförts skriver du följande för att visa utdata (i det här fallet utdata för uppgift 1 i jobbet)

    task view <JobID>.1
    

    där <JobID> är ID för jobbet som skickades.

    Utdata innehåller svarstidsresultat som liknar följande.

    Ping pong-svarstid

  4. Om du vill beräkna dataflödet mellan par med Azure Burst-noder skriver du följande kommando för att skicka ett jobb för att köra mpipingpong med en stor paketstorlek och några iterationer:

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

    Kommandot returnerar ID:t för jobbet som skickas.

    Ändra kommandot enligt beskrivningen i steg 2 i ett HPC Pack-kluster som distribuerats på virtuella Azure-datorer.

  5. När jobbet har slutförts skriver du följande för att visa utdata (i det här fallet utdata för uppgift 1 i jobbet):

    task view <JobID>.1
    

    Utdata innehåller dataflödesresultat som liknar följande.

    Ping pong-dataflöde

Överväganden för MPI-program

Följande är överväganden för att köra MPI-program med HPC Pack i Azure. Vissa gäller endast för distributioner av Azure-noder (arbetsrollinstanser som lagts till i en "burst to Azure"-konfiguration).

  • Arbetsrollinstanser i en molntjänst återskapas regelbundet utan föregående meddelande av Azure (till exempel för systemunderhåll eller om en instans misslyckas). Om en instans återskapas när den kör ett MPI-jobb förlorar instansen sina data och återgår till tillståndet när den först distribuerades, vilket kan göra att MPI-jobbet misslyckas. Ju fler noder du använder för ett enda MPI-jobb, och ju längre jobbet körs, desto mer troligt är det att en av instanserna återskapas medan ett jobb körs. Tänk också på detta om du anger en enskild nod i distributionen som en filserver.

  • Om du vill köra MPI-jobb i Azure behöver du inte använda RDMA-kompatibla instanser. Du kan använda valfri instansstorlek som stöds av HPC Pack. Rdma-kompatibla instanser rekommenderas dock för att köra relativt storskaliga MPI-jobb som är känsliga för svarstiden och bandbredden för nätverket som ansluter noderna. Om du använder andra storlekar för att köra svarstids- och bandbreddskänsliga MPI-jobb rekommenderar vi att du kör små jobb, där en enda uppgift bara körs på några få noder.

  • Program som distribueras till Azure-instanser omfattas av licensvillkoren som är associerade med programmet. Fråga leverantören av kommersiella program om licensiering krävs eller om det finns andra begränsningar för körning i molnet. Alla leverantörer erbjuder inte licensiering enligt modellen Betala per användning.

  • Azure-instanser behöver konfigureras ytterligare för att få åtkomst till lokala noder, resurser och licensservrar. Om du till exempel vill att Azure-noderna ska få åtkomst till en lokal licensserver kan du konfigurera ett virtuellt Azure-nätverk från plats till plats.

  • Om du vill köra MPI-program på Azure-instanser registrerar du varje MPI-program med Windows-brandväggen på instanserna genom att köra kommandot hpcfwutil . Detta gör att MPI-kommunikation kan ske på en port som tilldelas dynamiskt av brandväggen.

    Anteckning

    För burst till Azure-distributioner kan du också konfigurera ett brandväggsfelkommando så att det körs automatiskt på alla nya Azure-noder som läggs till i klustret. När du har kört kommandot hpcfwutil och kontrollera att programmet fungerar lägger du till kommandot i ett startskript för dina Azure-noder. Mer information finns i Använda ett startskript för Azure-noder.

  • HPC Pack använder variabeln CCP_MPI_NETMASK klustermiljö för att ange ett intervall med godkända adresser för MPI-kommunikation. Från och med HPC Pack 2012 R2 påverkar variabeln CCP_MPI_NETMASK klustermiljö endast MPI-kommunikation mellan domänanslutna klusterberäkningsnoder (antingen lokala eller i virtuella Azure-datorer). Variabeln ignoreras av noder som läggs till i en burst i Azure-konfigurationen.

  • MPI-jobb kan inte köras över Azure-instanser som distribueras i olika molntjänster (till exempel i burst till Azure-distributioner med olika nodmallar eller Azure VM-beräkningsnoder som distribueras i flera molntjänster). Om du har flera Azure-noddistributioner som startas med olika nodmallar måste MPI-jobbet bara köras på en uppsättning Azure-noder.

  • När du lägger till Azure-noder i klustret och kopplar dem online försöker HPC Job Scheduler Service omedelbart starta jobb på noderna. Om endast en del av din arbetsbelastning kan köras i Azure kontrollerar du att du uppdaterar eller skapar jobbmallar för att definiera vilka jobbtyper som kan köras i Azure. Om du till exempel vill se till att jobb som skickas med en jobbmall endast körs på Azure-noder lägger du till egenskapen Node Groups i jobbmallen och väljer AzureNodes som det värde som krävs. Om du vill skapa anpassade grupper för dina Azure-noder använder du cmdleten Add-HpcGroup HPC PowerShell.

Nästa steg