From 6969ca889133b1d00a3a0c7031e0e9e10a0455c2 Mon Sep 17 00:00:00 2001 From: Andreas Kloeckner Date: Mon, 17 Dec 2018 17:22:45 -0600 Subject: [PATCH] Introduce PyOpenCLTarget.with_device to maintain target type --- loopy/target/pyopencl.py | 3 +++ loopy/target/pyopencl_execution.py | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/loopy/target/pyopencl.py b/loopy/target/pyopencl.py index 34faf0a03..e8b5e4464 100644 --- a/loopy/target/pyopencl.py +++ b/loopy/target/pyopencl.py @@ -411,6 +411,9 @@ class PyOpenCLTarget(OpenCLTarget): from loopy.target.pyopencl_execution import PyOpenCLKernelExecutor return PyOpenCLKernelExecutor(queue.context, kernel) + def with_device(self, device): + return type(self)(device) + # }}} diff --git a/loopy/target/pyopencl_execution.py b/loopy/target/pyopencl_execution.py index 27be61987..0186a279f 100644 --- a/loopy/target/pyopencl_execution.py +++ b/loopy/target/pyopencl_execution.py @@ -267,7 +267,8 @@ class PyOpenCLKernelExecutor(KernelExecutorBase): from loopy.target.pyopencl import PyOpenCLTarget if isinstance(kernel.target, PyOpenCLTarget): - self.kernel = kernel.copy(target=PyOpenCLTarget(context.devices[0])) + self.kernel = kernel.copy(target=( + kernel.target.with_device(context.devices[0]))) def get_invoker_uncached(self, kernel, codegen_result): generator = PyOpenCLExecutionWrapperGenerator() -- GitLab