Skip to content
Snippets Groups Projects
Commit 7db7f592 authored by Frederik Hennig's avatar Frederik Hennig
Browse files

do not use cupy in code that must always be executable

parent 4716c97a
No related branches found
No related tags found
1 merge request!458HIP Target and Platform
Pipeline #76129 passed
...@@ -208,12 +208,6 @@ class CupyKernelWrapper(KernelWrapper): ...@@ -208,12 +208,6 @@ class CupyKernelWrapper(KernelWrapper):
class CupyJit(JitBase): class CupyJit(JitBase):
def __init__(self, default_block_size: Sequence[int] = (128, 2, 1)): def __init__(self, default_block_size: Sequence[int] = (128, 2, 1)):
self._runtime_headers: set[str]
if cp.cuda.runtime.is_hip:
self._runtime_headers = set()
else:
self._runtime_headers = {"<cstdint>"}
if len(default_block_size) > 3: if len(default_block_size) > 3:
raise ValueError( raise ValueError(
f"Invalid block size: {default_block_size}. Must be at most three-dimensional." f"Invalid block size: {default_block_size}. Must be at most three-dimensional."
...@@ -234,12 +228,12 @@ class CupyJit(JitBase): ...@@ -234,12 +228,12 @@ class CupyJit(JitBase):
raise JitError( raise JitError(
"The CupyJit just-in-time compiler only accepts GPU kernels generated for CUDA or HIP" "The CupyJit just-in-time compiler only accepts GPU kernels generated for CUDA or HIP"
) )
if kernel.target == Target.CUDA and cp.cuda.runtime.is_hip: if kernel.target == Target.CUDA and cp.cuda.runtime.is_hip:
raise JitError( raise JitError(
"Cannot compile a CUDA kernel on a HIP-based Cupy installation." "Cannot compile a CUDA kernel on a HIP-based Cupy installation."
) )
if kernel.target == Target.HIP and not cp.cuda.runtime.is_hip: if kernel.target == Target.HIP and not cp.cuda.runtime.is_hip:
raise JitError( raise JitError(
"Cannot compile a HIP kernel on a CUDA-based Cupy installation." "Cannot compile a HIP kernel on a CUDA-based Cupy installation."
...@@ -261,7 +255,13 @@ class CupyJit(JitBase): ...@@ -261,7 +255,13 @@ class CupyJit(JitBase):
return tuple(options) return tuple(options)
def _prelude(self, kfunc: GpuKernel) -> str: def _prelude(self, kfunc: GpuKernel) -> str:
headers = self._runtime_headers
headers: set[str]
if cp.cuda.runtime.is_hip:
headers = set()
else:
headers = {"<cstdint>"}
headers |= kfunc.required_headers headers |= kfunc.required_headers
if '"pystencils_runtime/half.h"' in headers: if '"pystencils_runtime/half.h"' in headers:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment