Kör OpenFoam med Microsoft HPC Pack på ett Linux RDMA-kluster i Azure
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.
Den här artikeln visar ett sätt att köra OpenFoam på virtuella Azure-datorer. Här distribuerar du ett Microsoft HPC Pack-kluster med Linux-beräkningsnoder i Azure och kör ett OpenFoam-jobb med Intel MPI. Du kan använda RDMA-kompatibla virtuella Azure-datorer för beräkningsnoderna så att beräkningsnoderna kommunicerar över Azure RDMA-nätverket. Andra alternativ för att köra OpenFoam i Azure är fullständigt konfigurerade kommersiella avbildningar som är tillgängliga på Marketplace, till exempel UberClouds OpenFoam 2.3 på CentOS 6 och genom att köras på Azure Batch.
Anteckning
Azure har två olika distributionsmodeller för att skapa och arbeta med resurser: Resource Manager och klassisk. Den här artikeln täcker bägge modellerna, men Microsoft rekommenderar de flesta nya distributioner att använda Resource Manager-modellen.
OpenFOAM (för Open Field Operation and Manipulation) är ett CFD-programvarupaket (computational fluid dynamics) med öppen källkod som används i stor utsträckning inom teknik och vetenskap, både i kommersiella och akademiska organisationer. Den innehåller verktyg för meshing, särskilt snappyHexMesh, en parallelliserad mesher för komplexa CAD-geometrier och för för- och efterbearbetning. Nästan alla processer körs parallellt, vilket gör det möjligt för användare att dra full nytta av datormaskinvara till sitt förfogande.
Microsoft HPC Pack innehåller funktioner för att köra storskaliga HPC- och parallella program, inklusive MPI-program, i kluster med virtuella Microsoft Azure-datorer. HPC Pack stöder också körning av Linux HPC-program på virtuella Linux-beräkningsnoder som distribuerats i ett HPC Pack-kluster. Se Kom igång med Linux-beräkningsnoder i ett HPC Pack-kluster i Azure för en introduktion till att använda Linux-beräkningsnoder med HPC Pack.
Anteckning
Den här artikeln illustrerar hur du kör en Linux MPI-arbetsbelastning med HPC Pack. Det förutsätter att du känner till Linux-systemadministration och kör MPI-arbetsbelastningar i Linux-kluster. Om du använder versioner av MPI och OpenFOAM som skiljer sig från de som visas i den här artikeln kan du behöva ändra vissa installations- och konfigurationssteg.
Förutsättningar
HPC Pack-kluster med RDMA-kompatibla Linux-beräkningsnoder – Distribuera ett HPC Pack-kluster med storlek A8, A9, H16r eller H16rm Linux-beräkningsnoder med antingen en Azure Resource Manager-mall eller ett Azure PowerShell skript. Se Kom igång med Linux-beräkningsnoder i ett HPC Pack-kluster i Azure för förhandskraven och stegen för båda alternativen. Om du väljer distributionsalternativet för PowerShell-skript kan du läsa exempelkonfigurationsfilen i exempelfilerna i slutet av den här artikeln. Använd den här konfigurationen för att distribuera ett Azure-baserat HPC Pack-kluster med storleken A8 Windows Server 2012 R2-huvudnod och 2 A8 SUSE Linux Enterprise Server 12-beräkningsnoder. Ersätt lämpliga värden för din prenumeration och dina tjänstnamn.
Ytterligare saker att veta
- Information om krav för Linux RDMA-nätverk i Azure finns i Vm-storlekar för beräkning med höga prestanda.
- Om du använder distributionsalternativet powershell-skript distribuerar du alla Linux-beräkningsnoder i en molntjänst för att använda RDMA-nätverksanslutningen.
- När du har distribuerat Linux-noderna ansluter du via SSH för att utföra ytterligare administrativa uppgifter. Hitta SSH-anslutningsinformationen för varje virtuell Linux-dator i Azure Portal.
Intel MPI – Om du vill köra OpenFOAM på SLES 12 HPC-beräkningsnoder i Azure måste du installera Intel MPI Library 5-körningen från Intel.com-platsen. (Intel MPI 5 är förinstallerat på CentOS-baserade HPC-avbildningar.) I ett senare steg, om det behövs, installerar du Intel MPI på dina Linux-beräkningsnoder. Om du vill förbereda dig för det här steget följer du länken i bekräftelsemeddelandet till den relaterade webbsidan när du har registrerat dig hos Intel. Kopiera sedan nedladdningslänken för .tgz-filen för lämplig version av Intel MPI. Den här artikeln är baserad på Intel MPI version 5.0.3.048.
OpenFOAM-källpaket – Ladda ned OpenFOAM-källkodspaketet för Linux från OpenFOAM Foundation-webbplatsen. Den här artikeln är baserad på Källpaket version 2.3.1, tillgänglig för nedladdning som OpenFOAM-2.3.1.tgz. Följ anvisningarna senare i den här artikeln för att packa upp och kompilera OpenFOAM på Linux-beräkningsnoderna.
EnSight (valfritt) – Om du vill se resultatet av din OpenFOAM-simulering laddar du ned och installerar Visualiserings- och analysprogrammet för EnSight . Licensiering och nedladdningsinformation finns på EnSight-webbplatsen.
Konfigurera ömsesidigt förtroende mellan beräkningsnoder
Om du kör ett jobb mellan noder på flera Linux-noder måste noderna lita på varandra ( via rsh eller ssh). När du skapar HPC Pack-klustret med Microsoft HPC Pack IaaS-distributionsskriptet konfigurerar skriptet automatiskt permanent ömsesidigt förtroende för det administratörskonto som du anger. För icke-administratörsanvändare som du skapar i klustrets domän måste du konfigurera tillfälligt ömsesidigt förtroende mellan noderna när ett jobb allokeras till dem och förstöra relationen när jobbet har slutförts. Om du vill upprätta förtroende för varje användare anger du ett RSA-nyckelpar till klustret som HPC Pack använder för förtroenderelationen.
Generera ett RSA-nyckelpar
Det är enkelt att generera ett RSA-nyckelpar som innehåller en offentlig nyckel och en privat nyckel genom att köra kommandot Linux ssh-keygen .
Logga in på en Linux-dator.
Kör följande kommando:
ssh-keygen -t rsa
Anteckning
Tryck på Retur för att använda standardinställningarna tills kommandot har slutförts. Ange inte en lösenfras här; när du uppmanas att ange ett lösenord trycker du bara på Retur.
Ändra katalogen till katalogen ~/.ssh. Den privata nyckeln lagras i id_rsa och den offentliga nyckeln i id_rsa.pub.
Lägg till nyckelparet i HPC Pack-klustret
Skapa en fjärrskrivbordsanslutning till huvudnoden med ditt HPC Pack-administratörskonto (det administratörskonto som du konfigurerade när du körde distributionsskriptet).
Använd windows server-standardprocedurer för att skapa ett domänanvändarkonto i klustrets Active Directory-domän. Använd till exempel verktyget Active Directory-användare och datorer på huvudnoden. Exemplen i den här artikeln förutsätter att du skapar en domänanvändare med namnet hpclab\hpcuser.
Skapa en fil med namnet C:\cred.xml och kopiera RSA-nyckeldata till den. Ett exempel cred.xml filen finns i slutet av den här artikeln.
<ExtendedData> <PrivateKey>Copy the contents of private key here</PrivateKey> <PublicKey>Copy the contents of public key here</PublicKey> </ExtendedData>
Öppna en kommandotolk och ange följande kommando för att ange autentiseringsuppgifterna för hpclab\hpcuser-kontot. Du använder parametern extendeddata för att skicka namnet på C:\cred.xml fil som du skapade för nyckeldata.
hpccred setcreds /extendeddata:c:\cred.xml /user:hpclab\hpcuser /password:<UserPassword>
Det här kommandot slutförs utan utdata. När du har angett autentiseringsuppgifterna för de användarkonton som du behöver för att köra jobb lagrar du filen cred.xml på en säker plats eller tar bort den.
Om du genererade RSA-nyckelparet på en av dina Linux-noder, kom ihåg att ta bort nycklarna när du har använt dem. Om HPC Pack hittar en befintlig id_rsa-fil eller id_rsa.pub-fil konfigureras inte ömsesidigt förtroende.
Viktigt
Vi rekommenderar inte att du kör ett Linux-jobb som klusteradministratör i ett delat kluster, eftersom ett jobb som skickas av en administratör körs under rotkontot på Linux-noderna. Ett jobb som skickas av en icke-administratörsanvändare körs dock under ett lokalt Linux-användarkonto med samma namn som jobbanvändaren. I det här fallet konfigurerar HPC Pack ömsesidigt förtroende för den här Linux-användaren över de noder som allokerats till jobbet. Du kan konfigurera Linux-användaren manuellt på Linux-noderna innan du kör jobbet, eller så skapar HPC Pack användaren automatiskt när jobbet skickas. Om HPC Pack skapar användaren tar HPC Pack bort det när jobbet har slutförts. För att minska säkerhetshoten tar HPC Pack bort nycklarna när jobbet har slutförts.
Konfigurera en filresurs för Linux-noder
Konfigurera nu en standard-SMB-resurs på en mapp på huvudnoden. Om du vill tillåta att Linux-noderna får åtkomst till programfiler med en gemensam sökväg monterar du den delade mappen på Linux-noderna. Om du vill kan du använda ett annat fildelningsalternativ, till exempel en Azure Files resurs – rekommenderas för många scenarier – eller en NFS-resurs. Se information om fildelning och detaljerade steg i Kom igång med Linux-beräkningsnoder i ett HPC Pack-kluster i Azure.
Skapa en mapp på huvudnoden och dela den till Alla genom att ange läs-/skrivbehörigheter. Du kan till exempel dela C:\OpenFOAM på huvudnoden som \\SUSE12RDMA-HN\OpenFOAM. Här är SUSE12RDMA-HN värdnamnet för huvudnoden.
Öppna ett Windows PowerShell fönster och kör följande kommandon:
clusrun /nodegroup:LinuxNodes mkdir -p /openfoam clusrun /nodegroup:LinuxNodes mount -t cifs //SUSE12RDMA-HN/OpenFOAM /openfoam -o vers=2.1`,username=<username>`,password='<password>'`,dir_mode=0777`,file_mode=0777
Det första kommandot skapar en mapp med namnet /openfoam på alla noder i gruppen LinuxNodes. Det andra kommandot monterar den delade mappen //SUSE12RDMA-HN/OpenFOAM på Linux-noderna med dir_mode och file_mode bitar inställda på 777. Användarnamnet och lösenordet i kommandot ska vara autentiseringsuppgifterna för en användare på huvudnoden.
Anteckning
Symbolen "'" i det andra kommandot är en escape-symbol för PowerShell. "'," betyder "," (kommatecken) är en del av kommandot.
Installera MPI och OpenFOAM
Om du vill köra OpenFOAM som ett MPI-jobb i RDMA-nätverket måste du kompilera OpenFOAM med Intel MPI-biblioteken.
Kör först flera clusrun-kommandon för att installera Intel MPI-bibliotek (om de inte redan är installerade) och OpenFOAM på dina Linux-noder. Använd huvudnodresursen som konfigurerades tidigare för att dela installationsfilerna mellan Linux-noderna.
Viktigt
Dessa installations- och kompileringssteg är exempel. Du behöver viss kunskap om Linux-systemadministration för att säkerställa att beroende kompilatorer och bibliotek är korrekt installerade. Du kan behöva ändra vissa miljövariabler eller andra inställningar för dina versioner av Intel MPI och OpenFOAM. Mer information finns i Installationsguide för Intel MPI-bibliotek för Linux och Installation av OpenFOAM-källpaket för din miljö.
Installera Intel MPI
Spara det nedladdade installationspaketet för Intel MPI (l_mpi_p_5.0.3.048.tgz i det här exemplet) i C:\OpenFoam på huvudnoden så att Linux-noderna kan komma åt den här filen från /openfoam. Kör sedan clusrun för att installera Intel MPI-biblioteket på alla Linux-noder.
Följande kommandon kopierar installationspaketet och extraherar det till /opt/intel på varje nod.
clusrun /nodegroup:LinuxNodes mkdir -p /opt/intel clusrun /nodegroup:LinuxNodes cp /openfoam/l_mpi_p_5.0.3.048.tgz /opt/intel/ clusrun /nodegroup:LinuxNodes tar -xzf /opt/intel/l_mpi_p_5.0.3.048.tgz -C /opt/intel/
Om du vill installera Intel MPI-biblioteket tyst använder du en silent.cfg-fil. Du hittar ett exempel i exempelfilerna i slutet av den här artikeln. Placera den här filen i den delade mappen /openfoam. Mer information om filen silent.cfg finns i Installationsguide för Intel MPI-bibliotek för Linux – tyst installation.
Tips
Se till att du sparar filen silent.cfg som en textfil med Linux-radslut (endast LF, inte CR LF). Det här steget säkerställer att det körs korrekt på Linux-noderna.
Installera Intel MPI-biblioteket i tyst läge.
clusrun /nodegroup:LinuxNodes bash /opt/intel/l_mpi_p_5.0.3.048/install.sh --silent /openfoam/silent.cfg
Konfigurera MPI
För testning bör du lägga till följande rader i /etc/security/limits.conf på var och en av Linux-noderna:
clusrun /nodegroup:LinuxNodes echo "* hard memlock unlimited" `>`> /etc/security/limits.conf
clusrun /nodegroup:LinuxNodes echo "* soft memlock unlimited" `>`> /etc/security/limits.conf
Starta om Linux-noderna när du har uppdaterat filen limits.conf. Använd till exempel följande clusrun-kommando :
clusrun /nodegroup:LinuxNodes systemctl reboot
När du har startat om kontrollerar du att den delade mappen är monterad som /openfoam.
Kompilera och installera OpenFOAM
Spara det nedladdade installationspaketet för OpenFOAM-källpaketet (OpenFOAM-2.3.1.tgz i det här exemplet) till C:\OpenFoam på huvudnoden så att Linux-noderna kan komma åt den här filen från /openfoam. Kör sedan clusrun-kommandon för att kompilera OpenFOAM på alla Linux-noder.
Skapa en mapp /opt/OpenFOAM på varje Linux-nod, kopiera källpaketet till den här mappen och extrahera det där.
clusrun /nodegroup:LinuxNodes mkdir -p /opt/OpenFOAM clusrun /nodegroup:LinuxNodes cp /openfoam/OpenFOAM-2.3.1.tgz /opt/OpenFOAM/ clusrun /nodegroup:LinuxNodes tar -xzf /opt/OpenFOAM/OpenFOAM-2.3.1.tgz -C /opt/OpenFOAM/
Om du vill kompilera OpenFOAM med Intel MPI-biblioteket konfigurerar du först vissa miljövariabler för både Intel MPI och OpenFOAM. Använd ett bash-skript med namnet settings.sh för att ange variablerna. Du hittar ett exempel i exempelfilerna i slutet av den här artikeln. Placera den här filen (sparad med Linux-radslut) i den delade mappen /openfoam. Den här filen innehåller också inställningar för de MPI- och OpenFOAM-körningar som du använder senare för att köra ett OpenFOAM-jobb.
Installera beroende paket som behövs för att kompilera OpenFOAM. Beroende på din Linux-distribution kan du först behöva lägga till en lagringsplats. Kör clusrun-kommandon som liknar följande:
clusrun /nodegroup:LinuxNodes zypper ar http://download.opensuse.org/distribution/13.2/repo/oss/suse/ opensuse clusrun /nodegroup:LinuxNodes zypper -n --gpg-auto-import-keys install --repo opensuse --force-resolution -t pattern devel_C_C++
Vid behov kör SSH till varje Linux-nod kommandona för att bekräfta att de körs korrekt.
Kör följande kommando för att kompilera OpenFOAM. Kompileringsprocessen tar lite tid att slutföra och genererar en stor mängd logginformation till standardutdata, så använd alternativet /interleaved för att visa utdata mellanlagrade.
clusrun /nodegroup:LinuxNodes /interleaved source /openfoam/settings.sh `&`& /opt/OpenFOAM/OpenFOAM-2.3.1/Allwmake
Anteckning
Symbolen "'" i kommandot är en escape-symbol för PowerShell. "'&" betyder att "&" är en del av kommandot.
Förbereda för att köra ett OpenFOAM-jobb
Gör dig nu redo att köra ett MPI-jobb med namnet sloshingTank3D, som är ett av OpenFoam-exemplen, på två Linux-noder.
Konfigurera körningsmiljön
Om du vill konfigurera körningsmiljöerna för MPI och OpenFOAM på Linux-noderna kör du följande kommando i ett Windows PowerShell fönster på huvudnoden. (Det här kommandot är endast giltigt för SUSE Linux.)
clusrun /nodegroup:LinuxNodes cp /openfoam/settings.sh /etc/profile.d/
Förbereda exempeldata
Använd huvudnodresursen som du konfigurerade tidigare för att dela filer mellan Linux-noderna (monterade som /openfoam).
SSH till en av dina Linux-beräkningsnoder.
Kör följande kommando för att konfigurera OpenFOAM-körningsmiljön, om du inte redan har gjort det.
$ source /openfoam/settings.sh
Kopiera exemplet sloshingTank3D till den delade mappen och navigera till den.
$ cp -r $FOAM_TUTORIALS/multiphase/interDyMFoam/ras/sloshingTank3D /openfoam/ $ cd /openfoam/sloshingTank3D
När du använder standardparametrarna i det här exemplet kan det ta tiotals minuter att köra, så du kanske vill ändra vissa parametrar så att det körs snabbare. Ett enkelt val är att ändra tidsstegsvariablerna deltaT och writeInterval i filen system/controlDict. Den här filen lagrar alla indata som rör kontrollen av tid och läsning och skrivning av lösningsdata. Du kan till exempel ändra värdet för deltaT från 0,05 till 0,5 och värdet för writeInterval från 0,05 till 0,5.
Ange önskade värden för variablerna i filen system/decomposeParDict. I det här exemplet används två Linux-noder var och en med 8 kärnor, så ange numberOfSubdomains till 16 och n av hierarkiskaCoeffs till (1 1 16), vilket innebär att köra OpenFOAM parallellt med 16 processer. Mer information finns i OpenFOAM-användarhandbok: 3.4 Köra program parallellt.
Kör följande kommandon från katalogen sloshingTank3D för att förbereda exempeldata.
$ . $WM_PROJECT_DIR/bin/tools/RunFunctions $ m4 constant/polyMesh/blockMeshDict.m4 > constant/polyMesh/blockMeshDict $ runApplication blockMesh $ cp 0/alpha.water.org 0/alpha.water $ runApplication setFields
På huvudnoden bör du se att exempeldatafilerna kopieras till C:\OpenFoam\sloshingTank3D. (C:\OpenFoam är den delade mappen på huvudnoden.)
Värdfil för mpirun
I det här steget skapar du en värdfil (en lista över beräkningsnoder) som mpirun-kommandot använder.
På en av Linux-noderna skapar du en fil med namnet hostfile under /openfoam, så att den här filen kan nås på /openfoam/hostfile på alla Linux-noder.
Skriv dina Linux-nodnamn i den här filen. I det här exemplet innehåller filen följande namn:
SUSE12RDMA-LN1 SUSE12RDMA-LN2
Tips
Du kan också skapa den här filen på C:\OpenFoam\hostfile på huvudnoden. Om du väljer det här alternativet sparar du det som en textfil med Linux-radslut (endast LF, inte CR LF). Detta säkerställer att den körs korrekt på Linux-noderna.
Bash-skriptomslutning
Om du har många Linux-noder och vill att jobbet bara ska köras på vissa av dem är det inte en bra idé att använda en fast värdfil eftersom du inte vet vilka noder som ska allokeras till jobbet. I det här fallet skriver du en bash-skriptomslutning för mpirun för att skapa värdfilen automatiskt. Du hittar ett exempel på bash-skriptomslutning med namnet hpcimpirun.sh i slutet av den här artikeln och sparar det som /openfoam/hpcimpirun.sh. Det här exempelskriptet gör följande:
Konfigurerar miljövariablerna för mpirun och vissa tilläggskommandoparametrar för att köra MPI-jobbet via RDMA-nätverket. I det här fallet anger den följande variabler:
- I_MPI_FABRICS=shm:dapl
- I_MPI_DAPL_PROVIDER=ofa-v2-ib0
- I_MPI_DYNAMIC_CONNECTION=0
Skapar en värdfil enligt miljövariabeln $CCP_NODES_CORES, som anges av HPC-huvudnoden när jobbet aktiveras.
Formatet för $CCP_NODES_CORES följer det här mönstret:
<Number of nodes> <Name of node1> <Cores of node1> <Name of node2> <Cores of node2>...`
var
-
<Number of nodes>
– antalet noder som allokerats till det här jobbet. -
<Name of node_n_...>
– namnet på varje nod som allokerats till det här jobbet. -
<Cores of node_n_...>
– antalet kärnor på noden som allokerats till det här jobbet.
Om jobbet till exempel behöver två noder för att köras liknar $CCP_NODES_CORES
2 SUSE12RDMA-LN1 8 SUSE12RDMA-LN2 8
-
Anropar kommandot mpirun och lägger till två parametrar på kommandoraden.
-
--hostfile <hostfilepath>: <hostfilepath>
– sökvägen till den värdfil som skriptet skapar -
-np ${CCP_NUMCPUS}: ${CCP_NUMCPUS}
– en miljövariabel som anges av HPC Pack-huvudnoden, som lagrar antalet totala kärnor som allokerats till det här jobbet. I det här fallet anger den antalet processer för mpirun.
-
Skicka ett OpenFOAM-jobb
Nu kan du skicka ett jobb i HPC Cluster Manager. Du måste skicka skriptet hpcimpirun.sh i kommandoraderna för några av jobbuppgifterna.
Anslut till klusterhuvudnoden och starta HPC Cluster Manager.
I Resurshantering kontrollerar du att Linux-beräkningsnoderna är i onlinetillstånd . Om de inte är det väljer du dem och klickar på Bring Online.
I Jobbhantering klickar du på Nytt jobb.
Ange ett namn för jobbet, till exempel sloshingTank3D.
I Jobbresurser väljer du typen av resurs som "Nod" och anger Minimum till 2. Den här konfigurationen kör jobbet på två Linux-noder, som var och en har åtta kärnor i det här exemplet.
Klicka på Redigera aktiviteter i det vänstra navigeringsfönstret och klicka sedan på Lägg till för att lägga till en uppgift i jobbet. Lägg till fyra aktiviteter i jobbet med följande kommandorader och inställningar.
Anteckning
Körning
source /openfoam/settings.sh
konfigurerar OpenFOAM- och MPI-körningsmiljöerna, så var och en av följande uppgifter anropar den före OpenFOAM-kommandot.Uppgift 1. Kör decomposePar för att generera datafiler för att köra interDyMFoam parallellt.
- Tilldela en nod till uppgiften
-
Kommandoraden -
source /openfoam/settings.sh && decomposePar -force > /openfoam/decomposePar${CCP_JOBID}.log
- Arbetskatalog – /openfoam/sloshingTank3D
Se följande figur. Du konfigurerar de återstående uppgifterna på liknande sätt.
Uppgift 2. Kör interDyMFoam parallellt för att beräkna exemplet.
- Tilldela två noder till uppgiften
-
Kommandoraden -
source /openfoam/settings.sh && /openfoam/hpcimpirun.sh interDyMFoam -parallel > /openfoam/interDyMFoam${CCP_JOBID}.log
- Arbetskatalog – /openfoam/sloshingTank3D
Uppgift 3. Kör reconstructPar för att sammanfoga uppsättningarna med tidskataloger från varje processor_N_ katalog till en enda uppsättning.
- Tilldela en nod till uppgiften
-
Kommandoraden -
source /openfoam/settings.sh && reconstructPar > /openfoam/reconstructPar${CCP_JOBID}.log
- Arbetskatalog – /openfoam/sloshingTank3D
Uppgift 4. Kör foamToEnsight parallellt för att konvertera OpenFOAM-resultatfilerna till EnSight-format och placera EnSight-filerna i en katalog med namnet Ensight i ärendekatalogen.
- Tilldela två noder till uppgiften
-
Kommandoraden -
source /openfoam/settings.sh && /openfoam/hpcimpirun.sh foamToEnsight -parallel > /openfoam/foamToEnsight${CCP_JOBID}.log
- Arbetskatalog – /openfoam/sloshingTank3D
Lägg till beroenden till dessa aktiviteter i stigande aktivitetsordning.
Klicka på Skicka för att köra det här jobbet.
Som standard skickar HPC Pack jobbet som ditt aktuella inloggade användarkonto. När du har klickat på Skicka kan du se en dialogruta där du uppmanas att ange användarnamn och lösenord.
Under vissa förhållanden kommer HPC Pack ihåg den användarinformation som du har angett tidigare och visar inte den här dialogrutan. Om du vill att HPC Pack ska visa det igen anger du följande kommando i en kommandotolk och skickar sedan jobbet.
hpccred delcreds
Jobbet tar från tiotals minuter till flera timmar enligt de parametrar som du har angett för exemplet. I termisk karta ser du att jobbet körs på Linux-noderna.
Åtta processer startas på varje nod.
När jobbet är klart hittar du jobbresultatet i mappar under C:\OpenFoam\sloshingTank3D och loggfilerna på C:\OpenFoam.
Visa resultat i EnSight
Du kan också använda EnSight för att visualisera och analysera resultatet av OpenFOAM-jobbet.
När du har installerat EnSight på huvudnoden startar du den.
Öppna C:\OpenFoam\sloshingTank3D\EnSight\sloshingTank3D.case.
Du ser en tank i betraktaren.
Skapa en Isosurface från internalMesh och välj sedan variabeln alpha_water.
Ange färg för Isosurface_part som skapades i föregående steg. Ställ till exempel in den på vattenblått.
Skapa en Iso-volym från väggar genom att välja väggar i panelen Delar och klicka på knappen Isosurfaces i verktygsfältet.
I dialogrutan väljer du Typ som Isovolume och anger intervallet Minsta isovolume till 0,5. Om du vill skapa isovolume klickar du på Skapa med valda delar.
Ange färgen för Iso_volume_part som skapades i föregående steg. Ställ till exempel in den på djuphavsblått.
Ange färg för väggar. Ange till exempel transparent vitt.
Klicka nu på Spela upp för att se resultatet av simuleringen.
Exempelfiler
Exempel på XML-konfigurationsfil för klusterdistribution med PowerShell-skript
<?xml version="1.0" encoding="utf-8" ?>
<IaaSClusterConfig>
<Subscription>
<SubscriptionName>Subscription-1</SubscriptionName>
<StorageAccount>allvhdsje</StorageAccount>
</Subscription>
<Location>Japan East</Location>
<VNet>
<VNetName>suse12rdmavnet</VNetName>
<SubnetName>SUSE12RDMACluster</SubnetName>
</VNet>
<Domain>
<DCOption>HeadNodeAsDC</DCOption>
<DomainFQDN>hpclab.local</DomainFQDN>
</Domain>
<Database>
<DBOption>LocalDB</DBOption>
</Database>
<HeadNode>
<VMName>SUSE12RDMA-HN</VMName>
<ServiceName>suse12rdma-je</ServiceName>
<VMSize>A8</VMSize>
<EnableRESTAPI />
<EnableWebPortal />
</HeadNode>
<LinuxComputeNodes>
<VMNamePattern>SUSE12RDMA-LN%1%</VMNamePattern>
<ServiceName>suse12rdma-je</ServiceName>
<VMSize>A8</VMSize>
<NodeCount>2</NodeCount>
<ImageName>b4590d9e3ed742e4a1d46e5424aa335e__suse-sles-12-hpc-v20150708</ImageName>
</LinuxComputeNodes>
</IaaSClusterConfig>
Exempelfil cred.xml
<ExtendedData>
<PrivateKey>-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEAxJKBABhnOsE9eneGHvsjdoXKooHUxpTHI1JVunAJkVmFy8JC
qFt1pV98QCtKEHTC6kQ7tj1UT2N6nx1EY9BBHpZacnXmknpKdX4Nu0cNlSphLpru
lscKPR3XVzkTwEF00OMiNJVknq8qXJF1T3lYx3rW5EnItn6C3nQm3gQPXP0ckYCF
Jdtu/6SSgzV9kaapctLGPNp1Vjf9KeDQMrJXsQNHxnQcfiICp21NiUCiXosDqJrR
AfzePdl0XwsNngouy8t0fPlNSngZvsx+kPGh/AKakKIYS0cO9W3FmdYNW8Xehzkc
VzrtJhU8x21hXGfSC7V0ZeD7dMeTL3tQCVxCmwIDAQABAoIBAQCve8Jh3Wc6koxZ
qh43xicwhdwSGyliZisoozYZDC/ebDb/Ydq0BYIPMiDwADVMX5AqJuPPmwyLGtm6
9hu5p46aycrQ5+QA299g6DlF+PZtNbowKuvX+rRvPxagrTmupkCswjglDUEYUHPW
05wQaNoSqtzwS9Y85M/b24FfLeyxK0n8zjKFErJaHdhVxI6cxw7RdVlSmM9UHmah
wTkW8HkblbOArilAHi6SlRTNZG4gTGeDzPb7fYZo3hzJyLbcaNfJscUuqnAJ+6pT
iY6NNp1E8PQgjvHe21yv3DRoVRM4egqQvNZgUbYAMUgr30T1UoxnUXwk2vqJMfg2
Nzw0ESGRAoGBAPkfXjjGfc4HryqPkdx0kjXs0bXC3js2g4IXItK9YUFeZzf+476y
OTMQg/8DUbqd5rLv7PITIAqpGs39pkfnyohPjOe2zZzeoyaXurYIPV98hhH880uH
ZUhOxJYnlqHGxGT7p2PmmnAlmY4TSJrp12VnuiQVVVsXWOGPqHx4S4f9AoGBAMn/
vuea7hsCgwIE25MJJ55FYCJodLkioQy6aGP4NgB89Azzg527WsQ6H5xhgVMKHWyu
Q1snp+q8LyzD0i1veEvWb8EYifsMyTIPXOUTwZgzaTTCeJNHdc4gw1U22vd7OBYy
nZCU7Tn8Pe6eIMNztnVduiv+2QHuiNPgN7M73/x3AoGBAOL0IcmFgy0EsR8MBq0Z
ge4gnniBXCYDptEINNBaeVStJUnNKzwab6PGwwm6w2VI3thbXbi3lbRAlMve7fKK
B2ghWNPsJOtppKbPCek2Hnt0HUwb7qX7Zlj2cX/99uvRAjChVsDbYA0VJAxcIwQG
TxXx5pFi4g0HexCa6LrkeKMdAoGAcvRIACX7OwPC6nM5QgQDt95jRzGKu5EpdcTf
g4TNtplliblLPYhRrzokoyoaHteyxxak3ktDFCLj9eW6xoCZRQ9Tqd/9JhGwrfxw
MS19DtCzHoNNewM/135tqyD8m7pTwM4tPQqDtmwGErWKj7BaNZARUlhFxwOoemsv
R6DbZyECgYEAhjL2N3Pc+WW+8x2bbIBN3rJcMjBBIivB62AwgYZnA2D5wk5o0DKD
eesGSKS5l22ZMXJNShgzPKmv3HpH22CSVpO0sNZ6R+iG8a3oq4QkU61MT1CfGoMI
a8lxTKnZCsRXU1HexqZs+DSc+30tz50bNqLdido/l5B4EJnQP03ciO0=
-----END RSA PRIVATE KEY-----</PrivateKey>
<PublicKey>ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDEkoEAGGc6wT16d4Ye+yN2hcqigdTGlMcjUlW6cAmRWYXLwkKoW3WlX3xAK0oQdMLqRDu2PVRPY3qfHURj0EEellpydeaSekp1fg27Rw2VKmEumu6Wxwo9HddXORPAQXTQ4yI0lWSerypckXVPeVjHetbkSci2foLedCbeBA9c/RyRgIUl227/pJKDNX2Rpqly0sY82nVWN/0p4NAyslexA0fGdBx+IgKnbU2JQKJeiwOomtEB/N492XRfCw2eCi7Ly3R8+U1KeBm+zH6Q8aH8ApqQohhLRw71bcWZ1g1bxd6HORxXOu0mFTzHbWFcZ9ILtXRl4Pt0x5Mve1AJXEKb username@servername;</PublicKey>
</ExtendedData>
Exempel på silent.cfg-fil för att installera MPI
# Patterns used to check silent configuration file
#
# anythingpat - any string
# filepat - the file location pattern (/file/location/to/license.lic)
# lspat - the license server address pattern (0123@hostname)
# snpat - the serial number pattern (ABCD-01234567)
# accept EULA, valid values are: {accept, decline}
ACCEPT_EULA=accept
# optional error behavior, valid values are: {yes, no}
CONTINUE_WITH_OPTIONAL_ERROR=yes
# install location, valid values are: {/opt/intel, filepat}
PSET_INSTALL_DIR=/opt/intel
# continue with overwrite of existing installation directory, valid values are: {yes, no}
CONTINUE_WITH_INSTALLDIR_OVERWRITE=yes
# list of components to install, valid values are: {ALL, DEFAULTS, anythingpat}
COMPONENTS=DEFAULTS
# installation mode, valid values are: {install, modify, repair, uninstall}
PSET_MODE=install
# directory for non-RPM database, valid values are: {filepat}
#NONRPM_DB_DIR=filepat
# Serial number, valid values are: {snpat}
#ACTIVATION_SERIAL_NUMBER=snpat
# License file or license server, valid values are: {lspat, filepat}
#ACTIVATION_LICENSE_FILE=
# Activation type, valid values are: {exist_lic, license_server, license_file, trial_lic, serial_number}
ACTIVATION_TYPE=trial_lic
# Path to the cluster description file, valid values are: {filepat}
#CLUSTER_INSTALL_MACHINES_FILE=filepat
# Intel(R) Software Improvement Program opt-in, valid values are: {yes, no}
PHONEHOME_SEND_USAGE_DATA=no
# Perform validation of digital signatures of RPM files, valid values are: {yes, no}
SIGNING_ENABLED=yes
# Select yes to enable mpi-selector integration, valid values are: {yes, no}
ENVIRONMENT_REG_MPI_ENV=no
# Select yes to update ld.so.conf, valid values are: {yes, no}
ENVIRONMENT_LD_SO_CONF=no
Exempelskript för settings.sh
#!/bin/bash
# impi
source /opt/intel/impi/5.0.3.048/bin64/mpivars.sh
export MPI_ROOT=$I_MPI_ROOT
export I_MPI_FABRICS=shm:dapl
export I_MPI_DAPL_PROVIDER=ofa-v2-ib0
export I_MPI_DYNAMIC_CONNECTION=0
# openfoam
export FOAM_INST_DIR=/opt/OpenFOAM
source /opt/OpenFOAM/OpenFOAM-2.3.1/etc/bashrc
export WM_MPLIB=INTELMPI
Exempelskript för hpcimpirun.sh
#!/bin/bash
# The path of this script
SCRIPT_PATH="$( dirname "${BASH_SOURCE[0]}" )"
# Set mpirun runtime evironment
source /opt/intel/impi/5.0.3.048/bin64/mpivars.sh
export MPI_ROOT=$I_MPI_ROOT
export I_MPI_FABRICS=shm:dapl
export I_MPI_DAPL_PROVIDER=ofa-v2-ib0
export I_MPI_DYNAMIC_CONNECTION=0
# mpirun command
MPIRUN=mpirun
# Argument of "--hostfile"
NODELIST_OPT="--hostfile"
# Argument of "-np"
NUMPROCESS_OPT="-np"
# Get node information from ENVs
NODESCORES=(${CCP_NODES_CORES})
COUNT=${#NODESCORES[@]}
if [ ${COUNT} -eq 0 ]
then
# CCP_NODES_CORES is not found or is empty, just run the mpirun without hostfile arg.
${MPIRUN} $*
else
# Create the hostfile file
NODELIST_PATH=${SCRIPT_PATH}/hostfile_$$
# Get every node name and write into the hostfile file
I=1
while [ ${I} -lt ${COUNT} ]
do
echo "${NODESCORES[${I}]}" >> ${NODELIST_PATH}
let "I=${I}+2"
done
# Run the mpirun with hostfile arg
${MPIRUN} ${NUMPROCESS_OPT} ${CCP_NUMCPUS} ${NODELIST_OPT} ${NODELIST_PATH} $*
RTNSTS=$?
rm -f ${NODELIST_PATH}
fi
exit ${RTNSTS}