Я написал небольшой код в python 2.7
для запуска 4 независимых процессов на оболочке через subprocess
, используя библиотеку mpi4py
. Я получаю ORTE_ERROR_LOG, и я хотел бы понять, где это происходит и почему.python, mpi и подпроцесс оболочки: orte_error_log
Это мой код:
#!/usr/bin/python
import subprocess
import re
import sys
from mpi4py import MPI
def main():
root='base'
comm = MPI.COMM_WORLD
if comm.rank == 0:
job = [root+str(i) for i in range(4)]
else:
job = None
job = comm.scatter(job, root=0)
cmd="../../montepython/montepython/MontePython.py -conf ../config/default.conf -p ../config/XXXX.param -o ../chains/XXXX -N 10000 > XXXX.log"
cmd_job = re.sub(r"XXXX", job, cmd)
subprocess.check_call(cmd_job, shell=True)
return
if __name__ == '__main__':
main()
Я бегу с помощью команды:
mpirun -np 4 ./run.py
Это сообщение об ошибке, что я получаю:
[localhost:51087] [[51455,0],0] ORTE_ERROR_LOG: Not found in file base/odls_base_default_fns.c at line 1762
[localhost:51087] [[51455,0],0] ORTE_ERROR_LOG: Not found in file orted/orted_comm.c at line 916
[localhost:51087] [[51455,0],0] ORTE_ERROR_LOG: Not found in file base/odls_base_default_fns.c at line 1762
[localhost:51087] [[51455,0],0] ORTE_ERROR_LOG: Not found in file orted/orted_comm.c at line 916
--------------------------------------------------------------------------
A system call failed during shared memory initialization that should
not have. It is likely that your MPI job will now either abort or
experience performance degradation.
Local host: localhost
System call: open(2)
Error: No such file or directory (errno 2)
--------------------------------------------------------------------------
Я не могу понять, где ошибка происходит. MontePython
сам по себе не должен использовать mpi
, потому что он должен быть серийным.
Я попросил помощи на форуме пользователя openmpi. Они сказали мне, что проблема, вероятно, связана с плохим взаимодействием между подпроцессом и реализацией MPI. Я должен измениться от subprocess
к spawn
, но эта функция не очень хорошо документирована, я не уверен, как поступить