Sdílet prostřednictvím


Spuštění OpenFoam pomocí sady Microsoft HPC Pack v clusteru S RDMA s Linuxem v Azure

Důležité

Klasické virtuální počítače budou vyřazeny 1. března 2023.

Pokud používáte prostředky IaaS z ASM, dokončete migraci do 1. března 2023. Doporučujeme, abyste přechod provedli dříve, abyste mohli využívat řadu vylepšení funkcí v Azure Resource Manager.

Další informace najdete v tématu Migrace prostředků IaaS do Azure Resource Manager do 1. března 2023.

Tento článek ukazuje jeden ze způsobů, jak spustit OpenFoam na virtuálních počítačích Azure. V této části nasadíte cluster Microsoft HPC Pack s výpočetními uzly s Linuxem v Azure a spustíte úlohu OpenFoam s technologií Intel MPI. Pro výpočetní uzly můžete použít virtuální počítače Azure s podporou RDMA, aby výpočetní uzly komunikují přes síť Azure RDMA. Mezi další možnosti spuštění OpenFoam v Azure patří plně nakonfigurované komerční image dostupné na Marketplace, například OpenFoam 2.3 od UberCloudu v CentOS 6 a spuštění v Azure Batch.

Poznámka

Azure má dva různé modely nasazení pro vytváření prostředků a práci s nimi: Resource Manager a klasický model. Tento článek popisuje použití obou modelů, ale Microsoft doporučuje, aby většina nových nasazení používala model Resource Manager.

OpenFOAM (for Open Field Operation and Manipulation) je opensourcový softwarový balíček CFD (Computational Fluid Dynamics), který se často používá v oblasti inženýrství a vědy v komerčních i akademických organizacích. Obsahuje nástroje pro vytváření sítí, zejména snappyHexMesh, paralelizovaný mesher pro komplexní geometrie CAD a pro předběžné a následné zpracování. Téměř všechny procesy běží paralelně a umožňují uživatelům plně využívat počítačový hardware, který mají k dispozici.

Sada Microsoft HPC Pack poskytuje funkce pro spouštění rozsáhlých aplikací HPC a paralelních aplikací, včetně aplikací MPI, na clusterech virtuálních počítačů Microsoft Azure. Sada HPC Pack také podporuje spouštění aplikací prostředí LINUX HPC na virtuálních počítačích výpočetních uzlů s Linuxem nasazených v clusteru HPC Pack. Úvod do používání linuxových výpočetních uzlů se sadou HPC Pack najdete v tématu Začínáme s linuxovými výpočetními uzly v clusteru HPC Pack .

Poznámka

Tento článek ukazuje, jak spustit úlohu MPI pro Linux se sadou HPC Pack. Předpokládá se, že máte určitou znalost správy systému Linux a spouštění úloh MPI v clusterech s Linuxem. Pokud používáte verze MPI a OpenFOAM, které se liší od verzí uvedených v tomto článku, možná budete muset upravit některé kroky instalace a konfigurace.

Požadavky

  • Cluster HPC Pack s linuxovými výpočetními uzly s podporou RDMA – Nasaďte cluster HPC Pack s velikostí A8, A9, H16r nebo H16rm linuxovými výpočetními uzly pomocí šablony Azure Resource Manager nebo Azure PowerShell skriptu. Požadavky a kroky pro obě možnosti najdete v tématu Začínáme s výpočetními uzly s Linuxem v clusteru HPC Pack v Azure . Pokud zvolíte možnost nasazení skriptu PowerShellu, podívejte se na ukázkový konfigurační soubor v ukázkových souborech na konci tohoto článku. Tuto konfiguraci použijte k nasazení clusteru HPC Pack založeného na Azure, který se skládá z velikosti hlavního uzlu A8 Windows Server 2012 R2 a 2 výpočetních uzlů A8 SUSE SUSE Linux Enterprise Server 12. Nahraďte názvy předplatného a služby odpovídajícími hodnotami.

    Další informace, které potřebujete vědět

    • Požadavky na sítě S RDMA v Linuxu v Azure najdete v tématu Velikosti virtuálních počítačů s vysokým výpočetním výkonem.
    • Pokud použijete možnost nasazení skriptu PowerShellu, nasaďte všechny linuxové výpočetní uzly v rámci jedné cloudové služby, aby se používalo síťové připojení RDMA.
    • Po nasazení linuxových uzlů se připojte přes SSH a proveďte další úlohy správy. Podrobnosti o připojení SSH pro každý virtuální počítač s Linuxem najdete v Azure Portal.
  • Intel MPI – Pokud chcete spustit OpenFOAM na výpočetních uzlech SLES 12 HPC v Azure, musíte nainstalovat modul runtime Intel MPI Library 5 z Intel.com webu. (Intel MPI 5 je předinstalovaný na imagích HPC založených na CentOS.) V pozdějším kroku nainstalujte Intel MPI na výpočetní uzly s Linuxem. Pokud se chcete na tento krok připravit, po registraci u společnosti Intel použijte odkaz v potvrzovací e-mailu na související webovou stránku. Pak zkopírujte odkaz ke stažení souboru .tgz pro příslušnou verzi Intel MPI. Tento článek je založený na intel MPI verze 5.0.3.048.

  • OpenFOAM Source Pack – stáhněte si software OpenFOAM Source Pack pro Linux z lokality OpenFOAM Foundation. Tento článek je založený na zdrojovém balíčku verze 2.3.1, který je k dispozici ke stažení jako OpenFOAM-2.3.1.tgz. Podle pokynů dále v tomto článku rozbalte a zkompilujte OpenFOAM na linuxových výpočetních uzlech.

  • EnSight (volitelné) – Pokud chcete zobrazit výsledky simulace OpenFOAM, stáhněte a nainstalujte si vizualizační a analytický program EnSight . Informace o licencování a stahování najdete na webu EnSight.

Nastavení vzájemného vztahu důvěryhodnosti mezi výpočetními uzly

Spuštění úlohy mezi uzly na několika uzlech Linuxu vyžaduje, aby si uzly vzájemně důvěřovaly (pomocí rsh nebo ssh). Když vytvoříte cluster HPC Pack pomocí skriptu nasazení Microsoft HPC Pack IaaS, skript automaticky nastaví trvalou vzájemnou důvěru pro účet správce, který zadáte. Pro uživatele bez oprávnění správce, které vytvoříte v doméně clusteru, musíte nastavit dočasnou vzájemnou důvěryhodnost mezi uzly, když jim je přidělena úloha, a po dokončení úlohy vztah zničit. Pokud chcete vytvořit vztah důvěryhodnosti pro každého uživatele, poskytněte clusteru pár klíčů RSA, který sada HPC Pack používá pro vztah důvěryhodnosti.

Vygenerování páru klíčů RSA

Spuštěním linuxového příkazu ssh-keygen je snadné vygenerovat pár klíčů RSA, který obsahuje veřejný klíč a privátní klíč.

  1. Přihlaste se k počítači s Linuxem.

  2. Spusťte následující příkaz:

    ssh-keygen -t rsa
    

    Poznámka

    Stisknutím klávesy Enter použijte výchozí nastavení, dokud se příkaz nedokončil. Nezadávejte sem přístupové heslo; když se zobrazí výzva k zadání hesla, stiskněte Enter.

    Vygenerování páru klíčů RSA

  3. Změňte adresář na adresář ~/.ssh. Privátní klíč je uložený v id_rsa a veřejný klíč v souboru id_rsa.pub.

    Privátní a veřejné klíče

