def __init__(self, in_params, out_params, map_expr, reduce_expr, post_map_expr, identity, name='reduce_kernel', reduce_type=None, options=(), reduce_dims=True, preamble=''): self.in_params = elementwise._get_param_info(in_params, True) self.out_params = elementwise._get_param_info(out_params) self.nin = len(self.in_params) self.nout = len(self.out_params) self.params = self.in_params + self.out_params + \ elementwise._get_param_info( 'CIndexer _in_ind, CIndexer _out_ind, int32 _out_clp2_size') self.identity = identity self.reduce_expr = reduce_expr self.map_expr = map_expr self.name = name self.options = options self.reduce_dims = reduce_dims self.post_map_expr = post_map_expr if reduce_type is None: self.reduce_type = self.out_params[0].ctype else: self.reduce_type = reduce_type self.preamble = preamble
def __init__(self, name, ops, identity=None, preamble=''): self.name = name self._ops = ops self.identity = identity self._preamble = preamble self.nin = 1 self.nout = 1 in_params = elementwise._get_param_info('T in0', True) out_params = elementwise._get_param_info('T out0') self._params = in_params + out_params + elementwise._get_param_info( 'CIndexer _in_ind, CIndexer _out_ind, int32 _out_clp2_size') self._input_expr = 'const type_in0_raw in0 = _raw_in0[_in_ind.get()];' self._output_expr = 'type_out0_raw &out0 = _raw_out0[_out_ind.get()];'