gpt4 book ai didi

fortran - 为特定的 MPI 进程设置环境变量

转载 作者:行者123 更新时间:2023-12-01 10:36:14 25 4
gpt4 key购买 nike

我正在 MPI 中运行 Fortran 代码。我需要在一个特定的进程中设置一个环境变量。有没有办法做到这一点?从 Fortran 代码调用“系统”似乎没有效果。我正在通过“aprun”运行代码。

最佳答案

启动器解决方案

您应该在启动 MPMD 时执行此操作。它适用于 mpirunaprun

这是一个示例,其中一个进程的 OMP_NUM_THREADS 环境变量设置与其他进程不同。

aprun -n 1  -e OMP_NUM_THREADS=1  ./mpi-openmp-app.x input_file.in :
-n 99 -e OMP_NUM_THREADS=10 ./mpi-openmp-app.x input_file.in

这是异构的等价物

aprun -n 100 -e OMP_NUM_THREADS=10 ./mpi-openmp-app.x input_file.in

请参阅aprun man page (或在命令行中使用 man aprun)了解详细信息。

请注意,Cray 正在将许多站点从 ALPS(即 aprun)切换到 SLURM(srun),但我确信 SLURM 支持相同的功能。

MPI 的 mpirunmpiexec 支持类似的功能。 MPI 标准未指定语法,因此您需要阅读 MPI 实现的文档以了解具体细节。

源码解决方案

假设您的环境变量在 MPI 初始化后被解析,您可以使用 setenv 执行类似以下操作,如果启动器解决方案不起作用。

int requested=MPI_THREAD_FUNNELED, provided;
MPI_Init_thread(&argc,&argv,requested,&provided);

int rank;
MPI_Comm_rank(MPI_COMM_WORLD,&rank);
if (rank==0) {
int overwrite = 1;
int rc = setenv("OMP_NUM_THREADS","1",overwrite);
}

关于fortran - 为特定的 MPI 进程设置环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34950787/

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