高パフォーマンス・コンピューティング: Oracle Cloud Infrastructure上のOpenFOAM

OpenFOAMは、様々な複雑な流体の流れの問題を解決するために、学術および産業の科学研究で使用される計算流体力学ツールです。

OpenFOAMを使用して、新しいソルバーおよび物理モデルを開発およびテストできます。パラレル機能は、大規模なリソースを必要とする調査レベルの問題を実行する場合に適しています。乱流のある非圧縮性流れの問題を解くことができ,プリミックス燃焼とノンリミックス燃焼の両方をシミュレートできる。

アーキテクチャ

アーキテクチャでは、1つの要塞/ヘッド・ノードを使用してHPCクラスタに接続します。

ヘッド・ノードには、OpenFOAMのインストールとモデルが含まれます。これにはMessage Passing Interface (MPI)があり、ジョブを編成して実行します。ジョブの結果がヘッド・ノードに保存されます。

次の図は、この参照アーキテクチャを示しています。

Architecture- hpc.pngの説明が続きます
図アーキテクチャの説明- hpc.png

Architecture-hpc-oracle.zip

アーキテクチャには、次のコンポーネントがあります。

  • リージョン

    Oracle Cloud Infrastructureリージョンは、可用性ドメインと呼ばれる1つ以上のデータ・センターを含む、ローカライズされた地理的領域です。リージョンは他のリージョンから独立しており、広大な距離を(複数の国または複数の大陸にまたがる)分離できます。

  • 可用性ドメイン

    可用性ドメインは、リージョン内のスタンドアロンの独立したデータ・センターです。各可用性ドメインの物理リソースは、フォルト・トレランスを提供する他の可用性ドメインのリソースから分離されます。可用性ドメインは、電源や冷却、内部の可用性ドメイン・ネットワークなどのインフラストラクチャを共有しません。したがって、あるアベイラビリティ・ドメインでの障害が、リージョン内の他のアベイラビリティ・ドメインに影響を及ぼすことはほとんどありません。

  • フォルト・ドメイン

    フォルト・ドメインは、アベイラビリティ・ドメイン内のハードウェアおよびインフラストラクチャのグループです。各可用性ドメインには、独立した電源とハードウェアを持つ3つのフォルト・ドメインがあります。複数のフォルト・ドメインにリソースを分散する場合、アプリケーションでは、フォルト・ドメイン内の物理サーバー障害、システム・メンテナンスおよび電源障害を許容できます。

  • 仮想クラウド・ネットワーク(VCN)およびサブネット

    VCNは、Oracle Cloud Infrastructureリージョンで設定するカスタマイズ可能なソフトウェア定義のネットワークです。従来のデータ・センター・ネットワークと同様に、VCNではネットワーク環境を完全に制御できます。VCNには、VCNの作成後に変更できる複数の重複しないCIDRブロックを含めることができます。VCNは、リージョンまたは可用性ドメインにスコープ指定できるサブネットにセグメント化できます。各サブネットは、VCN内の他のサブネットと重複しない連続したアドレスの範囲で構成されます。サブネットのサイズは、作成後に変更できます。サブネットはパブリックまたはプライベートにできます。

  • セキュリティ・リスト

    サブネットごとに、サブネット内外で許可する必要があるトラフィックのソース、宛先およびタイプを指定するセキュリティ・ルールを作成できます。

  • インスタンス・プール

    インスタンス・プールを使用すると、グループと同じリージョン内の複数のコンピュート・インスタンスを作成して管理できます。また、ロード・バランシング・サービスやIAMサービスなど他のサービスとの統合が可能になります。

  • 要塞ノード/ヘッド・ノード

    Webベースのポータルを使用してヘッド・ノードに接続し、HPCジョブをスケジュールします。ジョブ・リクエストは、FastConnectまたはIPSec VPNを介してヘッド・ノードに送信されます。ヘッド・ノードは、カスタマ・データ・セットをファイル・ストレージに送信し、データに対して前処理を実行することもできます。

    ヘッド・ノードはHPCノード・クラスタをプロビジョニングし、ジョブ完了時にHPCクラスタを削除します。

  • HPCクラスタ・ノード

    ヘッド・ノードは、RDMA対応クラスタであるこれらのコンピュート・ノードをプロビジョニングして終了します。ファイル・ストレージに格納されているデータを処理し、結果をファイル・ストレージに返します。

  • クラウド・ガード

    Oracle Cloud Guardを使用して、クラウド内のリソースのセキュリティをモニターおよび維持できます。Cloud Guardは、構成に関連するセキュリティの脆弱性についてリソースを調査し、オペレータおよびユーザーにリスクのあるアクティビティがないかどうかを監視します。セキュリティの問題またはリスクが特定されると、Cloud Guardは修正処理を推奨し、定義可能なセキュリティ・レシピに基づいてそれらの処理を支援します。

  • NFSサーバー

    HPCノードのいずれかがNFSサーバーとして昇格されます。

お薦め

