bob*_*nto 3 fortran environment-variables mpi
我在MPI中运行Fortran代码.我需要在一个特定的进程中设置一个环境变量.有没有办法做到这一点?从Fortran代码调用"system"似乎没有效果.我通过"aprun"运行代码.
您应该在MPMD启动时执行此操作.它适用于mpirun或aprun.
下面是一个示例,其中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
Run Code Online (Sandbox Code Playgroud)
这是异质的等价物
aprun -n 100 -e OMP_NUM_THREADS=10 ./mpi-openmp-app.x input_file.in
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅aprun手册页(或man aprun从命令行).
请注意,Cray正在将许多站点从ALPS(即aprun)切换到SLURM(srun),但我确信SLURM支持相同的功能.
MPI mpirun或mpiexec支持类似的功能.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);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
344 次 |
| 最近记录: |