私はSLURMが初めてです。私の問題は、ジョブが SLURM によって管理されるクラスターで実行する必要があるマルチステージ ジョブがあることです。具体的には、次のジョブをスケジュールしたいと考えています。
- N 個のノードを取得し、
- それらすべてにソフトウェアをインストールします
- (すべてのノードでインストールが正常に終了すると) ノードにデータベース インスタンスが作成されます。
- データベースをロードします
- (ロードが正常に完了すると)ベンチマークの目的で、一連のクエリを実行します
- データベースを削除し、ノードを返します
各ステップは、個別の bash スクリプトを使用して実行できます。スクリプトの実行とステージ間の遷移は、マスター ノードによって調整されます。
私の問題は、SLURM を使用してノードを割り当て、各ノードで単一のコマンドまたはスクリプト (各ノードでスタンドアロン ジョブとして実行される) を呼び出す方法を知っていることです。しかし、各ノードでコマンドが実行される (または呼び出されたスクリプトが終了する) とすぐに、ノードは空きリソースのプールに戻り、ジョブのために割り当てられたノード キューを残します。ただし、上記の使用例にはいくつかのステージ/スクリプトが含まれます。そしてそれらの間の調整が必要です。
SLURM を使用して、このようなユース ケースの一連のスクリプトを設計/実行する正しい方法は何だろうと思っています。提案や例は非常に役に立ち、高く評価されます。