Přidání páru klíčů do clusteru HPC Pack

  1. Vytvořte připojení ke vzdálené ploše k hlavnímu uzlu pomocí účtu správce sady HPC Pack (účet správce, který jste nastavili při spuštění skriptu nasazení).

  2. K vytvoření uživatelského účtu domény v doméně Active Directory clusteru použijte standardní postupy windows serveru. Použijte například nástroj Uživatelé a počítače služby Active Directory na hlavním uzlu. Příklady v tomto článku předpokládají, že vytvoříte uživatele domény hpclab\hpcuser.

  3. Vytvořte soubor s názvem C:\cred.xml a zkopírujte do něj data klíče RSA. Ukázkový soubor cred.xml najdete na konci tohoto článku.

    <ExtendedData>
      <PrivateKey>Copy the contents of private key here</PrivateKey>
      <PublicKey>Copy the contents of public key here</PublicKey>
    </ExtendedData>
    
  4. Otevřete příkazový řádek a zadáním následujícího příkazu nastavte data přihlašovacích údajů pro účet hpclab\hpcuser. Pomocí parametru extendeddata předáte název souboru C:\cred.xml, který jste vytvořili pro data klíče.

    hpccred setcreds /extendeddata:c:\cred.xml /user:hpclab\hpcuser /password:<UserPassword>
    

    Tento příkaz se úspěšně dokončí bez výstupu. Po nastavení přihlašovacích údajů pro uživatelské účty, které potřebujete ke spouštění úloh, uložte soubor cred.xml v zabezpečeném umístění nebo ho odstraňte.

  5. Pokud jste vygenerovali pár klíčů RSA na jednom z linuxových uzlů, nezapomeňte klíče po jejich použití odstranit. Pokud sada HPC Pack najde existující soubor id_rsa nebo soubor id_rsa.pub, nenastaví vzájemnou důvěryhodnost.

Důležité

Nedoporučujeme spouštět úlohu Linuxu jako správce clusteru ve sdíleném clusteru, protože úloha odeslaná správcem běží na linuxových uzlech pod kořenovým účtem. Úloha odeslaná uživatelem bez oprávnění správce se ale spouští pod místním uživatelským účtem Linuxu se stejným názvem jako uživatel úlohy. V tomto případě sada HPC Pack nastaví pro tohoto uživatele Linuxu vzájemnou důvěryhodnost mezi uzly přiděleny k úloze. Uživatele Systému Linux můžete na uzlech Linuxu nastavit ručně před spuštěním úlohy, nebo sada HPC Pack uživatele vytvoří automaticky při odeslání úlohy. Pokud sada HPC Pack vytvoří uživatele, sada HPC Pack ho po dokončení úlohy odstraní. Aby se snížil počet bezpečnostních hrozeb, sada HPC Pack po dokončení úlohy odebere klíče.

Nastavení sdílené složky pro uzly s Linuxem

Teď nastavte standardní sdílenou složku SMB ve složce na hlavním uzlu. Pokud chcete uzlům Linuxu povolit přístup k souborům aplikací pomocí společné cesty, připojte sdílenou složku k uzlům Linuxu. Pokud chcete, můžete použít jinou možnost sdílení souborů, například Azure Files sdílenou složku (doporučenou pro mnoho scénářů) nebo sdílenou složku systému souborů NFS. Informace o sdílení souborů a podrobné kroky najdete v tématu Začínáme s výpočetními uzly s Linuxem v clusteru HPC Pack v Azure.

  1. Vytvořte složku na hlavním uzlu a nasdílejte ji všem nastavením oprávnění ke čtení a zápisu. Například na hlavním uzlu sdílejte C:\OpenFOAM jako \\SUSE12RDMA-HN\OpenFOAM. Tady SUSE12RDMA-HN je název hostitele hlavního uzlu.

  2. Otevřete okno Windows PowerShell a spusťte následující příkazy:

    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
    

První příkaz vytvoří složku s názvem /openfoam na všech uzlech ve skupině LinuxNodes. Druhý příkaz připojí sdílenou složku //SUSE12RDMA-HN/OpenFOAM k linuxovým uzlům s dir_mode a file_mode bity nastavenými na 777. Uživatelské jméno a heslo v příkazu by měly být přihlašovací údaje uživatele na hlavním uzlu.

Poznámka

Symbol "'" v druhém příkazu je řídicí symbol pro PowerShell. "'", znamená, že "," (čárka) je součástí příkazu.

Instalace MPI a OpenFOAM

Pokud chcete OpenFOAM spustit jako úlohu MPI v síti RDMA, musíte zkompilovat OpenFOAM s knihovnami Intel MPI.

Nejprve spusťte několik příkazů clusteru , které nainstalují knihovny Intel MPI (pokud ještě nejsou nainstalované) a OpenFOAM na uzly s Linuxem. Použijte sdílenou složku hlavního uzlu nakonfigurovanou dříve ke sdílení instalačních souborů mezi uzly Linuxu.

Důležité

Tyto kroky instalace a kompilace jsou příklady. Potřebujete určité znalosti správy systému Linux, abyste zajistili správnou instalaci závislých kompilátorů a knihoven. Možná budete muset upravit určité proměnné prostředí nebo jiná nastavení pro vaše verze Intel MPI a OpenFOAM. Podrobnosti najdete v tématech Průvodce instalací knihovny Intel MPI pro Linux a Instalace zdrojového balíčku OpenFOAM pro vaše prostředí.

Instalace Intel MPI

Stažený instalační balíček pro Intel MPI (l_mpi_p_5.0.3.048.tgz v tomto příkladu) uložte do složky C:\OpenFoam na hlavním uzlu, aby uzly Linuxu mohly k tomuto souboru přistupovat z /openfoam. Potom spusťte clusrun a nainstalujte knihovnu Intel MPI na všechny linuxové uzly.

  1. Následující příkazy zkopírují instalační balíček a extrahují ho do souboru /opt/intel na každém uzlu.

    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/
    
  2. Pokud chcete knihovnu Intel MPI nainstalovat bezobslužně, použijte soubor silent.cfg. Příklad najdete v ukázkových souborech na konci tohoto článku. Umístěte tento soubor do sdílené složky /openfoam. Podrobnosti o souboru silent.cfg najdete v tématu Průvodce instalací knihovny Intel MPI pro Linux – bezobslužná instalace.

    Tip

    Ujistěte se, že jste soubor silent.cfg uložili jako textový soubor s linuxovými konci řádků (pouze LF, ne CR LF). Tento krok zajistí, aby na uzlech Linuxu běžel správně.

  3. Nainstalujte knihovnu Intel MPI v tichém režimu.

    clusrun /nodegroup:LinuxNodes bash /opt/intel/l_mpi_p_5.0.3.048/install.sh --silent /openfoam/silent.cfg
    

Konfigurace MPI

Pro účely testování byste měli do souboru /etc/security/limits.conf na každém z uzlů Linuxu přidat následující řádky:

clusrun /nodegroup:LinuxNodes echo "*               hard    memlock         unlimited" `>`> /etc/security/limits.conf
clusrun /nodegroup:LinuxNodes echo "*               soft    memlock         unlimited" `>`> /etc/security/limits.conf

Po aktualizaci souboru limits.conf restartujte uzly s Linuxem. Použijte například následující příkaz clusrun :

clusrun /nodegroup:LinuxNodes systemctl reboot

Po restartování se ujistěte, že je sdílená složka připojená jako /openfoam.

Kompilace a instalace OpenFOAM

Uložte stažený instalační balíček pro zdrojový balíček OpenFOAM (v tomto příkladu OpenFOAM-2.3.1.tgz) do C:\OpenFoam na hlavním uzlu, aby uzly Linuxu mohly k tomuto souboru přistupovat z /openfoam. Pak spusťte příkazy clusrunu , které zkompilují OpenFOAM na všech uzlech s Linuxem.

  1. Na každém uzlu Linuxu vytvořte složku /opt/OpenFOAM, zkopírujte zdrojový balíček do této složky a extrahujte ho tam.

    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/
    
  2. Pokud chcete zkompilovat OpenFOAM s knihovnou Intel MPI, nejprve nastavte některé proměnné prostředí pro Intel MPI i OpenFOAM. K nastavení proměnných použijte skript Bash s názvem settings.sh. Příklad najdete v ukázkových souborech na konci tohoto článku. Tento soubor (uložený s konci řádků Linuxu) umístěte do sdílené složky /openfoam. Tento soubor obsahuje také nastavení pro moduly runtime MPI a OpenFOAM, které později použijete ke spuštění úlohy OpenFOAM.

  3. Nainstalujte závislé balíčky potřebné ke kompilaci OpenFOAM. V závislosti na vaší distribuci Linuxu možná budete muset nejprve přidat úložiště. Spusťte příkazy pro spuštění clusteru podobné následujícímu:

    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++
    

    V případě potřeby pomocí protokolu SSH ke každému uzlu s Linuxem spusťte příkazy, abyste ověřili, že fungují správně.

  4. Spuštěním následujícího příkazu zkompilujte OpenFOAM. Dokončení procesu kompilace nějakou dobu trvá a do standardního výstupu se vygeneruje velké množství informací protokolu, takže k zobrazení výstupu prokládaného použijte možnost /interleaved .

    clusrun /nodegroup:LinuxNodes /interleaved source /openfoam/settings.sh `&`& /opt/OpenFOAM/OpenFOAM-2.3.1/Allwmake
    

    Poznámka

    Symbol "'" v příkazu je řídicí symbol pro PowerShell. "'&" znamená, že "&" je součástí příkazu.

