diff --git a/kernel_tuner/backends/hip/__init__.py b/kernel_tuner/backends/hip/__init__.py new file mode 100644 index 000000000..5551b736c --- /dev/null +++ b/kernel_tuner/backends/hip/__init__.py @@ -0,0 +1 @@ +from .hip import * diff --git a/kernel_tuner/backends/hip.py b/kernel_tuner/backends/hip/hip.py similarity index 96% rename from kernel_tuner/backends/hip.py rename to kernel_tuner/backends/hip/hip.py index 368ba61f2..c4f404919 100644 --- a/kernel_tuner/backends/hip.py +++ b/kernel_tuner/backends/hip/hip.py @@ -8,6 +8,7 @@ from kernel_tuner.backends.backend import GPUBackend from kernel_tuner.observers.hip import HipRuntimeObserver +from kernel_tuner.backends.hip.util import hip_check try: from hip import hip, hiprtc @@ -31,20 +32,6 @@ hipSuccess = 0 - -def hip_check(call_result): - """helper function to check return values of hip calls""" - err = call_result[0] - result = call_result[1:] - if len(result) == 1: - result = result[0] - if isinstance(err, hip.hipError_t) and err != hip.hipError_t.hipSuccess: - _, error_name = hip.hipGetErrorName(err) - _, error_str = hip.hipGetErrorString(err) - raise RuntimeError(f"{error_name}: {error_str}") - return result - - class HipFunctions(GPUBackend): """Class that groups the HIP functions on maintains state about the device.""" diff --git a/kernel_tuner/backends/hip/util.py b/kernel_tuner/backends/hip/util.py new file mode 100644 index 000000000..fea72f540 --- /dev/null +++ b/kernel_tuner/backends/hip/util.py @@ -0,0 +1,18 @@ +try: + from hip import hip, hiprtc +except (ImportError, RuntimeError): + hip = None + + +def hip_check(call_result): + """helper function to check return values of hip calls""" + err = call_result[0] + result = call_result[1:] + if len(result) == 1: + result = result[0] + if isinstance(err, hip.hipError_t) and err != hip.hipError_t.hipSuccess: + _, error_name = hip.hipGetErrorName(err) + _, error_str = hip.hipGetErrorString(err) + raise RuntimeError(f"{error_name}: {error_str}") + return result + diff --git a/kernel_tuner/observers/hip.py b/kernel_tuner/observers/hip.py index c536cf965..5e27fb1b5 100644 --- a/kernel_tuner/observers/hip.py +++ b/kernel_tuner/observers/hip.py @@ -1,6 +1,7 @@ import numpy as np from kernel_tuner.observers.observer import BenchmarkObserver +from kernel_tuner.backends.hip.util import hip_check try: from hip import hip, hiprtc @@ -24,7 +25,7 @@ def __init__(self, dev): def after_finish(self): # Time is measured in milliseconds - EventElapsedTime = hip.hipEventElapsedTime(self.start, self.end) + EventElapsedTime = hip_check(hip.hipEventElapsedTime(self.start, self.end)) self.times.append(EventElapsedTime) def get_results(self):