diff --git a/arraycontext/impl/pyopencl/__init__.py b/arraycontext/impl/pyopencl/__init__.py index 4064689b6d49e5206ce3a58dc54949613d99d937..982fd431f4a6cf5537ef497cf0814f88a95c5dc7 100644 --- a/arraycontext/impl/pyopencl/__init__.py +++ b/arraycontext/impl/pyopencl/__init__.py @@ -268,17 +268,17 @@ class PyOpenCLArrayContext(ArrayContext): def call_loopy(self, t_unit, **kwargs): try: - t_unit = self._loopy_transform_cache[t_unit] + executor = self._loopy_transform_cache[t_unit] except KeyError: orig_t_unit = t_unit - t_unit = self.transform_loopy_program(t_unit) - self._loopy_transform_cache[orig_t_unit] = t_unit + executor = self.transform_loopy_program(t_unit).executor(self.context) + self._loopy_transform_cache[orig_t_unit] = executor del orig_t_unit - evt, result = t_unit(self.queue, **kwargs, allocator=self.allocator) + evt, result = executor(self.queue, **kwargs, allocator=self.allocator) if self._wait_event_queue_length is not False: - prg_name = t_unit.default_entrypoint.name + prg_name = executor.t_unit.default_entrypoint.name wait_event_queue = self._kernel_name_to_wait_event_queue.setdefault( prg_name, [])