1

次のように定義されたスクリプトがあります。

#!/bin/sh

#SBATCH --nodes=1
#SBATCH --cpus-per-task=16
#SBATCH --mem 180000

./program1 --threads 16
./program2 --threads 16

次に、ジョブを送信しますsbatch job.sh

問題は、program1 は 16 個のコア/CPU をすべて使用しますが、program2 は 1 つしか使用しません (どちらもおそらくマルチスレッドです)。ただし、スクリプトを次のように変更すると:

#!/bin/sh

#SBATCH --nodes=1
#SBATCH --cpus-per-task=16
#SBATCH --mem 180000

./program1 --threads 16
srun --mpi=openmpi ./program2 --threads 16

次に、program2 も 16 コアすべてを使用します。その「srun」を追加する必要があるのはなぜですか?

追加情報として、program2 マルチスレッドの実装は次を使用して行われます。std::async

4

0 に答える 0