2

コンピューティング クラスターで実行されている非常に並列 (bash) スクリプトがあります。このスクリプトはシェル スクリプトであり、どの MPI ライブラリにもリンクされていません。これは、MPI ランクをそれに送信できる唯一の方法は、コマンド ライン パラメーターを使用することです。

これまでのところ、単一のノード内でのみ実行しましたが、解決策は簡単でした:

 #!/bin/bash
 #SBATCH --nodes=1
 N=16
 seq $N | xargs -P $N -I% my_script.bash % $N

2 つのノードでどのようにスケーリングできますか? 「--nodes=2」を使用N=32するxargsと、同じノードですべてのスレッドを生成しようとします。一方、スクリプトはライブラリにmpiexecリンクされてMPIおらず、スクリプトにどのスレッドであるかを伝える方法がわからないため、単独では使用できません。

4

1 に答える 1

1

srunこれを行うには、送信スクリプト内で使用できます。

seq $N | xargs -P $N -I% srun --exclusive -N1 my_script.bash % $N

これはsrun、bash スクリプトを起動し、割り当てられた CPU に配布するために使用されます。

于 2016-07-12T21:31:53.763 に答える