mpirun falha ao reconhecer o programa em $ PATH

4

De alguma forma, mpirun não confirma meu $PATH . O programa PyroDist , que eu tenho em $PATH , funciona:

$ 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

E executá-lo com mpirun e o caminho completo também funciona:

$ 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

Mas isso falha:

$ mpirun -np 4 PyroDist
Missing: program name
Program PyroDist either does not exist, is not 
executable, or is an erroneous argument to mpirun.

Como vou usar um conjunto complexo de fluxos de trabalho, não é viável usar caminhos completos. Alguma idéia?

(openmpi 1.2.7 no Linux 2.6.32)

    
por Martin 06.10.2011 / 12:20

1 resposta

5

mpirun provavelmente usa uma chamada de execv() para executar o programa em vez de um execvp() um (que procuraria por ele em PATH ).

Primeira solução alternativa: peça ao shell para procurar o comando por si só:

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

Caso contrário: duas soluções alternativas (não tão boas) em que consigo pensar:

  1. Use /usr/bin/env com o argumento PyroDist , mas isso requer que mpirun permita passar argumentos junto com o programa de alguma forma.

  2. Escreva seu próprio wrapper como:

    #!/bin/sh
    PyroDist
    

    e coloque-o em algum lugar com um caminho relativo "fixo".

por 06.10.2011 / 12:38

Tags