我不确定发生了什么,我认为当我第一次安装 ubuntu 22.04 时 MPI 运行良好。然后我发现我也可以安装 ifortran(不确定这是否影响了某些东西)和 mkl。
但是,我现在发现的问题是,当我尝试运行代码时收到此消息:
- $ mpirun -n 2 测试并行.x
[proxy:0:0@Dedalus] HYD_spawn (../../../../../src/pm/i_hydra/libhydra/spawn/intel/hydra_spawn.c:151): 文件 testparalel.x 上的 execvp 错误(没有此文件或目录)
在我安装 ifort 和 mkl 之前,这个方法有效,不确定是否与此有关。如果我在程序前使用 ./,我会得到:
*$ mpirun -n 2./testparalel.x
iam= 0 nproc= 1
iam= 0 nproc= 1
代码作为不同的程序在不同的处理器上运行,而不是作为单个 MPI 程序运行(这就是为什么“iam”变量在两种情况下都为零,并且 nproc =1,而不是 2)。
在我安装 intel fortran 编译器之前,MPI 运行良好(mpifort 无论如何都会调用 gfortran)。此外,我认为 intel 编译器存在一些问题,因为当我尝试运行该程序时,它似乎要查找的 hydra 目录指向 intel。
知道会发生什么事吗?
我留下了测试代码,以便您可以检查。问题不在于代码,我知道这一点是因为在安装 intel fortran 编译器之前,我已经用 gfortran 测试过它。我认为问题起源于安装 ifort 时。
program test
include 'mpif.h'
call mpi_init(ierr)
call mpi_comm_rank(mpi_comm_world,iam,ierr)
call mpi_comm_size(mpi_comm_world,nproc,ierr)
print*,'iam=',iam,' nproc=',nproc
call mpi_finalize(ierr)
stop
end
不,这不是问题。如前所述,当我执行以下操作时,程序将运行:
$:mpirun -n 2./testparalel.x
iam= 0 nproc= 1
iam= 0 nproc= 1
但是 MPI 运行不正确,因为如果运行正确,它应该返回
iam=0 nproc=2
我=1 NPROC=2
等等。它似乎在执行相同的程序,在每个处理器上重复,并且并非全部在同一个 MPI 环境中发生。我不知道您是否熟悉 MPI,如果您熟悉,您应该明白我在说什么。
答案1
execvp error on file testparalel.x (No such file or directory)
似乎很清楚:“testparalel.x”不存在。也许在“parallel”这个词中再加一个“l”?