在bash脚本中运行mpirun会产生不同的行为

在bash脚本中运行mpirun会产生不同的行为,bash,mpi,intel-fortran,Bash,Mpi,Intel Fortran,当我跑的时候 mpirun -np 2 exec 在终端中,exec并行运行。但是,当我将命令放在bash脚本中时 #!/bin/bash mpirun -np 2 exec 我得到了下面的抛出 /opt/intel/composer_xe_2013_sp1.0.080/mpirt/bin/intel64/mpirun: 96: .: Can't open /opt/intel/composer_xe_2013_sp1.0.080/mpirt/bin/intel64/mpivars.sh

当我跑的时候

mpirun -np 2 exec
在终端中,exec并行运行。但是,当我将命令放在bash脚本中时

#!/bin/bash
mpirun -np 2 exec
我得到了下面的抛出

/opt/intel/composer_xe_2013_sp1.0.080/mpirt/bin/intel64/mpirun: 96: .: Can't open /opt/intel/composer_xe_2013_sp1.0.080/mpirt/bin/intel64/mpivars.sh

我的猜测是bash脚本看到了一组不同的环境变量,但我不确定如何确认这一猜测。

我今天遇到了同样的问题,并在这里找到了解决方案: . 根据此链接,“英特尔编译器”不包含mpif90和mpicc环境。如果使用另一个mpi编译器,则需要指定mpirun的绝对目录(在我的示例中是/usr/bin/X11/mpirun)。 例如,在我的例子中,它是

/usr/bin/X11/mpirun -np 2 exc

哪一个是你的剧本
mpivars.sh
mpirun
,您将脚本放在哪里了?第二个块是我的脚本,第三个块是脚本的输出。脚本和原始命令(第一个块)从同一目录运行。您是如何运行脚本的?从终端还是从cron?尝试在终端中运行
哪个MPI
。从终端
>哪个mpirun/opt/intel/composer\u xe\u 2013\u sp1.0.080/mpirt/bin/intel64/mpirun
。要确认或反驳您的猜测,请在脚本中包含shell命令
env
;这将在脚本运行的上下文中释放环境变量。你确定你的交互式shell是BASH吗?