diff --git a/GPUSimulators/Common.py b/GPUSimulators/Common.py index 49dcaf1..6681450 100644 --- a/GPUSimulators/Common.py +++ b/GPUSimulators/Common.py @@ -43,6 +43,20 @@ import json from hip import hip, hiprtc from hip import hipblas +def hip_check(call_result): + 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: + raise RuntimeError(str(err)) + elif ( + isinstance(err, hiprtc.hiprtcResult) + and err != hiprtc.hiprtcResult.HIPRTC_SUCCESS + ): + raise RuntimeError(str(err)) + return result + def safeCall(cmd): logger = logging.getLogger(__name__) try: diff --git a/GPUSimulators/MPISimulator.py b/GPUSimulators/MPISimulator.py index ebb5787..29706d0 100644 --- a/GPUSimulators/MPISimulator.py +++ b/GPUSimulators/MPISimulator.py @@ -206,6 +206,20 @@ class MPISimulator(Simulator.BaseSimulator): """ Class which handles communication between simulators on different MPI nodes """ + def hip_check(call_result): + 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: + raise RuntimeError(str(err)) + elif ( + isinstance(err, hiprtc.hiprtcResult) + and err != hiprtc.hiprtcResult.HIPRTC_SUCCESS + ): + raise RuntimeError(str(err)) + return result + def __init__(self, sim, grid): self.profiling_data_mpi = { 'start': {}, 'end': {} } self.profiling_data_mpi["start"]["t_mpi_halo_exchange"] = 0 diff --git a/GPUSimulators/SHMEMSimulator.py b/GPUSimulators/SHMEMSimulator.py index 4385919..1a608ed 100644 --- a/GPUSimulators/SHMEMSimulator.py +++ b/GPUSimulators/SHMEMSimulator.py @@ -24,7 +24,8 @@ import logging from GPUSimulators import Simulator, CudaContext import numpy as np -import pycuda.driver as cuda +#import pycuda.driver as cuda +from hip import hip, hiprtc import time