1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
|
from mpi4py import MPI
import mpiunittest as unittest
from arrayimpl import (
array,
numpy,
)
class TestAddress(unittest.TestCase):
@unittest.skipIf(array is None, 'array')
def testGetAddress1(self):
from struct import pack, unpack
location = array.array('i', range(10))
bufptr, _ = location.buffer_info()
addr = MPI.Get_address(location)
addr = unpack('P', pack('P', addr))[0]
self.assertEqual(addr, bufptr)
@unittest.skipIf(numpy is None, 'numpy')
def testGetAddress2(self):
from struct import pack, unpack
location = numpy.asarray(range(10), dtype='i')
bufptr, _ = location.__array_interface__['data']
addr = MPI.Get_address(location)
addr = unpack('P', pack('P', addr))[0]
self.assertEqual(addr, bufptr)
def testNone(self):
base = MPI.Get_address(None)
addr = MPI.Aint_add(base, 0)
self.assertEqual(addr, base)
diff = MPI.Aint_diff(base, base)
self.assertEqual(diff, 0)
def testBottom(self):
base = MPI.Get_address(MPI.BOTTOM)
addr = MPI.Aint_add(base, 0)
self.assertEqual(addr, base)
diff = MPI.Aint_diff(base, base)
self.assertEqual(diff, 0)
@unittest.skipIf(array is None, 'array')
def testAintAdd(self):
location = array.array('i', range(10))
base = MPI.Get_address(location)
addr = MPI.Aint_add(base, 4)
self.assertEqual(addr, base + 4)
@unittest.skipIf(array is None, 'array')
def testAintDiff(self):
location = array.array('i', range(10))
base = MPI.Get_address(location)
addr1 = base + 8
addr2 = base + 4
diff = MPI.Aint_diff(addr1, addr2)
self.assertEqual(diff, 4)
if __name__ == '__main__':
unittest.main()
|