重要
クラシック VM は、2023 年 3 月 1 日に廃止されます。
ASM の IaaS リソースを使用する場合は、2023 年 3 月 1 日までに移行を完了してください。 Azure Resource Manager の多数の機能強化を活用するために、早急に切り替えを行うことをお勧めします。
詳細については、「2023 年 3 月 1 日までに IaaS リソースを Azure Resource Manager に移行する」を参照してください。
この記事では、Azure 仮想マシンで OpenFoam を実行する 1 つの方法について説明します。 ここでは、Linux コンピューティング ノードを使用して Microsoft HPC Pack クラスターを Azure にデプロイし、Intel MPI で OpenFoam ジョブを実行します。 コンピューティング ノードに RDMA 対応の Azure VM を使用して、コンピューティング ノードが Azure RDMA ネットワーク経由で通信できるようにします。 Azure で OpenFoam を実行するその他のオプションには、Marketplace で利用できる完全に構成された商用イメージ ( CentOS 6 の UberCloud の OpenFoam 2.3 など) や 、Azure Batch で実行する方法などがあります。
注
Azure には、リソースの作成と操作に関して、2 種類のデプロイ モデルがあります。Resource Manager とクラシックです。 この記事では、両方のモデルについて取り上げていますが、最新のデプロイではリソース マネージャー モデルの使用をお勧めします。
OpenFOAM (オープン フィールド操作および操作用) は、オープンソースの計算流体力学 (CFD) ソフトウェア パッケージであり、商業組織と学術組織の両方で、エンジニアリングと科学で広く使用されています。 これには、メッシュ作成、特に snappyHexMesh、複雑な CAD ジオメトリ用の並列化されたメッシャー、および前処理と後処理のためのツールが含まれています。 ほぼすべてのプロセスが並列で実行されるため、ユーザーはコンピューター ハードウェアを自由に利用できます。
Microsoft HPC Pack には、Microsoft Azure 仮想マシンのクラスターで、MPI アプリケーションを含む大規模な HPC アプリケーションと並列アプリケーションを実行する機能が用意されています。 HPC Pack では、HPC Pack クラスターにデプロイされた Linux コンピューティング ノード VM での Linux HPC アプリケーションの実行もサポートされています。 HPC Pack での Linux コンピューティング ノードの使用の概要については、 Azure の HPC Pack クラスターでの Linux コンピューティング ノードの概要に関するページを参照してください。
注
この記事では、HPC Pack を使用して Linux MPI ワークロードを実行する方法について説明します。 Linux システム管理と Linux クラスターでの MPI ワークロードの実行に関する知識があることを前提としています。 この記事に示されているバージョンとは異なるバージョンの MPI と OpenFOAM を使用する場合は、いくつかのインストールと構成の手順を変更する必要がある場合があります。
[前提条件]
RDMA 対応の Linux コンピューティング ノードを備えた HPC Pack クラスター - Azure Resource Manager テンプレート または Azure PowerShell スクリプトを使用して、サイズ A8、A9、H16r、または H16rm Linux コンピューティング ノードを持つ HPC Pack クラスターをデプロイします。 いずれかのオプションの前提条件と手順については、「 Azure の HPC Pack クラスターでの Linux コンピューティング ノードの概要 」を参照してください。 PowerShell スクリプトのデプロイ オプションを選択した場合は、この記事の最後にあるサンプル ファイルのサンプル構成ファイルを参照してください。 この構成を使用して、サイズ A8 Windows Server 2012 R2 ヘッド ノードと 2 サイズの A8 SUSE Linux Enterprise Server 12 コンピューティング ノードで構成される Azure ベースの HPC Pack クラスターをデプロイします。 サブスクリプション名とサービス名に適切な値を置き換えます。
その他の注意事項
- Azure での Linux RDMA ネットワークの前提条件については、 高パフォーマンスコンピューティング VM のサイズに関するページを参照してください。
- PowerShell スクリプトのデプロイ オプションを使用する場合は、RDMA ネットワーク接続を使用するために、1 つのクラウド サービス内にすべての Linux コンピューティング ノードをデプロイします。
- Linux ノードをデプロイした後、SSH で接続して、追加の管理タスクを実行します。 Azure portal で各 Linux VM の SSH 接続の詳細を見つけます。
Intel MPI - Azure の SLES 12 HPC コンピューティング ノードで OpenFOAM を実行するには、 Intel.com サイトから Intel MPI Library 5 ランタイムをインストールする必要があります。 (Intel MPI 5 は CentOS ベースの HPC イメージにプレインストールされています)。後の手順では、必要に応じて、Linux コンピューティング ノードに Intel MPI をインストールします。 この手順を準備するには、Intel に登録した後、関連する Web ページへの確認メールのリンクに従います。 次に、Intel MPI の適切なバージョンの .tgz ファイルのダウンロード リンクをコピーします。 この記事は Intel MPI バージョン 5.0.3.048 に基づいています。
OpenFOAM ソース パック - OpenFOAM Foundation サイトから Linux 用 OpenFOAM ソース パック ソフトウェアをダウンロードします。 この記事は、OpenFOAM-2.3.1.tgz としてダウンロードできるソース パック バージョン 2.3.1 に基づいています。 この記事の後半の手順に従って、Linux コンピューティング ノードで OpenFOAM をアンパックしてコンパイルします。
EnSight (省略可能) - OpenFOAM シミュレーションの結果を表示するには、 EnSight 視覚化および分析プログラムをダウンロードしてインストールします。 ライセンスとダウンロードの情報は、EnSight サイトにあります。
コンピューティング ノード間の相互信頼を設定する
複数の Linux ノードでクロスノード ジョブを実行するには、ノードが ( rsh または ssh によって) 相互に信頼する必要があります。 Microsoft HPC Pack IaaS デプロイ スクリプトを使用して HPC Pack クラスターを作成すると、指定した管理者アカウントの永続的な相互信頼が自動的に設定されます。 クラスターのドメインで作成する管理者以外のユーザーの場合は、ジョブが割り当てられるときにノード間の一時的な相互信頼を設定し、ジョブの完了後にリレーションシップを破棄する必要があります。 各ユーザーの信頼を確立するには、HPC Pack が信頼関係に使用するクラスターに RSA キー ペアを指定します。
RSA キー ペアを生成する
Linux ssh-keygen コマンドを実行することで、公開キーと秘密キーを含む RSA キー ペアを簡単に生成できます。
Linux コンピューターにログオンします。
次のコマンドを実行します。
ssh-keygen -t rsa注
コマンドが完了するまで、 Enter キー を押して既定の設定を使用します。 ここにパスフレーズを入力しないでください。パスワードの入力を求められたら、 Enter キーを押します。
ディレクトリを ~/.ssh ディレクトリに変更します。 秘密キーは id_rsa に格納され、公開キーは id_rsa.pub に格納されます。
HPC Pack クラスターにキー ペアを追加する
HPC Pack 管理者アカウント (デプロイ スクリプトの実行時に設定した管理者アカウント) を使用して、ヘッド ノードへのリモート デスクトップ接続を作成します。
クラスターの Active Directory ドメインにドメイン ユーザー アカウントを作成するには、標準の Windows Server 手順を使用します。 たとえば、ヘッド ノードで Active Directory ユーザーとコンピューター ツールを使用します。 この記事の例では、hpclab\hpcuser という名前のドメイン ユーザーを作成することを前提としています。
C:\cred.xml という名前のファイルを作成し、そのファイルに RSA キー データをコピーします。 サンプル cred.xml ファイルは、この記事の最後にあります。
<ExtendedData> <PrivateKey>Copy the contents of private key here</PrivateKey> <PublicKey>Copy the contents of public key here</PublicKey> </ExtendedData>コマンド プロンプトを開き、次のコマンドを入力して、hpclab\hpcuser アカウントの資格情報データを設定します。 extendeddata パラメーターを使用して、キー データ用に作成 C:\cred.xml ファイルの名前を渡します。
hpccred setcreds /extendeddata:c:\cred.xml /user:hpclab\hpcuser /password:<UserPassword>このコマンドは、出力なしで正常に完了します。 ジョブを実行する必要があるユーザー アカウントの資格情報を設定した後、cred.xml ファイルを安全な場所に保存するか、削除する必要があります。
Linux ノードのいずれかで RSA キー ペアを生成した場合は、キーの使用が完了したら必ず削除してください。 HPC Pack で既存のid_rsa ファイルまたは id_rsa.pub ファイルが見つかると、相互信頼は設定されません。
重要
管理者によって送信されたジョブは Linux ノードのルート アカウントで実行されるため、共有クラスターでクラスター管理者として Linux ジョブを実行することはお勧めしません。 ただし、管理者以外のユーザーによって送信されたジョブは、ジョブ ユーザーと同じ名前のローカル Linux ユーザー アカウントで実行されます。 この場合、HPC Pack は、ジョブに割り当てられたノード全体で、この Linux ユーザーの相互信頼を設定します。 ジョブを実行する前に Linux ノードで Linux ユーザーを手動で設定するか、ジョブの送信時に HPC Pack によってユーザーが自動的に作成されます。 HPC Pack によってユーザーが作成された場合、HPC Pack はジョブの完了後にユーザーを削除します。 セキュリティ上の脅威を軽減するために、HPC Pack はジョブの完了後にキーを削除します。
Linux ノードのファイル共有を設定する
次に、ヘッド ノード上のフォルダーに標準 SMB 共有を設定します。 Linux ノードが共通パスを持つアプリケーション ファイルにアクセスできるようにするには、Linux ノードに共有フォルダーをマウントします。 必要に応じて、Azure Files 共有などの別のファイル共有オプション (多くのシナリオに推奨) や NFS 共有を使用できます。 ファイル共有情報と詳細な手順については、「 Azure の HPC Pack クラスターでの Linux コンピューティング ノードの概要」を参照してください。
ヘッド ノードにフォルダーを作成し、読み取り/書き込み権限を設定して Everyone に共有します。 たとえば、ヘッド ノードで C:\OpenFOAM を \\SUSE12RDMA-HN\OpenFOAM として共有します。 ここで 、SUSE12RDMA-HN はヘッド ノードのホスト名です。
Windows PowerShell ウィンドウを開き、次のコマンドを実行します。
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
最初のコマンドは、LinuxNodes グループ内のすべてのノードに /openfoam という名前のフォルダーを作成します。 2 番目のコマンドは、共有フォルダー //SUSE12RDMA-HN/OpenFOAM を、dir_modeビットと file_mode ビットが 777 に設定された Linux ノードにマウントします。 コマンドの ユーザー名 と パスワード は、ヘッド ノード上のユーザーの資格情報である必要があります。
注
2 番目のコマンドの "'" 記号は、PowerShell のエスケープ シンボルです。 "'," は、"," (コンマ文字) がコマンドの一部であることを意味します。
MPI と OpenFOAM をインストールする
RDMA ネットワーク上で MPI ジョブとして OpenFOAM を実行するには、Intel MPI ライブラリを使用して OpenFOAM をコンパイルする必要があります。
まず、いくつかの clusrun コマンドを実行して、Intel MPI ライブラリ (まだインストールされていない場合) と OpenFOAM を Linux ノードにインストールします。 インストール ファイルを Linux ノード間で共有するように以前に構成したヘッド ノード共有を使用します。
重要
これらのインストールとコンパイルの手順は例です。 依存コンパイラとライブラリが正しくインストールされるようにするには、Linux システム管理に関する知識が必要です。 Intel MPI と OpenFOAM のバージョンの特定の環境変数またはその他の設定を変更することが必要になる場合があります。 詳細については、 Linux インストール ガイド用の Intel MPI ライブラリ と、お使いの環境用 の OpenFOAM ソース パックのインストール を参照してください。
Intel MPI をインストールする
Linux ノードが /openfoam からこのファイルにアクセスできるように、ダウンロードした Intel MPI (この例では l_mpi_p_5.0.3.048.tgz) のインストール パッケージをヘッド ノードの C:\OpenFoam に保存します。 次に 、clusrun を実行して、すべての Linux ノードに Intel MPI ライブラリをインストールします。
次のコマンドは、インストール パッケージをコピーし、各ノードの /opt/intel に展開します。
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/Intel MPI ライブラリをサイレント インストールするには、silent.cfg ファイルを使用します。 サンプル ファイルの例は、この記事の最後にあります。 このファイルを共有フォルダー /openfoam に配置します。 silent.cfg ファイルの詳細については、 Intel MPI Library for Linux Installation Guide - Silent Installation を参照してください。
ヒント
silent.cfg ファイルをテキストファイルとして保存し、改行コードを Linux の行末記号 (LF のみ) にしてください (CR LF ではありません)。 この手順により、Linux ノードで正常に実行されます。
Intel MPI ライブラリをサイレント モードでインストールします。
clusrun /nodegroup:LinuxNodes bash /opt/intel/l_mpi_p_5.0.3.048/install.sh --silent /openfoam/silent.cfg
MPI の構成
テストの場合は、各 Linux ノードの /etc/security/limits.conf に次の行を追加する必要があります。
clusrun /nodegroup:LinuxNodes echo "* hard memlock unlimited" `>`> /etc/security/limits.conf
clusrun /nodegroup:LinuxNodes echo "* soft memlock unlimited" `>`> /etc/security/limits.conf
limits.conf ファイルを更新した後、Linux ノードを再起動します。 たとえば、次の clusrun コマンドを使用します。
clusrun /nodegroup:LinuxNodes systemctl reboot
再起動後、共有フォルダーが /openfoam としてマウントされていることを確認します。
OpenFOAM をコンパイルしてインストールする
Linux ノードが /openfoam からこのファイルにアクセスできるように、OpenFOAM ソース パック (この例では OpenFOAM-2.3.1.tgz) のダウンロードしたインストール パッケージをヘッド ノード上の C:\OpenFoam に保存します。 次に 、clusrun コマンドを実行して、すべての Linux ノードで OpenFOAM をコンパイルします。
各 Linux ノードにフォルダー /opt/OpenFOAM を作成し、ソース パッケージをこのフォルダーにコピーして、そこに展開します。
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/Intel MPI ライブラリを使用して OpenFOAM をコンパイルするには、まず Intel MPI と OpenFOAM の両方に対していくつかの環境変数を設定します。 変数を設定するには、settings.sh という bash スクリプトを使用します。 サンプル ファイルの例は、この記事の最後にあります。 このファイル (Linux 行の末尾で保存) を共有フォルダー /openfoam に配置します。 このファイルには、後で OpenFOAM ジョブを実行するために使用する MPI ランタイムと OpenFOAM ランタイムの設定も含まれています。
OpenFOAM をコンパイルするために必要な依存パッケージをインストールします。 Linux ディストリビューションによっては、最初にリポジトリの追加が必要になる場合があります。 次のような clusrun コマンドを実行します。
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++必要に応じて、各 Linux ノードに SSH 接続してコマンドを実行し、コマンドが正常に実行されていることを確認します。
OpenFOAM をコンパイルするには、次のコマンドを実行します。 コンパイル プロセスの完了には時間がかかり、大量のログ情報が標準出力に生成されるため、 /interleaved オプションを使用して、インターリーブされた出力を表示します。
clusrun /nodegroup:LinuxNodes /interleaved source /openfoam/settings.sh `&`& /opt/OpenFOAM/OpenFOAM-2.3.1/Allwmake注
コマンドの "'" 記号は、PowerShell のエスケープ シンボルです。 「&」は、コマンドの一部であることを意味します。
OpenFOAM ジョブの実行を準備する
次に、OpenFoam サンプルの 1 つである sloshingTank3D という MPI ジョブを 2 つの Linux ノードで実行する準備を整えます。
ランタイム環境を設定する
Linux ノードで MPI と OpenFOAM のランタイム環境を設定するには、ヘッド ノードの Windows PowerShell ウィンドウで次のコマンドを実行します。 (このコマンドは SUSE Linux でのみ有効です)。
clusrun /nodegroup:LinuxNodes cp /openfoam/settings.sh /etc/profile.d/
サンプル データの準備
Linux ノード間でファイルを共有するように以前に構成したヘッド ノード共有 (/openfoam としてマウント) を使用します。
Linux コンピューティング ノードのいずれかに SSH 接続します。
OpenFOAM ランタイム環境をまだ設定していない場合は、次のコマンドを実行して設定します。
$ source /openfoam/settings.shsloshingTank3D サンプルを共有フォルダーにコピーし、そこに移動します。
$ cp -r $FOAM_TUTORIALS/multiphase/interDyMFoam/ras/sloshingTank3D /openfoam/ $ cd /openfoam/sloshingTank3Dこのサンプルの既定のパラメーターを使用すると、実行に数十分かかる場合があるため、一部のパラメーターを変更して実行速度を向上させることができます。 1 つの簡単な選択肢は、system/controlDict ファイル内の時間ステップ変数 deltaT と writeInterval を変更することです。 このファイルには、時間の制御とソリューション データの読み取りと書き込みに関連するすべての入力データが格納されます。 たとえば、deltaT の値を 0.05 から 0.5 に変更し、writeInterval の値を 0.05 から 0.5 に変更できます。
system/decomposeParDict ファイル内の変数に必要な値を指定します。 この例では、それぞれ 8 コアの 2 つの Linux ノードを使用するため、numberOfSubdomains を 16 に、n 個の hierarchyCoeffs を (1 1 16) に設定します。これは、OpenFOAM を 16 プロセスと並行して実行することを意味します。 詳細については、「 OpenFOAM ユーザー ガイド: 3.4 アプリケーションを並列で実行する」を参照してください。
sloshingTank3D ディレクトリから次のコマンドを実行して、サンプル データを準備します。
$ . $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ヘッド ノードでは、サンプル データ ファイルが C:\OpenFoam\sloshingTank3D にコピーされていることがわかります。 (C:\OpenFoam はヘッド ノード上の共有フォルダーです)。
mpirun のホスト ファイル
この手順では、 mpirun コマンドが使用するホスト ファイル (コンピューティング ノードの一覧) を作成します。
Linux ノードの 1 つで、/openfoam の下に hostfile という名前のファイルを作成します。このファイルは、すべての Linux ノードの /openfoam/hostfile でアクセスできます。
Linux ノード名をこのファイルに書き込みます。 この例では、ファイルには次の名前が含まれています。
SUSE12RDMA-LN1 SUSE12RDMA-LN2ヒント
ヘッド ノードの C:\OpenFoam\hostfile でこのファイルを作成することもできます。 このオプションを選択した場合は、Linux 行の末尾 (CR LF ではなく LF のみ) を含むテキスト ファイルとして保存します。 これにより、Linux ノードで適切に実行されます。
Bash スクリプト ラッパー
Linux ノードが多数あり、その一部でのみジョブを実行する場合は、ジョブに割り当てられるノードがわからないため、固定ホスト ファイルを使用することはお勧めしません。 この場合は、 mpirun の bash スクリプト ラッパーを記述して、ホスト ファイルを自動的に作成します。 この記事の最後に、hpcimpirun.sh という bash スクリプト ラッパーの例を見つけて、/openfoam/hpcimpirun.sh として保存します。このスクリプト例では、次の処理が行われます。
mpirun の環境変数と、RDMA ネットワーク経由で MPI ジョブを実行するためのいくつかの追加コマンド パラメーターを設定します。 この場合、次の変数が設定されます。
- I_MPI_FABRICS=shm:dapl
- I_MPI_DAPL_PROVIDER=ofa-v2-ib0
- I_MPI_DYNAMIC_CONNECTION=0
ジョブのアクティブ化時に HPC ヘッド ノードによって設定される環境変数 $CCP_NODES_CORES に従ってホスト ファイルを作成します。
$CCP_NODES_CORES の形式は、次のパターンに従います。
<Number of nodes> <Name of node1> <Cores of node1> <Name of node2> <Cores of node2>...`どこ
-
<Number of nodes>- このジョブに割り当てられたノードの数。 -
<Name of node_n_...>- このジョブに割り当てられた各ノードの名前。 -
<Cores of node_n_...>- このジョブに割り当てられたノード上のコアの数。
たとえば、ジョブを実行するために 2 つのノードが必要な場合、$CCP_NODES_CORES は次のようになります。
2 SUSE12RDMA-LN1 8 SUSE12RDMA-LN2 8-
mpirun コマンドを呼び出し、コマンド ラインに 2 つのパラメーターを追加します。
-
--hostfile <hostfilepath>: <hostfilepath>- スクリプトによって作成されるホスト ファイルのパス -
-np ${CCP_NUMCPUS}: ${CCP_NUMCPUS}- HPC Pack ヘッド ノードによって設定された環境変数。このジョブに割り当てられたコアの合計数が格納されます。 この場合、 mpirun のプロセスの数を指定します。
-
OpenFOAM ジョブを送信する
HPC クラスター マネージャーでジョブを送信できるようになりました。 一部のジョブ タスクのコマンド ラインでスクリプト hpcimpirun.sh を渡す必要があります。
クラスター ヘッド ノードに接続し、HPC クラスター マネージャーを起動します。
リソース管理で、Linux コンピューティング ノードが オンライン 状態であることを確認します。 そうでない場合は、それらを選択し、[ オンラインにする] をクリックします。
[ジョブ管理] で、[新しいジョブ] をクリックします。
sloshingTank3D などのジョブの名前を入力します。
[ジョブ リソース] で、リソースの種類として [ノード] を選択し、[最小] を 2 に設定します。 この構成では、2 つの Linux ノードでジョブが実行されます。この例では、それぞれ 8 つのコアがあります。
左側のナビゲーションで [ タスクの編集] をクリックし、[ 追加 ] をクリックしてタスクをジョブに追加します。 次のコマンド ラインと設定を使用して、4 つのタスクをジョブに追加します。
注
source /openfoam/settings.sh実行すると、OpenFOAM ランタイム環境と MPI ランタイム環境が設定されるため、次の各タスクは OpenFOAM コマンドの前にそれを呼び出します。タスク 1. decomposePar を実行して、interDyMFoam を並列で実行するためのデータ ファイルを生成します。
- タスクに 1 つのノードを割り当てる
-
[コマンド ライン] -
source /openfoam/settings.sh && decomposePar -force > /openfoam/decomposePar${CCP_JOBID}.log - 作業ディレクトリ - /openfoam/sloshingTank3D
次の図を参照してください。 残りのタスクも同様に構成します。
タスク 2. interDyMFoam を並列で実行してサンプルを計算します。
- タスクに 2 つのノードを割り当てる
-
[コマンド ライン] -
source /openfoam/settings.sh && /openfoam/hpcimpirun.sh interDyMFoam -parallel > /openfoam/interDyMFoam${CCP_JOBID}.log - 作業ディレクトリ - /openfoam/sloshingTank3D
タスク 3. 再構築Par を実行して、各processor_N_ディレクトリの時刻ディレクトリのセットを 1 つのセットにマージします。
- タスクに 1 つのノードを割り当てる
-
[コマンド ライン] -
source /openfoam/settings.sh && reconstructPar > /openfoam/reconstructPar${CCP_JOBID}.log - 作業ディレクトリ - /openfoam/sloshingTank3D
タスク 4. foamToEnsight を並列で実行して OpenFOAM の結果ファイルを EnSight 形式に変換し、EnSight ファイルをケース ディレクトリの Ensight という名前のディレクトリに配置します。
- タスクに 2 つのノードを割り当てる
-
[コマンド ライン] -
source /openfoam/settings.sh && /openfoam/hpcimpirun.sh foamToEnsight -parallel > /openfoam/foamToEnsight${CCP_JOBID}.log - 作業ディレクトリ - /openfoam/sloshingTank3D
タスクの昇順でこれらのタスクに依存関係を追加します。
[ 送信] をクリックしてこのジョブを実行します。
既定では、HPC Pack は現在ログオンしているユーザー アカウントとしてジョブを送信します。 [ 送信] をクリックすると、ユーザー名とパスワードの入力を求めるダイアログ ボックスが表示されることがあります。
一部の条件下では、HPC Pack は前に入力したユーザー情報を記憶し、このダイアログ ボックスは表示されません。 HPC Pack にもう一度表示するには、コマンド プロンプトで次のコマンドを入力し、ジョブを送信します。
hpccred delcredsこのジョブは、サンプルに設定したパラメーターに従って、数十分から数時間かかります。 ヒート マップには、Linux ノードで実行されているジョブが表示されます。
各ノードで、8 つのプロセスが開始されます。
ジョブが完了したら、C:\OpenFoam\sloshingTank3D の下のフォルダーと C:\OpenFoam のログ ファイルでジョブの結果を見つけます。
EnSight で結果を表示する
必要に応じて 、EnSight を使用して OpenFOAM ジョブの結果を視覚化および分析します。
ヘッド ノードに EnSight をインストールしたら、開始します。
C:\OpenFoam\sloshingTank3D\EnSight\sloshingTank3D.case を開きます。
ビューアーにタンクが表示されます。
internalMesh から等値面を作成し、変数alpha_waterを選択します。
前の手順で作成 したIsosurface_part の色を設定します。 たとえば、水の青に設定します。
[パーツ]パネルで[壁]を選択し、壁から[アイソメボリューム]を作成し、ツールバーの[等値面]ボタンをクリックします。
ダイアログ ボックスで、種類 を Isovolume に選択し、Isovolume の範囲 の最小値を 0.5 に設定します。 isovolume を作成するには、[ 選択したパーツで作成]をクリックします。
前の手順で作成 したIso_volume_part の色を設定します。 たとえば、ディープ ウォーターブルーに設定します。
壁の色を設定します。 たとえば、透明な白に設定します。
次に、[ 再生 ] をクリックしてシミュレーションの結果を表示します。
サンプル ファイル
PowerShell スクリプトによるクラスターデプロイ用のサンプル XML 構成ファイル
<?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>
サンプル 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>
MPI をインストールする silent.cfg ファイルのサンプル
# 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
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
サンプル 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}