不知何故mpirun
未能承认我的$PATH
。PyroDist
我在 中的程序$PATH
有效:
$ PyroDist
Can't find asked option -in
PyroDist - pairwise distance matrix from flowgrams
-in string flow file name
-out stub out file stub
Options:
-ni no index in dat file
-rin string lookup file name
mpirun
并且使用完整路径运行它也可以:
$ mpirun -np 4 ../bin/PyroDist -in C005.dat -out foo
0: Read data
0: Broadcast data
0: Broadcast flows
nN=2094 nM=360 nSize=753840
但这失败了:
$ mpirun -np 4 PyroDist
Missing: program name
Program PyroDist either does not exist, is not
executable, or is an erroneous argument to mpirun.
由于我将使用一组复杂的工作流程,因此使用完整路径是不可行的。有任何想法吗?
(Linux 2.6.32 上的 openmpi 1.2.7)
答案1
mpirun
可能使用execv()
调用来运行程序而不是调用execvp()
(它将在 中搜索它PATH
)。
第一个解决方法:要求 shell 自行查找命令:
mpirun -np 4 $(which PyroDist) -in C005.dat -out foo
否则:我能想到的两个(不太好的)解决方法:
/usr/bin/env
与 argument 一起使用PyroDist
,但这要求mpirun
允许以某种方式随程序传递参数。编写您自己的包装器,例如:
#!/bin/sh PyroDist
并将其放置在具有“固定”相对路径的地方。