リモートでコマンドを実行しますが、それでもホストを制御します。

リモートでコマンドを実行しますが、それでもホストを制御します。

複数のLinuxシステムがあり、クラスタ化されたコンピュータネットワークを設定したいと思います。コントローラには1つのモニタがあります。コントローラはタスクを実行し、コンピュータに負荷を分散させるスクリプトを実行します。

コントローラに4台のコンピュータがすべて接続されているとします。 GCCを使ってプログラムをコンパイルしたいのですが、タスクを3つの方法に分割したいと思います。どうすればいいですか?

どんな助けでも大変感謝します。

ベストアンサー1

distcc複数のコンピュータでコードをコンパイルするために使用できます。

Debiandistccパッケージ情報から:

パッケージ: distcc

Description-en: 単純な分散コンパイラのクライアントとサーバー

distccネットワーク内の複数のコンピュータにCコンパイルまたはコードを配布するプログラムです。常にネイティブコンパイルと同じ結果を生成する必要があり、インストールと使用が簡単で、通常はネイティブコンパイルよりはるかに高速です。すべてのシステムがファイルシステムを共有したり、クロックを同期したり、同じライブラリやヘッダファイルをインストールする必要はありません。C++distccdistcc

ホームページ:http://distcc.org/

他のタスクでは、「タスクを実行してコンピュータに負荷を分散」するスクリプトよりも複雑です。スケジューラを使用する必要があります(例:またはトルク- どちらもDebianと他のほとんどのディストリビューション用にパッケージされています。私の好みはslurm)です。

つまり、Linuxシステムのコレクションをクラスタに切り替えます。特に難しいことではありませんが、それはかなり多くの作業であり、多くの読書と理解が必要です(読んだ内容の大部分は大学や研究室の大規模HPCクラスタに関連していますが、小規模ホームクラスタには該当しません)。

クラスタ内の複数のシステムにワークロードを同時に分散させるプログラムを実行するには、次の手順を実行する必要があります。

  1. 並列実行に適したジョブの実行

  2. 必要なリソース(ファイルを読み書きするためのNFSサーバー)への共有アクセス権を持っています。

そして:

  1. クラスタ内の他のノードで実行されている他のインスタンスと通信するには、特別に作成する必要があります(たとえば、次を使用)。MPI次の図書館MPIを開く)

または

  1. 通信と制御のための主な制御プロセスがあります。それがまさにその役割distccです。

おすすめ記事