gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 02:52:28 24 4
gpt4 key购买 nike

假设我有一段代码在 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_THREADS 和 mpirun 或任何其他工具来完成此操作?

我很感激任何建议

谢谢

新浪

最佳答案

您可以使用 16 个 ppns 请求 25 个节点,然后仅强制执行 385 个 MPI 进程:

#PBS -l nodes=25:ppn=16
...
mpirun -np 384 mycode : -np 1 -x OMP_NUM_THREADS=16 mycode > output_file

这利用了 Open MPI 的 MPMD 启动模式,不同的启动配置由冒号分隔。由于默认情况下等级是在节点槽上按顺序填充的,前 384 个等级将恰好跨越 24 个节点,然后附加等级将从最后一个节点开始。为此,OMP_NUM_THREADS 环境变量将设置为 16,从而启用 16 个 OpenMP 线程。如果 OpenMP 程序是不同的可执行文件,只需在第二个启动配置中替换它的名称,例如:

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

关于mpi - 为每个 mpi 进程分配不同数量的 openmp 线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17414973/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com