It looks like 'recvobj' was removed from mpi4py about two years ago:

 
https://bitbucket.org/mpi4py/mpi4py/commits/3d8503a11d320dd1c3030ec0dbce95f63b0ba602

but I'm not sure when it made it into the released version.


It looks like you can safely edit fipy/tools/comms/mpi4pyCommWrapper.py to 
remove the 'recvobj' argument.


We'll do some tests and push a fix as soon as possible. Thanks for alerting us 
to the issue.

Filed as https://github.com/usnistgov/fipy/issues/491


> On Apr 27, 2016, at 2:23 PM, Kris Kuhlman <kristopher.kuhl...@gmail.com> 
> wrote:
> 
> I built the trilinos-capable version of fipy. It seems to work for serial 
> (even for a non-trivial case), but I am getting errors with more than one 
> processor with a simple call to globalValue(), which I was trying to use to 
> make a plot by gathering the results to procID==0
> 
> I used the latest git version of mpi4py and trilinos. Am I doing something 
> wrong (is there a different preferred way to gather things to a single 
> processor to save or make plots?) or do I need to use a specific version of 
> these packages and rebuild?  It seems the function is expecting something 
> with a different interface or call structure.
> 
> Kris
> 
> python test.py 
> hello from 0 out of 1 [ 1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  
> 1.  1.  1.  1.  1.
>   1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.
>   1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.
>   1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.
>   1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.
>   1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.
>   1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.
>   1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.
>   1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.
>   1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.
>   1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.
>   1.  1.]
> 
> `--> ~/local/trilinos-fipy/anaconda/bin/mpirun -np 1 python test.py          
> hello from 0 out of 1 [ 1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  
> 1.  1.  1.  1.  1.
>   1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.
>   1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.
>   1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.
>   1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.
>   1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.
>   1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.
>   1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.
>   1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.
>   1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.
>   1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.
>   1.  1.]
> 
> --> ~/local/trilinos-fipy/anaconda/bin/mpirun -np 2 python test.py
> hello from 1 out of 2
> Traceback (most recent call last):
>   File "test.py", line 6, in <module>
>     print 'hello from',fp.tools.parallel.procID,'out 
> of',fp.tools.parallel.Nproc,p.globalValue
>   File 
> "/home/klkuhlm/local/trilinos-fipy/anaconda/lib/python2.7/site-packages/fipy/variables/cellVariable.py",
>  line 163, in globalValue
>     self.mesh._globalNonOverlappingCellIDs)
>   File 
> "/home/klkuhlm/local/trilinos-fipy/anaconda/lib/python2.7/site-packages/fipy/variables/meshVariable.py",
>  line 171, in _getGlobalValue
>     globalIDs = 
> numerix.concatenate(self.mesh.communicator.allgather(globalIDs))
>   File 
> "/home/klkuhlm/local/trilinos-fipy/anaconda/lib/python2.7/site-packages/fipy/tools/comms/mpi4pyCommWrapper.py",
>  line 75, in allgather
>     return self.mpi4py_comm.allgather(sendobj=sendobj, recvobj=recvobj)
>   File "MPI/Comm.pyx", line 1288, in mpi4py.MPI.Comm.allgather 
> (src/mpi4py.MPI.c:109141)
> TypeError: allgather() got an unexpected keyword argument 'recvobj'
> hello from 0 out of 2
> Traceback (most recent call last):
>   File "test.py", line 6, in <module>
>     print 'hello from',fp.tools.parallel.procID,'out 
> of',fp.tools.parallel.Nproc,p.globalValue
>   File 
> "/home/klkuhlm/local/trilinos-fipy/anaconda/lib/python2.7/site-packages/fipy/variables/cellVariable.py",
>  line 163, in globalValue
>     self.mesh._globalNonOverlappingCellIDs)
>   File 
> "/home/klkuhlm/local/trilinos-fipy/anaconda/lib/python2.7/site-packages/fipy/variables/meshVariable.py",
>  line 171, in _getGlobalValue
>     globalIDs = 
> numerix.concatenate(self.mesh.communicator.allgather(globalIDs))
>   File 
> "/home/klkuhlm/local/trilinos-fipy/anaconda/lib/python2.7/site-packages/fipy/tools/comms/mpi4pyCommWrapper.py",
>  line 75, in allgather
>     return self.mpi4py_comm.allgather(sendobj=sendobj, recvobj=recvobj)
>   File "MPI/Comm.pyx", line 1288, in mpi4py.MPI.Comm.allgather 
> (src/mpi4py.MPI.c:109141)
> TypeError: allgather() got an unexpected keyword argument 'recvobj'
> -------------------------------------------------------
> Primary job  terminated normally, but 1 process returned
> a non-zero exit code.. Per user-direction, the job has been aborted.
> -------------------------------------------------------
> --------------------------------------------------------------------------
> mpirun detected that one or more processes exited with non-zero status, thus 
> causing
> the job to be terminated. The first process to do so was:
> 
>   Process name: [[1719,1],1]
>   Exit code:    1
> --------------------------------------------------------------------------
> 
> <test.py>_______________________________________________
> fipy mailing list
> fipy@nist.gov
> http://www.ctcms.nist.gov/fipy
>  [ NIST internal ONLY: https://email.nist.gov/mailman/listinfo/fipy ]


_______________________________________________
fipy mailing list
fipy@nist.gov
http://www.ctcms.nist.gov/fipy
  [ NIST internal ONLY: https://email.nist.gov/mailman/listinfo/fipy ]

Reply via email to