OpenFoam uitvoeren met Microsoft HPC Pack op een Linux RDMA-cluster in Azure
Belangrijk
Klassieke VM's worden op 1 maart 2023 buiten gebruik gesteld.
Als u IaaS-resources van ASM gebruikt, dient u de migratie uiterlijk 1 maart 2023 te voltooien. U wordt aangeraden al eerder over te schakelen om te kunnen profiteren van de vele functieverbeteringen in Azure Resource Manager.
Zie Uw IaaS-resources vóór 1 maart 2023 naar Azure Resource Manager migreren voor meer informatie.
In dit artikel wordt één manier beschreven om OpenFoam uit te voeren in virtuele Azure-machines. Hier implementeert u een Microsoft HPC Pack-cluster met Linux-rekenknooppunten in Azure en voert u een OpenFoam-taak uit met Intel MPI. U kunt RDMA-compatibele Azure-VM's gebruiken voor de rekenknooppunten, zodat de rekenknooppunten communiceren via het Azure RDMA-netwerk. Andere opties voor het uitvoeren van OpenFoam in Azure zijn volledig geconfigureerde commerciële installatiekopieën die beschikbaar zijn in Marketplace, zoals OpenFoam 2.3 van UberCloud op CentOS 6, en door uit te voeren op Azure Batch.
Notitie
Azure heeft twee verschillende implementatiemodellen voor het maken en werken met resources: Resource Manager en klassiek. In dit artikel komen beide modellen aan de orde, maar u wordt aangeraden voor de meeste nieuwe implementaties het Resource Manager-model te gebruiken.
OpenFOAM (voor Open Field Operation and Manipulation) is een opensource computational fluid dynamics (CFD) softwarepakket dat veel wordt gebruikt in engineering en wetenschap, zowel in commerciële als academische organisaties. Het bevat tools voor meshing, met name snappyHexMesh, een geparallelliseerde mesher voor complexe CAD-geometrieën, en voor- en naverwerking. Bijna alle processen worden parallel uitgevoerd, zodat gebruikers optimaal kunnen profiteren van de computerhardware die ze tot hun beschikking hebben.
Microsoft HPC Pack biedt functies voor het uitvoeren van grootschalige HPC en parallelle toepassingen, waaronder MPI-toepassingen, op clusters van virtuele Microsoft Azure-machines. HPC Pack ondersteunt ook het uitvoeren van Linux HPC-toepassingen op linux-rekenknooppunt-VM's die zijn geïmplementeerd in een HPC Pack-cluster. Zie Aan de slag met Linux-rekenknooppunten in een HPC Pack-cluster in Azure voor een inleiding tot het gebruik van Linux-rekenknooppunten met HPC Pack.
Notitie
In dit artikel wordt uitgelegd hoe u een Linux MPI-workload uitvoert met HPC Pack. Hierbij wordt ervan uitgegaan dat u enige bekendheid hebt met Linux-systeembeheer en met het uitvoeren van MPI-workloads op Linux-clusters. Als u versies van MPI en OpenFOAM gebruikt die afwijken van de versies die in dit artikel worden weergegeven, moet u mogelijk enkele installatie- en configuratiestappen wijzigen.
Vereisten
HPC Pack-cluster met RDMA-compatibele Linux-rekenknooppunten: implementeer een HPC Pack-cluster met de grootte A8, A9, H16r of H16rm Linux-rekenknooppunten met behulp van een Azure Resource Manager-sjabloon of een Azure PowerShell script. Zie Aan de slag met Linux-rekenknooppunten in een HPC Pack-cluster in Azure voor de vereisten en stappen voor beide opties. Als u de optie PowerShell-scriptimplementatie kiest, raadpleegt u het voorbeeldconfiguratiebestand in de voorbeeldbestanden aan het einde van dit artikel. Gebruik deze configuratie om een OP Azure gebaseerd HPC Pack-cluster te implementeren dat bestaat uit een grootte A8 Windows Server 2012 R2-hoofdknooppunt en 2 grootte A8 SUSE Linux Enterprise Server 12-rekenknooppunten. Vervang de juiste waarden voor uw abonnement en servicenamen.
Aanvullende dingen die u moet weten
- Zie High performance compute VM-grootten voor vereisten voor Linux RDMA-netwerken in Azure.
- Als u de optie powershell-scriptimplementatie gebruikt, implementeert u alle Linux-rekenknooppunten binnen één cloudservice om de RDMA-netwerkverbinding te gebruiken.
- Nadat u de Linux-knooppunten hebt geïmplementeerd, maakt u verbinding via SSH om aanvullende beheertaken uit te voeren. Zoek de SSH-verbindingsgegevens voor elke Virtuele Linux-machine in de Azure Portal.
Intel MPI : als u OpenFOAM wilt uitvoeren op SLES 12 HPC-rekenknooppunten in Azure, moet u de Intel MPI Library 5-runtime installeren vanaf de Intel.com-site. (Intel MPI 5 is vooraf geïnstalleerd op HPC-installatiekopieën op basis van CentOS.) Installeer in een latere stap, indien nodig, Intel MPI op uw Linux-rekenknooppunten. Als voorbereiding op deze stap volgt u, nadat u zich bij Intel hebt geregistreerd, de koppeling in de bevestigingsmail naar de bijbehorende webpagina. Kopieer vervolgens de downloadkoppeling voor het .tgz-bestand voor de juiste versie van Intel MPI. Dit artikel is gebaseerd op Intel MPI versie 5.0.3.048.
OpenFOAM Source Pack : download de OpenFOAM Source Pack-software voor Linux van de OpenFOAM Foundation-site. Dit artikel is gebaseerd op source pack versie 2.3.1, beschikbaar om te downloaden als OpenFOAM-2.3.1.tgz. Volg de instructies verderop in dit artikel om OpenFOAM uit te pakken en te compileren op de Linux-rekenknooppunten.
EnSight (optioneel): als u de resultaten van uw OpenFOAM-simulatie wilt zien, downloadt en installeert u het Visualisatie- en analyseprogramma van EnSight . Licentie- en downloadgegevens staan op de EnSight-site.
Wederzijds vertrouwen tussen rekenknooppunten instellen
Voor het uitvoeren van een taak tussen knooppunten op meerdere Linux-knooppunten moeten de knooppunten elkaar vertrouwen (per rsh of ssh). Wanneer u het HPC Pack-cluster maakt met het Microsoft HPC Pack IaaS-implementatiescript, stelt het script automatisch een permanent wederzijds vertrouwen in voor het beheerdersaccount dat u opgeeft. Voor niet-beheerders die u in het domein van het cluster maakt, moet u tijdelijk wederzijds vertrouwen tussen de knooppunten instellen wanneer een taak aan hen wordt toegewezen en de relatie vernietigen nadat de taak is voltooid. Als u een vertrouwensrelatie voor elke gebruiker tot stand wilt brengen, geeft u een RSA-sleutelpaar op aan het cluster dat HPC Pack gebruikt voor de vertrouwensrelatie.
Een RSA-sleutelpaar genereren
Het is eenvoudig om een RSA-sleutelpaar te genereren, dat een openbare sleutel en een persoonlijke sleutel bevat, door de opdracht Linux ssh-keygen uit te voeren.
Meld u aan bij een Linux-computer.
Voer de volgende opdracht uit:
ssh-keygen -t rsa
Notitie
Druk op Enter om de standaardinstellingen te gebruiken totdat de opdracht is voltooid. Voer hier geen wachtwoordzin in. Wanneer u om een wachtwoord wordt gevraagd, drukt u op Enter.
Wijzig de map in de map ~/.ssh. De persoonlijke sleutel wordt opgeslagen in id_rsa en de openbare sleutel in id_rsa.pub.
Het sleutelpaar toevoegen aan het HPC Pack-cluster
Maak een verbinding met extern bureaublad met uw hoofdknooppunt met uw HPC Pack-beheerdersaccount (het beheerdersaccount dat u hebt ingesteld toen u het implementatiescript uitvoerde).
Gebruik standaard Windows Server-procedures om een domeingebruikersaccount te maken in het Active Directory-domein van het cluster. Gebruik bijvoorbeeld het hulpprogramma Active Directory: gebruiker en computers op het hoofdknooppunt. In de voorbeelden in dit artikel wordt ervan uitgegaan dat u een domeingebruiker maakt met de naam hpclab\hpcuser.
Maak een bestand met de naam C:\cred.xml en kopieer de RSA-sleutelgegevens erin. Een voorbeeld van een cred.xml-bestand vindt u aan het einde van dit artikel.
<ExtendedData> <PrivateKey>Copy the contents of private key here</PrivateKey> <PublicKey>Copy the contents of public key here</PublicKey> </ExtendedData>
Open een opdrachtprompt en voer de volgende opdracht in om de referentiegegevens voor het hpclab\hpcuser-account in te stellen. U gebruikt de parameter extendeddata om de naam door te geven van C:\cred.xml bestand dat u hebt gemaakt voor de sleutelgegevens.
hpccred setcreds /extendeddata:c:\cred.xml /user:hpclab\hpcuser /password:<UserPassword>
Deze opdracht wordt zonder uitvoer voltooid. Nadat u de referenties voor de gebruikersaccounts hebt ingesteld die u nodig hebt om taken uit te voeren, slaat u het cred.xml-bestand op een veilige locatie op of verwijdert u het.
Als u het RSA-sleutelpaar hebt gegenereerd op een van uw Linux-knooppunten, moet u de sleutels verwijderen nadat u ze hebt gebruikt. Als HPC Pack een bestaand id_rsa-bestand of id_rsa.pub-bestand vindt, wordt wederzijds vertrouwen niet ingesteld.
Belangrijk
Het wordt afgeraden een Linux-taak uit te voeren als clusterbeheerder op een gedeeld cluster, omdat een taak die door een beheerder is ingediend, wordt uitgevoerd onder het hoofdaccount op de Linux-knooppunten. Een taak die is ingediend door een niet-beheerder wordt echter uitgevoerd onder een lokaal Linux-gebruikersaccount met dezelfde naam als de taakgebruiker. In dit geval stelt HPC Pack wederzijds vertrouwen in voor deze Linux-gebruiker op de knooppunten die aan de taak zijn toegewezen. U kunt de Linux-gebruiker handmatig instellen op de Linux-knooppunten voordat u de taak uitvoert, of HPC Pack maakt de gebruiker automatisch wanneer de taak wordt verzonden. Als HPC Pack de gebruiker maakt, verwijdert HPC Pack deze nadat de taak is voltooid. Om beveiligingsrisico's te verminderen, verwijdert HPC Pack de sleutels nadat de taak is voltooid.
Een bestandsshare instellen voor Linux-knooppunten
Stel nu een standaard SMB-share in op een map op het hoofdknooppunt. Als u de Linux-knooppunten toegang wilt geven tot toepassingsbestanden met een gemeenschappelijk pad, koppelt u de gedeelde map aan de Linux-knooppunten. Als u wilt, kunt u een andere optie voor het delen van bestanden gebruiken, zoals een Azure Files-share (aanbevolen voor veel scenario's) of een NFS-share. Zie de informatie over het delen van bestanden en gedetailleerde stappen in Aan de slag met Linux-rekenknooppunten in een HPC Pack-cluster in Azure.
Maak een map op het hoofdknooppunt en deel deze met Iedereen door lees-/schrijfbevoegdheden in te stellen. Deel bijvoorbeeld C:\OpenFOAM op het hoofdknooppunt als \\SUSE12RDMA-HN\OpenFOAM. Hier is SUSE12RDMA-HN de hostnaam van het hoofdknooppunt.
Open een Windows PowerShell venster en voer de volgende opdrachten uit:
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
Met de eerste opdracht maakt u een map met de naam /openfoam op alle knooppunten in de groep LinuxNodes. De tweede opdracht koppelt de gedeelde map //SUSE12RDMA-HN/OpenFOAM op de Linux-knooppunten met dir_mode en file_mode bits ingesteld op 777. De gebruikersnaam en het wachtwoord in de opdracht moeten de referenties zijn van een gebruiker op het hoofdknooppunt.
Notitie
Het symbool ''' in de tweede opdracht is een escape-symbool voor PowerShell. '',' betekent dat de ',' (kommateken) een deel van de opdracht is.
MPI en OpenFOAM installeren
Als u OpenFOAM wilt uitvoeren als een MPI-taak op het RDMA-netwerk, moet u OpenFOAM compileren met de Intel MPI-bibliotheken.
Voer eerst verschillende clusrun-opdrachten uit om Intel MPI-bibliotheken (indien nog niet geïnstalleerd) en OpenFOAM te installeren op uw Linux-knooppunten. Gebruik de hoofdknooppuntshare die eerder is geconfigureerd om de installatiebestanden te delen tussen de Linux-knooppunten.
Belangrijk
Deze installatie- en compileringsstappen zijn voorbeelden. U hebt enige kennis van Linux-systeembeheer nodig om ervoor te zorgen dat afhankelijke compilers en bibliotheken correct worden geïnstalleerd. Mogelijk moet u bepaalde omgevingsvariabelen of andere instellingen voor uw versies van Intel MPI en OpenFOAM wijzigen. Zie Voor meer informatie Intel MPI Library for Linux Installation Guide en OpenFOAM Source Pack Installation for your environment (Installatie van OpenFOAM-bronpakketten voor uw omgeving).
Intel MPI installeren
Sla het gedownloade installatiepakket voor Intel MPI (l_mpi_p_5.0.3.048.tgz in dit voorbeeld) op in C:\OpenFoam op het hoofdknooppunt, zodat de Linux-knooppunten toegang hebben tot dit bestand vanuit /openfoam. Voer vervolgens clusrun uit om de Intel MPI-bibliotheek te installeren op alle Linux-knooppunten.
Met de volgende opdrachten wordt het installatiepakket gekopieerd en geëxtraheerd naar /opt/intel op elk knooppunt.
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/
Als u Intel MPI Library op de achtergrond wilt installeren, gebruikt u het bestand silent.cfg. U vindt een voorbeeld in de voorbeeldbestanden aan het einde van dit artikel. Plaats dit bestand in de gedeelde map /openfoam. Zie Intel MPI Library for Linux Installation Guide - Silent Installation (Intel MPI Library for Linux Installation Guide - Silent Installation) voor meer informatie over het bestand silent.cfg.
Tip
Zorg ervoor dat u het bestand silent.cfg opslaat als een tekstbestand met Linux-regeleinden (alleen LF, niet CR LF). Deze stap zorgt ervoor dat deze correct wordt uitgevoerd op de Linux-knooppunten.
Installeer De Intel MPI-bibliotheek in de stille modus.
clusrun /nodegroup:LinuxNodes bash /opt/intel/l_mpi_p_5.0.3.048/install.sh --silent /openfoam/silent.cfg
MPI configureren
Voor het testen moet u de volgende regels toevoegen aan de /etc/security/limits.conf op elk van de Linux-knooppunten:
clusrun /nodegroup:LinuxNodes echo "* hard memlock unlimited" `>`> /etc/security/limits.conf
clusrun /nodegroup:LinuxNodes echo "* soft memlock unlimited" `>`> /etc/security/limits.conf
Start de Linux-knooppunten opnieuw op nadat u het bestand limits.conf hebt bijgewerkt. Gebruik bijvoorbeeld de volgende clusrun-opdracht :
clusrun /nodegroup:LinuxNodes systemctl reboot
Controleer na het opnieuw opstarten of de gedeelde map is gekoppeld als /openfoam.
OpenFOAM compileren en installeren
Sla het gedownloade installatiepakket voor het OpenFOAM-bronpakket (OpenFOAM-2.3.1.tgz in dit voorbeeld) op in C:\OpenFoam op het hoofdknooppunt, zodat de Linux-knooppunten toegang hebben tot dit bestand vanuit /openfoam. Voer vervolgens clusrun-opdrachten uit om OpenFOAM te compileren op alle Linux-knooppunten.
Maak een map /opt/OpenFOAM op elk Linux-knooppunt, kopieer het bronpakket naar deze map en pak het daar uit.
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/
Als u OpenFOAM wilt compileren met de Intel MPI-bibliotheek, moet u eerst enkele omgevingsvariabelen instellen voor zowel Intel MPI als OpenFOAM. Gebruik een bash-script met de naam settings.sh om de variabelen in te stellen. U vindt een voorbeeld in de voorbeeldbestanden aan het einde van dit artikel. Plaats dit bestand (opgeslagen met Linux-regeleinden) in de gedeelde map /openfoam. Dit bestand bevat ook instellingen voor de MPI- en OpenFOAM-runtimes die u later gebruikt om een OpenFOAM-taak uit te voeren.
Installeer afhankelijke pakketten die nodig zijn om OpenFOAM te compileren. Afhankelijk van uw Linux-distributie moet u mogelijk eerst een opslagplaats toevoegen. Voer clusrun-opdrachten uit die vergelijkbaar zijn met het volgende:
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++
SSH indien nodig naar elk Linux-knooppunt om de opdrachten uit te voeren om te controleren of ze correct worden uitgevoerd.
Voer de volgende opdracht uit om OpenFOAM te compileren. Het compilatieproces duurt even en genereert een grote hoeveelheid logboekinformatie naar standaarduitvoer, dus gebruik de optie /interleaved om de uitvoer interleaved weer te geven.
clusrun /nodegroup:LinuxNodes /interleaved source /openfoam/settings.sh `&`& /opt/OpenFOAM/OpenFOAM-2.3.1/Allwmake
Notitie
Het symbool ''' in de opdracht is een escape-symbool voor PowerShell. ""&" betekent dat de "&" deel uitmaakt van de opdracht.
Het uitvoeren van een OpenFOAM-taak voorbereiden
Bereid u nu voor op het uitvoeren van een MPI-taak met de naam sloshingTank3D, een van de OpenFoam-voorbeelden, op twee Linux-knooppunten.
De runtime-omgeving instellen
Als u de runtime-omgevingen voor MPI en OpenFOAM op de Linux-knooppunten wilt instellen, voert u de volgende opdracht uit in een Windows PowerShell-venster op het hoofdknooppunt. (Deze opdracht is alleen geldig voor SUSE Linux.)
clusrun /nodegroup:LinuxNodes cp /openfoam/settings.sh /etc/profile.d/
Voorbeeldgegevens voorbereiden
Gebruik de hoofdknooppuntshare die u eerder hebt geconfigureerd om bestanden te delen tussen de Linux-knooppunten (gekoppeld als /openfoam).
SSH naar een van uw Linux-rekenknooppunten.
Voer de volgende opdracht uit om de OpenFOAM-runtimeomgeving in te stellen, als u dit nog niet hebt gedaan.
$ source /openfoam/settings.sh
Kopieer het sloshingTank3D-voorbeeld naar de gedeelde map en navigeer ernaartoe.
$ cp -r $FOAM_TUTORIALS/multiphase/interDyMFoam/ras/sloshingTank3D /openfoam/ $ cd /openfoam/sloshingTank3D
Wanneer u de standaardparameters van dit voorbeeld gebruikt, kan het tientallen minuten duren voordat deze is uitgevoerd, dus u kunt sommige parameters wijzigen om het sneller te laten werken. Een eenvoudige keuze is het wijzigen van de tijdstapvariabelen deltaT en writeInterval in het bestand system/controlDict. Dit bestand slaat alle invoergegevens op met betrekking tot de controle van tijd en het lezen en schrijven van oplossingsgegevens. U kunt bijvoorbeeld de waarde van deltaT wijzigen van 0,05 in 0,5 en de waarde van writeInterval van 0,05 in 0,5.
Geef de gewenste waarden op voor de variabelen in het bestand system/decomposeParDict. In dit voorbeeld worden twee Linux-knooppunten met elk 8 kernen gebruikt, dus stel numberOfSubdomains in op 16 en n van hierarchicalCoeffs op (1 1 16), wat betekent dat OpenFOAM parallel met 16 processen wordt uitgevoerd. Zie OpenFOAM User Guide: 3.4 Running applications in parallel (OpenFOAM-gebruikershandleiding: 3.4 Toepassingen parallel uitvoeren) voor meer informatie.
Voer de volgende opdrachten uit vanuit de map sloshingTank3D om de voorbeeldgegevens voor te bereiden.
$ . $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
Op het hoofdknooppunt ziet u dat de voorbeeldgegevensbestanden zijn gekopieerd naar C:\OpenFoam\sloshingTank3D. (C:\OpenFoam is de gedeelde map op het hoofdknooppunt.)
Hostbestand voor mpirun
In deze stap maakt u een hostbestand (een lijst met rekenknooppunten) die door de opdracht mpirun wordt gebruikt.
Maak op een van de Linux-knooppunten een bestand met de naam hostbestand onder /openfoam, zodat dit bestand kan worden bereikt op /openfoam/hostfile op alle Linux-knooppunten.
Schrijf de namen van uw Linux-knooppunten in dit bestand. In dit voorbeeld bevat het bestand de volgende namen:
SUSE12RDMA-LN1 SUSE12RDMA-LN2
Tip
U kunt dit bestand ook maken op C:\OpenFoam\hostfile op het hoofdknooppunt. Als u deze optie kiest, slaat u deze op als een tekstbestand met Linux-regeleinden (alleen LF, niet CR LF). Dit zorgt ervoor dat deze correct wordt uitgevoerd op de Linux-knooppunten.
Bash-script-wrapper
Als u veel Linux-knooppunten hebt en u wilt dat uw taak op slechts enkele van deze knooppunten wordt uitgevoerd, is het geen goed idee om een vast hostbestand te gebruiken, omdat u niet weet welke knooppunten aan uw taak worden toegewezen. In dit geval schrijft u een bash-script-wrapper voor mpirun om het hostbestand automatisch te maken. Aan het einde van dit artikel vindt u een voorbeeld van een bash-scriptwrapper met de naam hpcimpirun.sh en slaat u deze op als /openfoam/hpcimpirun.sh. Dit voorbeeldscript doet het volgende:
Hiermee stelt u de omgevingsvariabelen voor mpirun en enkele extra opdrachtparameters in om de MPI-taak uit te voeren via het RDMA-netwerk. In dit geval worden de volgende variabelen ingesteld:
- I_MPI_FABRICS=shm:dapl
- I_MPI_DAPL_PROVIDER=ofa-v2-ib0
- I_MPI_DYNAMIC_CONNECTION=0
Hiermee maakt u een hostbestand op basis van de omgevingsvariabele $CCP_NODES_CORES, die wordt ingesteld door het HPC-hoofdknooppunt wanneer de taak wordt geactiveerd.
De indeling van $CCP_NODES_CORES volgt dit patroon:
<Number of nodes> <Name of node1> <Cores of node1> <Name of node2> <Cores of node2>...`
waar
-
<Number of nodes>
- het aantal knooppunten dat aan deze taak is toegewezen. -
<Name of node_n_...>
- de naam van elk knooppunt dat aan deze taak is toegewezen. -
<Cores of node_n_...>
- het aantal kernen op het knooppunt dat aan deze taak is toegewezen.
Als de taak bijvoorbeeld twee knooppunten nodig heeft om uit te voeren, is $CCP_NODES_CORES vergelijkbaar met
2 SUSE12RDMA-LN1 8 SUSE12RDMA-LN2 8
-
Roept de opdracht mpirun aan en voegt twee parameters toe aan de opdrachtregel.
-
--hostfile <hostfilepath>: <hostfilepath>
- het pad van het hostbestand dat door het script wordt gemaakt -
-np ${CCP_NUMCPUS}: ${CCP_NUMCPUS}
- een omgevingsvariabele die is ingesteld door het hoofdknooppunt HPC Pack, waarin het totale aantal kernen wordt opgeslagen dat aan deze taak is toegewezen. In dit geval wordt het aantal processen voor mpirun opgegeven.
-
Een OpenFOAM-taak verzenden
U kunt nu een taak indienen in HPC-clusterbeheer. U moet het script hpcimpirun.sh doorgeven in de opdrachtregels voor sommige taaktaken.
Maak verbinding met het hoofdknooppunt van uw cluster en start HPC-clusterbeheer.
Zorg er in Resourcebeheer voor dat de Linux-rekenknooppunten de status Online hebben. Als dat niet zo is, selecteert u deze en klikt u op Online brengen.
Klik in Taakbeheer op Nieuwe taak.
Voer een naam in voor de taak, zoals sloshingTank3D.
Kies in Taakresources het type resource als 'Knooppunt' en stel minimum in op 2. Met deze configuratie wordt de taak uitgevoerd op twee Linux-knooppunten, die in dit voorbeeld elk acht kernen hebben.
Klik op Taken bewerken in het linkernavigatievenster en klik vervolgens op Toevoegen om een taak toe te voegen aan de taak. Voeg vier taken toe aan de taak met de volgende opdrachtregels en instellingen.
Notitie
Met het uitvoeren
source /openfoam/settings.sh
worden de OpenFOAM- en MPI-runtimeomgevingen ingesteld, zodat elk van de volgende taken deze aanroept vóór de OpenFOAM-opdracht.Taak 1. Voer decomposePar uit om gegevensbestanden te genereren voor het parallel uitvoeren van interDyMFoam .
- Eén knooppunt toewijzen aan de taak
-
Opdrachtregel -
source /openfoam/settings.sh && decomposePar -force > /openfoam/decomposePar${CCP_JOBID}.log
- Werkmap - /openfoam/sloshingTank3D
Zie de volgende afbeelding. U configureert de resterende taken op dezelfde manier.
Taak 2. Voer interDyMFoam parallel uit om het voorbeeld te berekenen.
- Twee knooppunten toewijzen aan de taak
-
Opdrachtregel -
source /openfoam/settings.sh && /openfoam/hpcimpirun.sh interDyMFoam -parallel > /openfoam/interDyMFoam${CCP_JOBID}.log
- Werkmap - /openfoam/sloshingTank3D
Taak 3. Voer reconstructPar uit om de sets met tijdmappen van elke processor_N_ map samen te voegen in één set.
- Eén knooppunt toewijzen aan de taak
-
Opdrachtregel -
source /openfoam/settings.sh && reconstructPar > /openfoam/reconstructPar${CCP_JOBID}.log
- Werkmap - /openfoam/sloshingTank3D
Taak 4. Voer foamToEnsight parallel uit om de OpenFOAM-resultaatbestanden te converteren naar de EnSight-indeling en plaats de EnSight-bestanden in een map met de naam Ensight in de casemap.
- Twee knooppunten toewijzen aan de taak
-
Opdrachtregel -
source /openfoam/settings.sh && /openfoam/hpcimpirun.sh foamToEnsight -parallel > /openfoam/foamToEnsight${CCP_JOBID}.log
- Werkmap - /openfoam/sloshingTank3D
Voeg afhankelijkheden toe aan deze taken in oplopende taakvolgorde.
Klik op Verzenden om deze taak uit te voeren.
HpC Pack verzendt de taak standaard als uw huidige aangemelde gebruikersaccount. Nadat u op Verzenden hebt geklikt, ziet u mogelijk een dialoogvenster waarin u wordt gevraagd de gebruikersnaam en het wachtwoord in te voeren.
Onder bepaalde omstandigheden onthoudt HPC Pack de gebruikersgegevens die u eerder hebt ingevoerd en wordt dit dialoogvenster niet weergegeven. Als u hpc pack opnieuw wilt weergeven, voert u de volgende opdracht in bij een opdrachtprompt en verzendt u de taak.
hpccred delcreds
De taak duurt tientallen minuten tot enkele uren volgens de parameters die u hebt ingesteld voor het voorbeeld. In de heatmap ziet u de taak die wordt uitgevoerd op de Linux-knooppunten.
Op elk knooppunt worden acht processen gestart.
Wanneer de taak is voltooid, zoekt u de taakresultaten in mappen onder C:\OpenFoam\sloshingTank3D en de logboekbestanden op C:\OpenFoam.
Resultaten weergeven in EnSight
Gebruik eventueel EnSight om de resultaten van de OpenFOAM-taak te visualiseren en te analyseren.
Nadat u EnSight op het hoofdknooppunt hebt geïnstalleerd, start u het.
Open C:\OpenFoam\sloshingTank3D\EnSight\sloshingTank3D.case.
Je ziet een tank in de kijker.
Maak een Isosurface van internalMesh en kies vervolgens de variabele alpha_water.
Stel de kleur in voor Isosurface_part die u in de vorige stap hebt gemaakt. Stel deze bijvoorbeeld in op waterblauw.
Maak een Iso-volume van wanden door wanden te selecteren in het deelvenster Onderdelen en op de knop Isosurfaces in de werkbalk te klikken.
Selecteer in het dialoogvenster Type als Isovolume en stel het minimum van isovolumebereik in op 0,5. Als u het isovolume wilt maken, klikt u op Maken met geselecteerde onderdelen.
Stel de kleur in voor Iso_volume_part die u in de vorige stap hebt gemaakt. Stel deze bijvoorbeeld in op diep waterblauw.
De kleur voor wanden instellen. Stel deze bijvoorbeeld in op transparant wit.
Klik nu op Afspelen om de resultaten van de simulatie weer te geven.
Voorbeeldbestanden
Voorbeeld-XML-configuratiebestand voor clusterimplementatie door PowerShell-script
<?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>
Voorbeeldbestand 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>
Voorbeeld van een silent.cfg-bestand om MPI te installeren
# 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
Voorbeeldscript voor 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
Voorbeeldscript voor 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}