2015-10-07 3 views
0

Я написал небольшой код в 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, но эта функция не очень хорошо документирована, я не уверен, как поступить

ответ

1
[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 

Те происходят в рамках структуры Орте, который отвечает за запуск и контролируя Процессы MPI. Это может быть связано с тем, что во временном каталоге, где Open MPI хранит информацию о сеансе, недостаточно места.

-------------------------------------------------------------------------- 
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) 
-------------------------------------------------------------------------- 

Эта ошибка исходит от модуля, который реализует совместное использование внутренней памяти в Open MPI. Причина, скорее всего, заключается в том, что tmpfs смонтирован в нестандартном месте или вообще не установлен. Без модуля с разделяемой памятью библиотека будет использовать медленный модуль TCP/IP (если он включен, по умолчанию он) или сбой приложения, поскольку никакие другие средства связи между ними не будут оставаться.

Оба сообщения об ошибках, вероятно, не имеют никакого отношения к вашей программе. Попробуйте что-то более простое, например. канонический «Hello World!» например, чтобы убедиться, что Open MPI работает правильно.

Смежные вопросы