-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On 06/08/15 15:42, Justin Chang wrote:
mpiexec -n 2 python run-pyop2.py
--------------------------------------------------------------------------
An MPI process has executed an operation involving a call to the
"fork()" system call to create a child process. Open MPI is currently
operating in a condition that could result in memory corruption or
other system errors; your MPI job may hang, crash, or produce silent
data corruption. The use of fork() (or system() or other calls that
create child processes) is strongly discouraged.
Huh, OK. I was expecting this to work! To confirm, run-pyop2.py just contains: from pyop2 import op2 op2.init() Can you edit some files in PyOP2 just to check what's going on: In PyOP2/pyop2/__init__.py Replace: from pyop2_utils import enable_mpi_prefork with: print 'init pyop2' from pyop2_utils import enable_mpi_prefork In PyOP2/pyop2/mpi.py Replace: from decorator import decorator with: print 'init mpi' from decorator import decorator In PyOP2/pyop2_utils/__init__.py Replace: prefork.enable_prefork() with: print 'forking' prefork.enable_prefork() And then try running run-pyop2.py on just one MPI process. I see: init pyop2 forking loading mpi But maybe you get something else? And then let's test if the following works: cat > manual-fork.py << EOF from pyop2_utils import enable_mpi_prefork enable_mpi_prefork() from firedrake import * from mpi4py import MPI print MPI.COMM_WORLD.size EOF mpiexec -n 2 python manual-fork.py Cheers, Lawrence -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQEcBAEBAgAGBQJVw3VgAAoJECOc1kQ8PEYv6vMH/0axxqZd+KqdQ5OMIjdBuF9g OIJC6YcoCCcigYh/RccSAVpzTuAvGWQdRJqMMlEfukrZrn6NSsw+TT+kzR+SPneg D66OVIsO2vfKfia/9yflEE4gKkVHfzo067dzstDZ8HnG0tVEqAexJdKzfK7nUE6M LJovg+YbJ5g/50BPbfCYJNRCtYAfjHjZWNOfYlLRITH55O7oIlAo4d2Pvk3wb+ok lDJI9G1gdHOIz8U+uuQ8/dKbutUSRfH7a3NK4wbjf/Q05BCS16k2T/Ouim1wkUql 9/4lKDkKsNTfMILXxNf3STlHJJlF5JRpDRJ+N462UjfJyTI9qTeZIv5GD9lH/x8= =afxk -----END PGP SIGNATURE-----