mpirun이 $PATH의 프로그램을 인식할 수 없습니다.

mpirun이 $PATH의 프로그램을 인식할 수 없습니다.

왠지 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

mpirunexecv()호출하는 대신 호출을 사용하여 프로그램을 실행할 수도 있습니다 execvp()( 에서 검색합니다 PATH).

첫 번째 해결 방법: 쉘에 명령 자체를 찾도록 요청합니다.

mpirun -np 4 $(which PyroDist) -in C005.dat -out foo

그렇지 않은 경우: 제가 생각할 수 있는 두 가지(별로 좋지 않은) 해결 방법은 다음과 같습니다.

  1. /usr/bin/env인수와 함께 사용되지만 PyroDist이를 위해서는 mpirun어떤 방식으로든 인수가 프로그램과 함께 전달되도록 허용해야 합니다.

  2. 예를 들어 다음과 같이 래퍼를 직접 작성하세요.

    #!/bin/sh
    PyroDist
    

    "고정된" 상대 경로가 있는 곳에 배치합니다.

관련 정보