| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- #ifndef REMOTEAR3_CUDA_HELPER_H
- #define REMOTEAR3_CUDA_HELPER_H
- #include "utility.hpp"
- #include <cuda.h>
- #include <cuda_runtime.h>
- #include <nppdefs.h>
- #include <spdlog/spdlog.h>
- inline bool check_cuda_api_call(CUresult api_ret, unsigned int line_number,
- const char *file_name, const char *api_call_str) {
- if (api_ret == CUDA_SUCCESS) [[likely]] return true;
- const char *error_name, *error_str;
- auto ret = cuGetErrorName(api_ret, &error_name);
- if (ret != CUDA_SUCCESS) [[unlikely]] error_name = "Unknown";
- ret = cuGetErrorString(api_ret, &error_str);
- if (ret != CUDA_SUCCESS) [[unlikely]] error_str = "Unknown";
- SPDLOG_ERROR("CUDA runtime api call {} failed at {}:{} with error 0x{:x}:{}, {}.",
- api_call_str, file_name, line_number,
- (int) api_ret, error_name, error_str);
- RET_ERROR_B;
- }
- inline bool check_cuda_api_call(cudaError api_ret, unsigned int line_number,
- const char *file_name, const char *api_call_str) {
- if (api_ret == cudaSuccess) [[likely]] return true;
- SPDLOG_ERROR("CUDA driver api call {} failed at {}:{} with error 0x{:x}.",
- api_call_str, file_name, line_number, (int) api_ret);
- RET_ERROR_B;
- }
- inline bool check_cuda_api_call(NppStatus api_ret, unsigned int line_number,
- const char *file_name, const char *api_call_str) {
- if (api_ret == NPP_SUCCESS) [[likely]] return true;
- SPDLOG_ERROR("NPP api call {} failed at {}:{} with error 0x{:x}.",
- api_call_str, file_name, line_number, (int) api_ret);
- RET_ERROR_B;
- }
- #define CUDA_API_CHECK(api_call) \
- check_cuda_api_call( \
- api_call, __LINE__, __FILE__, #api_call)
- #define CUDA_API_CHECK_P(api_call) \
- if (!check_cuda_api_call( \
- api_call, __LINE__, __FILE__, #api_call)) [[unlikely]] \
- return nullptr
- #endif //REMOTEAR3_CUDA_HELPER_H
|