実際の要件は、ここで説明するアーキテクチャとは異なる場合があります。開始点として次の推奨事項を使用します。

  • VCN

    VCNを作成する場合、VCNのサブネットにアタッチする予定のリソースの数に基づいて、必要なCIDRブロックの数と各ブロックのサイズを決定します。標準のプライベートIPアドレス空間内にあるCIDRブロックを使用します。

    プライベート接続を設定する予定の他のネットワーク(Oracle Cloud Infrastructure、オンプレミス・データ・センターまたは別のクラウド・プロバイダ内)と重複しないCIDRブロックを選択します。

    VCNを作成した後、CIDRブロックを変更、追加および削除できます。

    サブネットを設計する際には、トラフィック・フローとセキュリティ要件を考慮してください。特定の層またはロール内のすべてのリソースを、セキュリティ境界として機能する同じサブネットにアタッチします。

  • SECURITY

    Oracle Cloud Guardを使用して、OCIのリソースのセキュリティをプロアクティブに監視および維持します。Cloud Guardは、定義可能なディテクタ・レシピを使用して、リソースにセキュリティ上の弱点がないかどうかを調べ、オペレータおよびユーザーのリスクのあるアクティビティを監視します。構成の誤りやセキュアでないアクティビティが検出された場合、Cloud Guardは修正処理を推奨し、定義可能なレスポンダ・レシピに基づいてそれらの処理を支援します。

    最大限のセキュリティを必要とするリソースの場合、Oracleではセキュリティ・ゾーンを使用することをお薦めします。セキュリティ・ゾーンは、ベスト・プラクティスに基づくセキュリティ・ポリシーのOracle定義レシピに関連付けられたコンパートメントです。たとえば、セキュリティ・ゾーン内のリソースにパブリック・インターネットからアクセスできないようにする必要があり、顧客管理キーを使用して暗号化する必要があります。セキュリティ・ゾーンでリソースを作成および更新すると、Oracle Cloud Infrastructureでは、セキュリティ・ゾーン・レシピのポリシーに対して操作が検証され、ポリシーに違反する操作が拒否されます。

  • HPCノード

    2つのシナリオがあります:

    1. アーキテクチャ図に示すように、インスタンス・プールを使用してVMシェイプにデプロイします。このシナリオでは、コストは低くなりますが、パフォーマンスも低下します。

      ファイル・ストレージ・サービスでVM.Standard.E3.FlexまたはVM.Standard.E4.Flexを使用します。

    2. HPC BARE Metalシェイプを使用して導入すると、パフォーマンスが最大限に向上します。

      6.4-TBローカルNVMe SSDストレージ、36コアおよびノード当たり384 GバイトのメモリーでBM.HPC2.36シェイプを使用します。

注意事項

この参照アーキテクチャをデプロイする場合は、次の点を考慮してください。

  • パフォーマンス

    ワークロードのサイズに応じて、OpenFOAMを実行するコアの数を決定します。この決定により、シミュレーションが適切なタイミングで完了します。

    最適なパフォーマンスを得るには、適切な帯域幅を持つ正しいコンピュート・シェイプを選択します。

  • 可用性

    デプロイメント要件およびリージョンに基づいて、高可用性オプションを使用することを検討してください。オプションには、リージョンおよびフォルト・ドメインでの複数の可用性ドメインの使用が含まれます。

  • コスト

    ベア・メタルGPUインスタンスは、より高いコストで必要なCPU電力を提供します。要件を評価して、適切なコンピュート・シェイプを選択します。

    実行中のジョブがない場合は、クラスタを削除できます。

  • モニタリングとアラート

    必要に応じてシェイプをスケール・アップまたはスケール・ダウンできるように、ノードのCPUおよびメモリー使用率の監視およびアラートを設定します。

  • 記憶域

    HPCシェイプに付属しているNVMe SSDストレージの上に、Oracleの最高のパフォーマンスSLAに基づいて、ボリューム当たり32 K IOPSでブロック・ボリュームをアタッチすることもできます。ソリューションを使用してインフラストラクチャを起動する場合、nfs - shareはデフォルトで/mntのNVMe SSDストレージにインストールされます。パフォーマンス要件に応じて、NVMe SSDストレージまたはブロック・ストレージの上に独自のパラレル・ファイル・システムをインストールすることもできます。

  • ビジュアライザ・ノード

    要件に応じて、GPU仮想マシン(VM)やベア・メタル・ノードなどのビジュアライザ・ノードを作成できます。このビジュアライザ・ノードは、要塞ホストにすることも、個別にすることもできます。ワークロードのセキュリティ要件に応じて、ビジュアライザ・ノードをプライベート・サブネットまたはパブリック・サブネットに配置できます。

デプロイ

この参照アーキテクチャのデプロイに必要なコードは、GitHubで入手できます。シングルクリックでコードをOracle Cloud Infrastructure Resource Managerにプルし、スタックを作成してデプロイできます。または、GitHubからコンピュータにコードをダウンロードし、Terraform CLIを使用してコードをカスタマイズし、アーキテクチャをデプロイします。

  • Oracle Cloud Infrastructure Resource Managerを使用してデプロイします。
    1. Oracle Cloudへのデプロイをクリックます。

      まだサインインしていない場合は、テナンシおよびユーザー資格証明を入力します。

    2. 条件を確認し、受け入れます。
    3. スタックをデプロイするリージョンを選択します。
    4. 画面に表示されるプロンプトと指示に従ってスタックを作成します。
    5. スタックの作成後、「Terraformアクション」をクリックし、「プラン」を選択します。
    6. ジョブが完了するまで待機し、プランをレビューします。

      変更するには、「Stack Details」ページに戻り、「Edit Stack」をクリックして、必要な変更を行います。次に、プラン処理を再実行します。

    7. これ以上変更が必要ない場合は、「Stack Details」ページに戻り、「Terraform Actions」をクリックして「Apply」を選択します。
  • GitHubのTerraformコードを使用してデプロイします。
    1. GitHubにアクセスします。
    2. リポジトリをローカル・コンピュータにクローニングまたはダウンロードします。
    3. READMEドキュメントの指示に従います。

変更ログ

このログには、重要な変更が一覧表示されます。