Esempio n. 1
0
    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()
Esempio n. 2
0
    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)])
Esempio n. 3
0
    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()
Esempio n. 4
0
 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()
Esempio n. 5
0
 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()
Esempio n. 6
0
    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()
Esempio n. 7
0
    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)])
Esempio n. 8
0
 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()
Esempio n. 9
0
    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()
Esempio n. 10
0
 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()