Příprava ke spuštění úlohy OpenFOAM

Teď se připravte na spuštění úlohy MPI sloshingTank3D, která je jednou z ukázek OpenFoam, na dvou linuxových uzlech.

Nastavení běhového prostředí

Pokud chcete nastavit běhová prostředí pro MPI a OpenFOAM na linuxových uzlech, spusťte následující příkaz v okně Windows PowerShell na hlavním uzlu. (Tento příkaz je platný jenom pro SUSE Linux.)

clusrun /nodegroup:LinuxNodes cp /openfoam/settings.sh /etc/profile.d/

Příprava ukázkových dat

Sdílenou složku hlavního uzlu, kterou jste nakonfigurovali dříve, použijte ke sdílení souborů mezi uzly Linuxu (připojené jako /openfoam).

  1. SSH k jednomu z linuxových výpočetních uzlů.

  2. Spuštěním následujícího příkazu nastavte běhové prostředí OpenFOAM, pokud jste to ještě neudělali.

    $ source /openfoam/settings.sh
    
  3. Zkopírujte ukázku sloshingTank3D do sdílené složky a přejděte do ní.

    $ cp -r $FOAM_TUTORIALS/multiphase/interDyMFoam/ras/sloshingTank3D /openfoam/
    
    $ cd /openfoam/sloshingTank3D
    
  4. Při použití výchozích parametrů této ukázky může spuštění trvat desítky minut, takže můžete chtít některé parametry upravit, aby běžela rychleji. Jednou z jednoduchých možností je upravit proměnné časového kroku deltaT a writeInterval v souboru system/controlDict. Tento soubor ukládá všechna vstupní data týkající se řízení času a čtení a zápisu dat řešení. Můžete například změnit hodnotu deltaT z 0,05 na 0,5 a hodnotu writeInterval z 0,05 na 0,5.

    Úprava proměnných kroků

  5. Zadejte požadované hodnoty proměnných v souboru system/decomposeParDict. V tomto příkladu se používají dva linuxové uzly s 8 jádry, takže nastavte numberOfSubdomains na 16 a n hierarchicalCoeffs na (1 1 16), což znamená spustit OpenFOAM paralelně s 16 procesy. Další informace najdete v uživatelské příručce k OpenFOAM: 3.4 Paralelní spouštění aplikací.

    Dekompozitní procesy

  6. Spuštěním následujících příkazů z adresáře sloshingTank3D připravte ukázková data.

    $ . $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  
    
  7. Na hlavním uzlu byste měli vidět, že se ukázkové datové soubory zkopírují do C:\OpenFoam\sloshingTank3D. (C:\OpenFoam je sdílená složka na hlavním uzlu.)

    Datové soubory na hlavním uzlu

Soubor hostitele pro mpirun

