diff --git a/pyopencl/__init__.py b/pyopencl/__init__.py index b6e5ea835f0ef4cc9676cce67b6998b204bc0231..0c3df5f952567d087a4b531ed0f17b3d69a14186 100644 --- a/pyopencl/__init__.py +++ b/pyopencl/__init__.py @@ -675,10 +675,15 @@ def _add_functionality(): prg = prg._get_prg() kernel_old_init(self, prg, name) + + self._setup(prg) + + def kernel__setup(self, prg): self._source = getattr(prg, "_source", None) self._generate_naive_call() self._wg_info_cache = {} + return self def kernel_get_work_group_info(self, param, device): try: @@ -993,6 +998,7 @@ def _add_functionality(): *args, **kwargs) Kernel.__init__ = kernel_init + Kernel._setup = kernel__setup Kernel.get_work_group_info = kernel_get_work_group_info Kernel._set_set_args_body = kernel__set_set_args_body Kernel._generate_buffer_arg_setter = kernel__generate_buffer_arg_setter diff --git a/pyopencl/cffi_cl.py b/pyopencl/cffi_cl.py index 5cef0a0f8e27001479fd5d3a3a36f0e6e0f1b319..5194f0b1715e902e4afd1b541b027e950f383a65 100644 --- a/pyopencl/cffi_cl.py +++ b/pyopencl/cffi_cl.py @@ -1045,7 +1045,11 @@ class _Program(_Common): knls = _CArray(_ffi.new('clobj_t**')) _handle_error(_lib.program__all_kernels( self.ptr, knls.ptr, knls.size)) - return [Kernel._create(knls.ptr[0][i]) for i in range(knls.size[0])] + return [ + Kernel + ._create(knls.ptr[0][i]) + ._setup(self) + for i in range(knls.size[0])] # }}}