为每个mpi进程分配不同数量的openmp线程

为每个mpi进程分配不同数量的openmp线程,mpi,openmp,Mpi,Openmp,假设我有一个在384个MPI进程(24个计算节点,每个计算节点16个内核)上运行的代码,并使用以下简单脚本将我的作业提交到作业队列 #!/bin/bash #PBS -S /bin/bash #PBS -l nodes=24:ppn=16 #PBS -l walltime=01:00:00 cd $PBS_O_WORKDIR module load openmpi mpirun mycode > output_file 以下场景是否可行:我需要再分配一个具有16个内核的节点,以使用“o

假设我有一个在384个MPI进程(24个计算节点,每个计算节点16个内核)上运行的代码,并使用以下简单脚本将我的作业提交到作业队列

#!/bin/bash
#PBS -S /bin/bash
#PBS -l nodes=24:ppn=16
#PBS -l walltime=01:00:00

cd $PBS_O_WORKDIR
module load openmpi
mpirun mycode > output_file
以下场景是否可行:我需要再分配一个具有16个内核的节点,以使用“openmp”执行一些特定的计算,并在某个时候使用计算结果更新384进程的其余部分。现在我有384个MPI进程,每个进程上有一个线程顺序运行,一个MPI进程有16个openmp线程

是否可以通过OMP_NUM_线程和mpirun或任何其他工具来实现这一点

我感谢你的建议

多谢各位


新浪

您可以请求25个节点和16个PPN,然后只强制385个MPI进程:

#PBS -l nodes=25:ppn=16
...
mpirun -np 384 mycode : -np 1 -x OMP_NUM_THREADS=16 mycode > output_file
这利用了开放式MPI的MPMD启动模式,不同的启动配置由冒号分隔。由于默认情况下,列组在节点插槽上按顺序填充,因此前384个列组将恰好跨越24个节点,然后额外的列组将从最后一个节点开始。为此,
OMP\u NUM\u THREADS
环境变量将设置为16,因此启用16个OpenMP线程。如果OpenMP程序是不同的可执行文件,只需在第二次启动配置中替换其名称,例如:

mpirun -np 384 mycode : -np 1 -x OMP_NUM_THREADS=16 myompcode > output_file

非常感谢您提供我所需要的帮助,因为mpich
-x
应该是
-env