왠지 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
).
첫 번째 해결 방법: 쉘에 명령 자체를 찾도록 요청합니다.
mpirun -np 4 $(which PyroDist) -in C005.dat -out foo
그렇지 않은 경우: 제가 생각할 수 있는 두 가지(별로 좋지 않은) 해결 방법은 다음과 같습니다.
/usr/bin/env
인수와 함께 사용되지만PyroDist
이를 위해서는mpirun
어떤 방식으로든 인수가 프로그램과 함께 전달되도록 허용해야 합니다.예를 들어 다음과 같이 래퍼를 직접 작성하세요.
#!/bin/sh PyroDist
"고정된" 상대 경로가 있는 곳에 배치합니다.