Program Listing for File NuMagSANSlib_CUDAError.h#

↰ Return to documentation for file (src/helper/NuMagSANSlib_CUDAError.h)

#pragma once

inline bool CheckCUDA(cudaError_t err, const std::string& context) {
    if (err != cudaSuccess) {
        LogSystem::write("CUDA error in " + context + ": " + cudaGetErrorString(err));
        return false;
    }

    return true;
}

inline bool CheckCUDALastError(const std::string& context) {
    bool success = true;

    success = CheckCUDA(cudaGetLastError(), context) && success;

    success = CheckCUDA(cudaDeviceSynchronize(), context + " synchronization") && success;

    return success;
}

inline bool CheckCUDAKernelRun(const std::string& kernel_name) {
    bool success = true;

    success = CheckCUDA(cudaGetLastError(), "kernel launch " + kernel_name) && success;

    success = CheckCUDA(cudaDeviceSynchronize(), "kernel execution " + kernel_name) && success;

    return success;
}