def test_from_global_dim_data_irregular_block(self): bounds = (0, 2, 3, 4, 10) glb_dim_data = ({"dist_type": "b", "bounds": bounds},) distribution = Distribution.from_global_dim_data(self.context, glb_dim_data) distarr = DistArray(distribution, dtype=int) distarr.toarray()
def test_from_global_dim_data_bc(self): """ Test creation of a block-cyclic array. """ rows, cols = 5, 9 global_dim_data = ( # dim 0 { 'dist_type': 'c', 'proc_grid_size': 2, 'size': rows, 'block_size': 2, }, # dim 1 { 'dist_type': 'c', 'proc_grid_size': 2, 'size': cols, 'block_size': 2, }, ) distribution = Distribution.from_global_dim_data( self.context, global_dim_data) distarr = DistArray(distribution, dtype=int) distarr.toarray() las = distarr.get_localarrays() local_shapes = [la.local_shape for la in las] self.assertSequenceEqual(local_shapes, [(3, 5), (3, 4), (2, 5), (2, 4)])
def test_from_global_dim_data_irregular_block(self): bounds = (0, 2, 3, 4, 10) glb_dim_data = ({'dist_type': 'b', 'bounds': bounds}, ) distribution = Distribution.from_global_dim_data( self.context, glb_dim_data) distarr = DistArray(distribution, dtype=int) distarr.toarray()
def test_from_global_dim_data_uu(self): rows = 6 cols = 20 row_ixs = numpy.random.permutation(range(rows)) col_ixs = numpy.random.permutation(range(cols)) row_indices = [row_ixs[: rows // 2], row_ixs[rows // 2 :]] col_indices = [col_ixs[: cols // 4], col_ixs[cols // 4 :]] glb_dim_data = ({"dist_type": "u", "indices": row_indices}, {"dist_type": "u", "indices": col_indices}) distribution = Distribution.from_global_dim_data(self.context, glb_dim_data) distarr = DistArray(distribution, dtype=int) distarr.toarray()
def test_irregular_block_assignment(self): global_dim_data = ({ 'dist_type': 'b', 'bounds': (0, 5), }, { 'dist_type': 'b', 'bounds': (0, 2, 6, 7, 9), }) distribution = Distribution.from_global_dim_data( self.context, global_dim_data) distarr = DistArray(distribution, dtype=int) distarr.toarray()
def test_from_global_dim_data_bu(self): rows = 9 row_break_point = rows // 2 cols = 10 col_indices = numpy.random.permutation(range(cols)) col_break_point = len(col_indices) // 3 indices = [col_indices[:col_break_point], col_indices[col_break_point:]] glb_dim_data = ( {"dist_type": "b", "bounds": (0, row_break_point, rows)}, {"dist_type": "u", "indices": indices}, ) distribution = Distribution.from_global_dim_data(self.context, glb_dim_data) distarr = DistArray(distribution, dtype=int) distarr.toarray()
def test_from_global_dim_data_bc(self): """ Test creation of a block-cyclic array. """ rows, cols = 5, 9 global_dim_data = ( # dim 0 {"dist_type": "c", "proc_grid_size": 2, "size": rows, "block_size": 2}, # dim 1 {"dist_type": "c", "proc_grid_size": 2, "size": cols, "block_size": 2}, ) distribution = Distribution.from_global_dim_data(self.context, global_dim_data) distarr = DistArray(distribution, dtype=int) distarr.toarray() las = distarr.get_localarrays() local_shapes = [la.local_shape for la in las] self.assertSequenceEqual(local_shapes, [(3, 5), (3, 4), (2, 5), (2, 4)])
def test_from_global_dim_data_uu(self): rows = 6 cols = 20 row_ixs = numpy.random.permutation(range(rows)) col_ixs = numpy.random.permutation(range(cols)) row_indices = [row_ixs[:rows // 2], row_ixs[rows // 2:]] col_indices = [col_ixs[:cols // 4], col_ixs[cols // 4:]] glb_dim_data = ( { 'dist_type': 'u', 'indices': row_indices }, { 'dist_type': 'u', 'indices': col_indices }, ) distribution = Distribution.from_global_dim_data( self.context, glb_dim_data) distarr = DistArray(distribution, dtype=int) distarr.toarray()
def test_from_global_dim_data_bu(self): rows = 9 row_break_point = rows // 2 cols = 10 col_indices = numpy.random.permutation(range(cols)) col_break_point = len(col_indices) // 3 indices = [ col_indices[:col_break_point], col_indices[col_break_point:] ] glb_dim_data = ( { 'dist_type': 'b', 'bounds': (0, row_break_point, rows) }, { 'dist_type': 'u', 'indices': indices }, ) distribution = Distribution.from_global_dim_data( self.context, glb_dim_data) distarr = DistArray(distribution, dtype=int) distarr.toarray()
def test_irregular_block_assignment(self): global_dim_data = ({"dist_type": "b", "bounds": (0, 5)}, {"dist_type": "b", "bounds": (0, 2, 6, 7, 9)}) distribution = Distribution.from_global_dim_data(self.context, global_dim_data) distarr = DistArray(distribution, dtype=int) distarr.toarray()