def render_argument_list(self, *arg_lists): all_args = [] for arg_list in arg_lists: if isinstance(arg_list, str): arg_list = str( self.template.get_text_template(arg_list).render(self.var_dict)) arg_list = self._C_COMMENT_FINDER.sub("", arg_list) arg_list = arg_list.replace("\n", " ") all_args.extend(arg_list.split(",")) else: all_args.extend(arg_list) from pyopencl.compyte.dtypes import parse_c_arg_backend parsed_args = [] for arg in all_args: if isinstance(arg, str): arg = arg.strip() if not arg: continue ph = parse_c_arg_backend(arg, _ScalarArgPlaceholder, _VectorArgPlaceholder, name_to_dtype=lambda x: x) parsed_arg = self.render_arg(ph) elif isinstance(arg, Argument): parsed_arg = arg elif isinstance(arg, tuple): parsed_arg = ScalarArg(self.parse_type(arg[0]), arg[1]) parsed_args.append(parsed_arg) return parsed_args
def render_argument_list(self, *arg_lists): all_args = [] for arg_list in arg_lists: if isinstance(arg_list, str): if arg_list.startswith("//CL//"): arg_list = arg_list[6:] arg_list = self._C_COMMENT_FINDER.sub("", arg_list) arg_list = arg_list.replace("\n", " ") all_args.extend(arg_list.split(",")) else: all_args.extend(arg_list) from pyopencl.compyte.dtypes import parse_c_arg_backend parsed_args = [] for arg in all_args: if isinstance(arg, str): arg = arg.strip() if not arg: continue ph = parse_c_arg_backend(arg, _ScalarArgPlaceholder, _VectorArgPlaceholder, name_to_dtype=lambda x: x) parsed_arg = self.render_arg(ph) elif isinstance(arg, Argument): parsed_arg = arg elif isinstance(arg, tuple): parsed_arg = ScalarArg(self.parse_type(arg[0]), arg[1]) parsed_args.append(parsed_arg) return parsed_args
def parse_c_arg(c_arg): c_arg = (c_arg.replace("__global", "").replace("__local", "").replace("__constant", "")) from pyopencl.compyte.dtypes import parse_c_arg_backend return parse_c_arg_backend(c_arg, ScalarArg, VectorArg)
def parse_c_arg(c_arg): c_arg = (c_arg .replace("__global", "") .replace("__local", "") .replace("__constant", "")) from pyopencl.compyte.dtypes import parse_c_arg_backend return parse_c_arg_backend(c_arg, ScalarArg, VectorArg)
def parse_c_arg(c_arg): for aspace in ["__local", "__constant"]: if aspace in c_arg: raise RuntimeError("cannot deal with local or constant " "OpenCL address spaces in C argument lists ") c_arg = c_arg.replace("__global", "") from pyopencl.compyte.dtypes import parse_c_arg_backend return parse_c_arg_backend(c_arg, ScalarArg, VectorArg)
def parse_c_arg(c_arg, with_offset=False): for aspace in ["__local", "__constant"]: if aspace in c_arg: raise RuntimeError("cannot deal with local or constant " "OpenCL address spaces in C argument lists ") c_arg = c_arg.replace("__global", "") if with_offset: vec_arg_factory = lambda dtype, name: VectorArg(dtype, name, with_offset=True) else: vec_arg_factory = VectorArg from pyopencl.compyte.dtypes import parse_c_arg_backend return parse_c_arg_backend(c_arg, ScalarArg, vec_arg_factory)
def render_argument_list(self, *arg_lists, **kwargs): with_offset = kwargs.pop("with_offset", False) if kwargs: raise TypeError("unrecognized kwargs: " + ", ".join(kwargs)) all_args = [] for arg_list in arg_lists: if isinstance(arg_list, str): arg_list = str( self.template.get_text_template(arg_list).render( self.var_dict)) arg_list = self._C_COMMENT_FINDER.sub("", arg_list) arg_list = arg_list.replace("\n", " ") all_args.extend(arg_list.split(",")) else: all_args.extend(arg_list) if with_offset: def vec_arg_factory(typename, name): return _VectorArgPlaceholder(typename, name, with_offset=True) else: vec_arg_factory = _VectorArgPlaceholder from pyopencl.compyte.dtypes import parse_c_arg_backend parsed_args = [] for arg in all_args: if isinstance(arg, str): arg = arg.strip() if not arg: continue ph = parse_c_arg_backend(arg, _ScalarArgPlaceholder, vec_arg_factory, name_to_dtype=lambda x: x) parsed_arg = self.render_arg(ph) elif isinstance(arg, Argument): parsed_arg = arg elif isinstance(arg, tuple): parsed_arg = ScalarArg(self.parse_type(arg[0]), arg[1]) parsed_args.append(parsed_arg) return parsed_args
def parse_c_arg(c_arg, with_offset=False): for aspace in ["__local", "__constant"]: if aspace in c_arg: raise RuntimeError("cannot deal with local or constant " "OpenCL address spaces in C argument lists ") c_arg = c_arg.replace("__global", "") if with_offset: vec_arg_factory = lambda dtype, name: \ VectorArg(dtype, name, with_offset=True) else: vec_arg_factory = VectorArg from pyopencl.compyte.dtypes import parse_c_arg_backend return parse_c_arg_backend(c_arg, ScalarArg, vec_arg_factory)
def render_argument_list(self, *arg_lists, **kwargs): with_offset = kwargs.pop("with_offset", False) if kwargs: raise TypeError("unrecognized kwargs: " + ", ".join(kwargs)) all_args = [] for arg_list in arg_lists: if isinstance(arg_list, str): arg_list = str( self.template .get_text_template(arg_list).render(self.var_dict)) arg_list = self._C_COMMENT_FINDER.sub("", arg_list) arg_list = arg_list.replace("\n", " ") all_args.extend(arg_list.split(",")) else: all_args.extend(arg_list) if with_offset: vec_arg_factory = lambda typename, name: \ _VectorArgPlaceholder(typename, name, with_offset=True) else: vec_arg_factory = _VectorArgPlaceholder from pyopencl.compyte.dtypes import parse_c_arg_backend parsed_args = [] for arg in all_args: if isinstance(arg, str): arg = arg.strip() if not arg: continue ph = parse_c_arg_backend(arg, _ScalarArgPlaceholder, vec_arg_factory, name_to_dtype=lambda x: x) parsed_arg = self.render_arg(ph) elif isinstance(arg, Argument): parsed_arg = arg elif isinstance(arg, tuple): parsed_arg = ScalarArg(self.parse_type(arg[0]), arg[1]) parsed_args.append(parsed_arg) return parsed_args