Source code for gwexpy.interop.cupy_

from __future__ import annotations

from ._optional import require_optional


[docs] def is_cupy_available(): """ Check if cupy is installed and functionally usable (CUDA environment is working). """ try: import cupy # Try to get device count to ensure driver is working return cupy.cuda.runtime.getDeviceCount() > 0 except (ImportError, AttributeError, RuntimeError): return False
[docs] def to_cupy(obj, dtype=None): cupy = require_optional("cupy") try: return cupy.asarray(obj, dtype=dtype) except RuntimeError as e: # Catch CUDA driver errors which often manifest as CUDARuntimeError # or other system-level errors during initialization. msg = str(e) if "cudaErrorInsufficientDriver" in msg or "CUDA driver version" in msg: raise RuntimeError( "CuPy is installed but CUDA driver is insufficient or not found. " "GPU acceleration is not available in this environment." ) from e raise
[docs] def from_cupy(cls, array, t0, dt, unit=None): cupy = require_optional("cupy") data = cupy.asnumpy(array) return cls(data, t0=t0, dt=dt, unit=unit)