get_address fails on arm
It seems that there is an failure on arm with openmpi:
FAIL: testGetAddress (test_datatype.TestGetAddress)
----------------------------------------------------------------------
Traceback (most recent call last):
File "test/test_datatype.py", line 360, in testGetAddress
self.assertEqual(addr, bufptr)
AssertionError: -2128074816 != 2166892480L
------------------------------------------------
It seems some cython type might be wrong, but actually this could also be a MPI failure and not mpi4py's...
The full log can be found here.
Comments (4)
-
-
reporter It seems
MPI_Int
has a different size on arm than on the other arches. Does this imply, that it is not possible to mix different arches in a multi node MPI program? (I'm just asking being curious, not if such a call would make sense ;)) I always expected to haveMPI_Int
of the same size accross architectures. -
Sorry, my previous comment is misleading. I was talking about
MPI_Aint
(not theA
in the name).MPI_Aint
should be equivalent tointptr_t
. IOW,MPI_Aint
is a signed integral type large enough to represent any address, e.g., in i386MPI_Aint
should be plain Cint
.About muti-arch MPI runs (heterogeneous environments in the parlance of the MPI standard), that is perfectly possible, though the MPI implementation has to provide support for it.
-
- changed status to resolved
- Log in to comment
This is a signed vs unsigned integer issue.
MPI_Get_address()
returns addresses asMPI_Int
(signed integral type), while Python is returning addresses as unsigned integer (but this is not consistent across Python versions, however I should check the status of this for Py26+). See yourself:In other words, the test case is broken and should be fixed.