def empty(size, iters=10000): time = measure_time() for _ in range(iters): mpi_np.empty(size, dtype=np.float64) time = measure_time() - time gc.collect() return time / iters
def empty(size, iters=10000, comm=MPI.COMM_WORLD): comm.Barrier() time = measure_time() for _ in range(iters): mpi_np.empty(size, dtype=np.float64, comm=comm, dist='b') time = measure_time() - time comm.reduce(time, op=MPI.MAX, root=0) return time / iters
def empty(size, iters=10000, comm=MPI.COMM_WORLD): time = measure_time() for _ in range(iters): mpi_np.empty(size, dtype=np.float64) time = measure_time() - time gc.collect() comm.reduce(time, op=MPI.MAX, root=0) return time / iters
def test_validate_shape_called(self): shape_int = 1 with mock.patch('mpids.MPInumpy.array_creation._validate_shape' ) as mock_obj_int: mpi_np.empty(shape_int) mock_obj_int.assert_called_with(shape_int) shape_tuple = (1, 2) with mock.patch('mpids.MPInumpy.array_creation._validate_shape' ) as mock_obj_tuple: mpi_np.empty(shape_tuple) mock_obj_tuple.assert_called_with(shape_tuple)
def test_return_behavior_from_all_ranks_with_tuple_shape(self): for root in range(self.size): shape = None self.assertTrue(shape is None) if self.rank == root: shape = self.tuple_shape mpi_np_empty = mpi_np.empty(shape, comm=self.comm, root=root, dist=self.dist) self.assertTrue(isinstance(mpi_np_empty, mpi_np.MPIArray)) self.assertTrue(isinstance(mpi_np_empty, self.dist_class)) self.assertEqual(mpi_np_empty.comm, self.comm) self.assertEqual(mpi_np_empty.dist, self.dist)
def test_validate_shape_errors_propegated(self): with mock.patch('mpids.MPInumpy.array_creation._validate_shape', side_effect=Exception('Mock Execption')) as mock_obj: with self.assertRaises(Exception): mpi_np.empty(1)
from mpi4py import MPI import numpy as np import mpids.MPInumpy as mpi_np if __name__ == "__main__": #Capture default communicator, MPI process rank, and number of MPI processes comm = MPI.COMM_WORLD rank = comm.Get_rank() size = comm.Get_size() note = "Note: creation routines are using their default MPI related kwargs." note += "\nDefault kwargs:" note += " routine(..., comm=MPI.COMM_WORLD, root=0, dist='b')\n" print(note) if rank == 0 else None #Empty, shape based non-intialized distributed array print('From empty(array_shape) Routine:') if rank == 0 else None array_shape = (size, size) mpi_empty_array = mpi_np.empty(array_shape) print('Local Array Result Rank {}:\n{}'.format(rank, mpi_empty_array)) print() if rank == 0 else None