V tomto kroku vytvoříte soubor hostitele (seznam výpočetních uzlů), který používá příkaz mpirun .

  1. Na jednom z linuxových uzlů vytvořte v části /openfoam soubor s názvem hostfile, aby byl tento soubor dostupný na adrese /openfoam/hostfile na všech uzlech Linuxu.

  2. Do tohoto souboru zapište názvy uzlů s Linuxem. V tomto příkladu soubor obsahuje následující názvy:

    SUSE12RDMA-LN1
    SUSE12RDMA-LN2
    

    Tip

    Tento soubor můžete také vytvořit v umístění C:\OpenFoam\hostfile na hlavním uzlu. Pokud zvolíte tuto možnost, uložte ji jako textový soubor s konci řádků Linuxu (pouze LF, ne CR LF). Tím se zajistí, že bude správně fungovat na uzlech s Linuxem.

    Obálka skriptu Bash

    Pokud máte mnoho linuxových uzlů a chcete, aby vaše úloha běžela jenom na některých z nich, není vhodné použít soubor s pevným hostitelem, protože nevíte, které uzly budou vaší úloze přiděleny. V tomto případě napište obálku skriptu Bash pro mpirun , aby se soubor hostitele vytvořil automaticky. Na konci tohoto článku najdete příklad obálky skriptu Bash s názvem hpcimpirun.sh a uložte ho jako /openfoam/hpcimpirun.sh. Tento ukázkový skript provede následující akce:

    1. Nastaví proměnné prostředí pro mpirun a některé další parametry příkazu pro spuštění úlohy MPI prostřednictvím sítě RDMA. V tomto případě nastaví následující proměnné:

      • I_MPI_FABRICS=shm:dapl
      • I_MPI_DAPL_PROVIDER=ofa-v2-ib0
      • I_MPI_DYNAMIC_CONNECTION=0
    2. Vytvoří soubor hostitele podle proměnné prostředí $CCP_NODES_CORES, která je nastavena hlavním uzlem HPC při aktivaci úlohy.

      Formát $CCP_NODES_CORES se řídí tímto vzorem:

      <Number of nodes> <Name of node1> <Cores of node1> <Name of node2> <Cores of node2>...`
      

      kde:

      • <Number of nodes> – počet uzlů přidělených této úloze.
      • <Name of node_n_...> – název každého uzlu přiděleného této úloze.
      • <Cores of node_n_...> – počet jader na uzlu přiděleném této úloze.

      Pokud například úloha potřebuje ke spuštění dva uzly, je $CCP_NODES_CORES podobný

      2 SUSE12RDMA-LN1 8 SUSE12RDMA-LN2 8
      
    3. Zavolá příkaz mpirun a připojí k příkazovému řádku dva parametry.

      • --hostfile <hostfilepath>: <hostfilepath> – cesta k souboru hostitele, který skript vytvoří
      • -np ${CCP_NUMCPUS}: ${CCP_NUMCPUS} – proměnná prostředí nastavená hlavním uzlem sady HPC Pack, která ukládá celkový počet jader přidělených této úloze. V tomto případě určuje počet procesů pro mpirun.

Odeslání úlohy OpenFOAM

Teď můžete odeslat úlohu ve Správci clusteru HPC. Pro některé úlohy úlohy musíte předat skript hpcimpirun.sh na příkazových řádcích.

  1. Připojte se k hlavnímu uzlu clusteru a spusťte Správce clusteru HPC.

  2. V části Správa prostředků se ujistěte, že jsou výpočetní uzly s Linuxem ve stavu Online . Pokud tomu tak není, vyberte je a klikněte na Převést online.

  3. V části Správa úloh klikněte na Nová úloha.

  4. Zadejte název úlohy, například sloshingTank3D.

    Podrobnosti o úloze

  5. V části Prostředky úlohy zvolte typ prostředku node a nastavte Minimum na 2. Tato konfigurace spustí úlohu na dvou linuxových uzlech, z nichž každý má v tomto příkladu osm jader.

    Zdroje informací o úlohách

  6. V levém navigačním panelu klikněte na Upravit úkoly a potom kliknutím na Přidat přidejte úkol do úlohy. Přidejte do úlohy čtyři úkoly s následujícími příkazovými řádky a nastavením.

    Poznámka

    Spuštění source /openfoam/settings.sh nastaví běhová prostředí OpenFOAM a MPI, takže každá z následujících úloh ho volá před příkazem OpenFOAM.

    • Úkol 1. Spuštěním příkazu decomposePar vygenerujte datové soubory pro paralelní spuštění interDyMFoam .

      • Přiřazení jednoho uzlu k úkolu
      • Příkazový řádek - source /openfoam/settings.sh && decomposePar -force > /openfoam/decomposePar${CCP_JOBID}.log
      • Pracovní adresář – /openfoam/sloshingTank3D

      Prohlédněte si následující obrázek. Podobně nakonfigurujete i zbývající úkoly.

      Podrobnosti o úkolu 1

    • Úkol 2. Spuštěním příkazu interDyMFoam paralelně vypočítáte ukázku.

      • Přiřazení dvou uzlů k úkolu
      • Příkazový řádek - source /openfoam/settings.sh && /openfoam/hpcimpirun.sh interDyMFoam -parallel > /openfoam/interDyMFoam${CCP_JOBID}.log
      • Pracovní adresář – /openfoam/sloshingTank3D
    • Úkol 3. Spuštěním příkazu reconstructPar sloučíte sady časových adresářů z každého adresáře processor_N_ do jedné sady.

      • Přiřazení jednoho uzlu k úkolu
      • Příkazový řádek - source /openfoam/settings.sh && reconstructPar > /openfoam/reconstructPar${CCP_JOBID}.log
      • Pracovní adresář – /openfoam/sloshingTank3D
    • Úkol 4. Paralelní spuštěním příkazu foamToEnsight převeďte výsledné soubory OpenFOAM do formátu EnSight a umístěte soubory EnSight do adresáře s názvem Ensight v adresáři případu.

      • Přiřazení dvou uzlů k úkolu
      • Příkazový řádek - source /openfoam/settings.sh && /openfoam/hpcimpirun.sh foamToEnsight -parallel > /openfoam/foamToEnsight${CCP_JOBID}.log
      • Pracovní adresář – /openfoam/sloshingTank3D
  7. Přidejte k těmto úkolům závislosti ve vzestupném pořadí úkolů.

    Závislosti úkolů

  8. Kliknutím na Odeslat spusťte tuto úlohu.

    Sada HPC Pack ve výchozím nastavení odešle úlohu jako váš aktuální přihlášený uživatelský účet. Po kliknutí na Odeslat se může zobrazit dialogové okno s výzvou k zadání uživatelského jména a hesla.

    Přihlašovací údaje úlohy

    Za určitých podmínek si sada HPC Pack pamatuje dříve zadané informace o uživateli a toto dialogové okno nezobrazí. Pokud chcete, aby ho sada HPC Pack znovu zobrazila, zadejte na příkazovém řádku následující příkaz a pak úlohu odešlete.

    hpccred delcreds
    
  9. Úloha trvá od desítek minut až po několik hodin podle parametrů, které jste pro ukázku nastavili. V heat mapě uvidíte úlohu spuštěnou na linuxových uzlech.

    Heat mapa

    Na každém uzlu se spustí osm procesů.

    Procesy v Linuxu

  10. Po dokončení úlohy vyhledejte výsledky úlohy ve složkách ve složce C:\OpenFoam\sloshingTank3D a soubory protokolů v umístění C:\OpenFoam.

Zobrazení výsledků v EnSightu

Volitelně můžete použít EnSight k vizualizaci a analýze výsledků úlohy OpenFOAM.

  1. Po instalaci nástroje EnSight na hlavním uzlu ho spusťte.

  2. Otevřete soubor C:\OpenFoam\sloshingTank3D\EnSight\sloshingTank3D.case.

    Vidíte v prohlížeči tank.

    Tank v EnSightu

  3. Vytvořte isosurface z internalMesh a pak zvolte proměnnou alpha_water.

    Vytvoření izosurface

  4. Nastavte barvu pro Isosurface_part vytvořené v předchozím kroku. Nastavte ho například na modrou vodu.

    Upravit barvu izosurface

  5. Vytvořte iso-objem ze stěn výběrem stěn na panelu Díly a kliknutím na tlačítko Isosurfaces na panelu nástrojů.

  6. V dialogovém okně vyberte Typ jako Isovolume a nastavte minimální rozsah isovolume na 0,5. Pokud chcete vytvořit soubor, klikněte na Vytvořit s vybranými částmi.

  7. Nastavte barvu pro Iso_volume_part vytvořené v předchozím kroku. Nastavte ho například na hloubkově modrou.

  8. Nastavte barvu stěn. Nastavte ho například na průhlednou bílou.

  9. Teď klikněte na Přehrát a zobrazte výsledky simulace.

    Výsledek v nádrži

Ukázkové soubory

Ukázkový konfigurační soubor XML pro nasazení clusteru pomocí skriptu PowerShellu

<?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>

Ukázkový soubor 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>

Ukázkový soubor silent.cfg pro instalaci 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


Ukázkový skript 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

Ukázkový skript 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}