我正在使用OpenMP运行MPI,即使使用此命令我也发现了这一点,即使 OpenMP启动了我定义的线程号,它们都坚持使用一个CPU内核。
read -r -d '' SSH_SCRIPT <<EOM
\$(grep "$(<"$Pubkey")" ~/.ssh/authorized_keys")
EOM
答案 0 :(得分:0)
通过更多搜索,我发现--cpu-set 0-15将允许OpenMp线程绑定到群集中的所有16个内核。
export OMP_NUM_THREADS=8
export OMP_PLACES=cores
export OMP_PROC_BIND=true
mpirun --host n1,n2,n3,n4 -np 4 a.out # the threads all stick to one core at each node
mpirun --host n1,n2,n3,n4 -np 4 grep Cpus_allowed_list /proc/self/status
Cpus_allowed_list: 0
Cpus_allowed_list: 0
Cpus_allowed_list: 0
Cpus_allowed_list: 0
答案 1 :(得分:0)
最后,我找到了这个解决方案,它在我的集群上工作正常:
#SBATCH --nodes=1
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=16
echo "Nodelist: $SLURM_JOB_NODELIST"
echo "CoerPerTask: $SLURM_CPUS_PER_TASK"
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK
mpirun --map-by node:PE=$SLURM_CPUS_PER_TASK ./main 14000