複数の科学実験を複数のサーバーに展開する正しい方法は何ですか?

複数の科学実験を複数のサーバーに展開する正しい方法は何ですか?

8つの強力なコンピュータがある場合、ユーザーアプリケーションと科学実験の負荷を分散してバランスをとる正しい方法は何ですか?

仮想化は正しいアプローチですか?それともこれを達成できるロードマネージャソフトウェアはありますか?

答え1

バッチキューソフトウェアを見てください。トルク公営放送これにより、ユーザーはジョブを送信し、ソフトウェアが利用可能なコンピュータでキューを実行するキューを作成できます。このアプローチは非対話型コンテンツにのみ適用されます。

答え2

  1. あなたが望むのは、仮想化の反対であるクラスタリングです。

    違いをできるだけ簡単に説明しようとします。

    仮想化とは、1 つまたは複数の物理マシンで複数の仮想マシンを実行することです。これにより、単一の物理コンピュータで完全に独立した複数の仮想マシンを実行して、既存のハードウェアをより効率的に活用できます。

    クラスタを使用すると、1つ以上の物理システム(「ノード」と呼ばれる)を使用してアプリケーションを実行できます。これにより、デプロイメントスケジューラによって調整されたコンピューティングタスクにクラスタ内のすべてのCPUパフォーマンスを使用できます。

    これら2つを組み合わせることができます。たとえば、私は次のプロジェクトに参加しました。ネクタ研究クラウドOpenStackをベースにした仮想化技術を使用して、オーストラリア全体の科学者や他の研究者が単一の仮想マシンから必要に応じて大規模な仮想マシンクラスタに至るまで、何でも作成できるようにします。

  2. slurm前述の@Alexander Batischevなどのtorqueバッチキューソフトウェアに加えて、pbs次のものが必要になる場合があります。MPI図書館または同様の設置。

    たとえば、独立して処理できるより小さな塊に分割できる計算タイプを実行し、後で結果を結合する必要がある場合は、MPIライブラリが必要です。また、クラスター内の異なるノードで実行されているプロセスの異なるインスタンスが互いに通信できるように、それを使用するコードを作成する必要があります。

    さまざまな科学やその他の分野で一般的で広く使用されているアプリケーションは、クラスタで実行するように設計されているため、組み込みMPIサポート(または同様で排他的な選択肢)があります。

  3. アレクサンダーは、クラスタが非対話型ソフトウェアで最もよく動作することを述べました。これは本当です。ただし、多くのアプリケーションには、データの作成、表示と編集、バッチ作業ファイルの作成、およびクラスタへの送信(MudまたはTorqueを使用)のためのグラフィックフロントエンドがあります。など)結果を確認してください。

    重要なのは、主要なコンピューティングタスクの場合、単に実行して直接対話するのではないことです。ユーザー(またはフロントエンドソフトウェア)はバッチスクリプトを生成し、実行のためにキューに送信します。ジョブを実行するのにクラスターに十分なリソースが確保されるまで、キューに追加され実行されません(ほとんどすぐに実行されることも、使用量の多いクラスターでは数日または数週間実行されないこともあります)。ジョブの実行が完了すると、通常はログファイルと1つ以上の結果ファイルが保存され、それをデスクトップのフロントエンドプログラムにロードして表示できます。

    バッチスクリプトは、バッチスケジューラが何をすべきかを知るためにさまざまなことを指定できます。たとえば、必要なRAMまたはディスク容量、CPUまたはCPUコアの数、および/またはタイプ(たとえば、1または1または2コアが必要です)など)GPUノード)? 、複数のノードでMPIを使用して実行できますか、それとも1つのノードでのみ実行できますか?


ここに興味深いものがあります。ブログ投稿最初からHPCクラスター設定 - 焦点は計算化学にありますが、同じタイプの設定を他の分野で使用できない理由はありません。説明されたクラスターはDebianに基づいて構築され、Debianは巨大な図書館科学的なソフトウェア。

関連情報