kerncraft/kernel.py
def _build_array_initializations(self, array_dimensions):
        """
        Generate initialization statements for arrays.

        :param array_dimensions: dictionary of array dimensions

        :return: list of nodes
        """
        kernel = deepcopy(deepcopy(self.get_kernel_loop_nest()))
        # traverse to the inner most for loop:
        inner_most = self._find_inner_most_loop(kernel)
        orig_inner_stmt = inner_most.stmt
        inner_most.stmt = c_ast.Compound([])

        rand_float_str = str(random.uniform(1.0, 0.1))

        # find all array references in original orig_inner_stmt
        for aref in find_node_type(orig_inner_stmt, c_ast.ArrayRef):
            # transform to 1d references
            transform_multidim_to_1d_ref(aref, array_dimensions)
            # build static assignments and inject into inner_most.stmt
            inner_most.stmt.block_items.append(c_ast.Assignment(
                '=', aref, c_ast.Constant('float', rand_float_str)))

        return kernel
def _build_array_initializations(self, array_dimensions):
        kernel = deepcopy(deepcopy(self.get_kernel_loop_nest()))
        # traverse to the inner most for loop:
        inner_most = self._find_inner_most_loop(kernel)
        orig_inner_stmt = inner_most.stmt
        inner_most.stmt = c_ast.Compound([])

        rand_float_str = str(random.uniform(1.0, 0.1))

        # find all array references in original orig_inner_stmt
        for aref in find_node_type(orig_inner_stmt, c_ast.ArrayRef):
            # transform to 1d references
            transform_multidim_to_1d_ref(aref, array_dimensions)
            # build static assignments and inject into inner_most.stmt
            inner_most.stmt.block_items.append(c_ast.Assignment(
                '=', aref, c_ast.Constant('float', rand_float_str)))

        return kernel
def _build_array_initializations ( self , array_dimensions ) : kernel = deepcopy ( deepcopy ( self . get_kernel_loop_nest ( ) ) ) # traverse to the inner most for loop: inner_most = self . _find_inner_most_loop ( kernel ) orig_inner_stmt = inner_most . stmt inner_most . stmt = c_ast . Compound ( [ ] ) rand_float_str = str ( random . uniform ( 1.0 , 0.1 ) ) # find all array references in original orig_inner_stmt for aref in find_node_type ( orig_inner_stmt , c_ast . ArrayRef ) : # transform to 1d references transform_multidim_to_1d_ref ( aref , array_dimensions ) # build static assignments and inject into inner_most.stmt inner_most . stmt . block_items . append ( c_ast . Assignment ( '=' , aref , c_ast . Constant ( 'float' , rand_float_str ) ) ) return kernel
Generate initialization statements for arrays.

        :param array_dimensions: dictionary of array dimensions

        :return: list of nodes
Generate initialization statements for arrays .