2015-10-07 14:59 GMT+02:00 Lisandro Dalcin <dalc...@gmail.com>: > On 7 October 2015 at 14:54, simona bellavista <afy...@gmail.com> wrote: > > I have written a small code in python 2.7 for launching 4 independent > > processes on the shell viasubprocess, using the library mpi4py. I am > getting > > ORTE_ERROR_LOG and I would like to understand where it is happening and > why. > > > > This is my code: > > > > #!/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() > > > > I am running with the command: > > > > mpirun -np 4 ./run.py > > > > This is the error message that I get: > > > > [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) > > > -------------------------------------------------------------------------- > > > > > > I cannot understand where the error is happening. MontePython by itself > > should not use mpibecause it should be serial. > > > > This is likely related to a bad interaction between the way Python's > subprocess is implemented and the MPI implementation. > > Anyway, you should not use mpi4py for such a simple trivial > parallelism, I recommend you to take a look at Python's > multiprocessing module. > > If for any reason you want to go the MPI way, you should use MPI > dynamic process management, e.g. MPI.COMM_SELF.Spawn(...). > > > -- > Lisandro Dalcin > ============ > Research Scientist > Computer, Electrical and Mathematical Sciences & Engineering (CEMSE) > Numerical Porous Media Center (NumPor) > King Abdullah University of Science and Technology (KAUST) > http://numpor.kaust.edu.sa/ > > 4700 King Abdullah University of Science and Technology > al-Khawarizmi Bldg (Bldg 1), Office # 4332 > Thuwal 23955-6900, Kingdom of Saudi Arabia > http://www.kaust.edu.sa > > Office Phone: +966 12 808-0459 > _______________________________________________ > users mailing list > us...@open-mpi.org > Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/users > Link to this post: > http://www.open-mpi.org/community/lists/users/2015/10/27833.php >
I cannot figure out how spawn would work with a string-command. I tried MPI.COMM_SELF.Spawn(cmd, args=None,maxproc=4) and it just hangs