Commit 90ff3dd9 authored by Vladislav Vinogradov's avatar Vladislav Vinogradov

added cublasSafeCall

parent f299bde3
...@@ -45,6 +45,7 @@ ...@@ -45,6 +45,7 @@
#include "cuda_runtime_api.h" #include "cuda_runtime_api.h"
#include "cufft.h" #include "cufft.h"
#include "cublas.h"
#include "NCV.hpp" #include "NCV.hpp"
#if defined(__GNUC__) #if defined(__GNUC__)
...@@ -52,11 +53,13 @@ ...@@ -52,11 +53,13 @@
#define nppSafeCall(expr) ___nppSafeCall(expr, __FILE__, __LINE__, __func__) #define nppSafeCall(expr) ___nppSafeCall(expr, __FILE__, __LINE__, __func__)
#define ncvSafeCall(expr) ___ncvSafeCall(expr, __FILE__, __LINE__, __func__) #define ncvSafeCall(expr) ___ncvSafeCall(expr, __FILE__, __LINE__, __func__)
#define cufftSafeCall(expr) ___cufftSafeCall(expr, __FILE__, __LINE__, __func__) #define cufftSafeCall(expr) ___cufftSafeCall(expr, __FILE__, __LINE__, __func__)
#define cublasSafeCall(expr) ___cublasSafeCall(expr, __FILE__, __LINE__, __func__)
#else /* defined(__CUDACC__) || defined(__MSVC__) */ #else /* defined(__CUDACC__) || defined(__MSVC__) */
#define cudaSafeCall(expr) ___cudaSafeCall(expr, __FILE__, __LINE__) #define cudaSafeCall(expr) ___cudaSafeCall(expr, __FILE__, __LINE__)
#define nppSafeCall(expr) ___nppSafeCall(expr, __FILE__, __LINE__) #define nppSafeCall(expr) ___nppSafeCall(expr, __FILE__, __LINE__)
#define ncvSafeCall(expr) ___ncvSafeCall(expr, __FILE__, __LINE__) #define ncvSafeCall(expr) ___ncvSafeCall(expr, __FILE__, __LINE__)
#define cufftSafeCall(expr) ___cufftSafeCall(expr, __FILE__, __LINE__) #define cufftSafeCall(expr) ___cufftSafeCall(expr, __FILE__, __LINE__)
#define cublasSafeCall(expr) ___cublasSafeCall(expr, __FILE__, __LINE__)
#endif #endif
namespace cv namespace cv
...@@ -67,6 +70,7 @@ namespace cv ...@@ -67,6 +70,7 @@ namespace cv
void nppError(int err, const char *file, const int line, const char *func = ""); void nppError(int err, const char *file, const int line, const char *func = "");
void ncvError(int err, const char *file, const int line, const char *func = ""); void ncvError(int err, const char *file, const int line, const char *func = "");
void cufftError(int err, const char *file, const int line, const char *func = ""); void cufftError(int err, const char *file, const int line, const char *func = "");
void cublasError(int err, const char *file, const int line, const char *func = "");
static inline void ___cudaSafeCall(cudaError_t err, const char *file, const int line, const char *func = "") static inline void ___cudaSafeCall(cudaError_t err, const char *file, const int line, const char *func = "")
{ {
...@@ -91,6 +95,12 @@ namespace cv ...@@ -91,6 +95,12 @@ namespace cv
if (CUFFT_SUCCESS != err) if (CUFFT_SUCCESS != err)
cv::gpu::cufftError(err, file, line, func); cv::gpu::cufftError(err, file, line, func);
} }
static inline void ___cublasSafeCall(cublasStatus_t err, const char *file, const int line, const char *func = "")
{
if (CUBLAS_STATUS_SUCCESS != err)
cv::gpu::cublasError(err, file, line, func);
}
} }
} }
......
...@@ -178,7 +178,7 @@ namespace ...@@ -178,7 +178,7 @@ namespace
error_entry( NPPST_MEM_INTERNAL_ERROR ) error_entry( NPPST_MEM_INTERNAL_ERROR )
}; };
const size_t ncv_error_num = sizeof(npp_errors) / sizeof(npp_errors[0]); const size_t ncv_error_num = sizeof(ncv_errors) / sizeof(ncv_errors[0]);
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
// CUFFT errors // CUFFT errors
...@@ -197,6 +197,23 @@ namespace ...@@ -197,6 +197,23 @@ namespace
}; };
const int cufft_error_num = sizeof(cufft_errors) / sizeof(cufft_errors[0]); const int cufft_error_num = sizeof(cufft_errors) / sizeof(cufft_errors[0]);
//////////////////////////////////////////////////////////////////////////
// CUBLAS errors
const ErrorEntry cublas_errors[] =
{
error_entry( CUBLAS_STATUS_SUCCESS ),
error_entry( CUBLAS_STATUS_NOT_INITIALIZED ),
error_entry( CUBLAS_STATUS_ALLOC_FAILED ),
error_entry( CUBLAS_STATUS_INVALID_VALUE ),
error_entry( CUBLAS_STATUS_ARCH_MISMATCH ),
error_entry( CUBLAS_STATUS_MAPPING_ERROR ),
error_entry( CUBLAS_STATUS_EXECUTION_FAILED ),
error_entry( CUBLAS_STATUS_INTERNAL_ERROR )
};
const int cublas_error_num = sizeof(cublas_errors) / sizeof(cublas_errors[0]);
} }
namespace cv namespace cv
...@@ -236,6 +253,12 @@ namespace cv ...@@ -236,6 +253,12 @@ namespace cv
string msg = getErrorString(code, cufft_errors, cufft_error_num); string msg = getErrorString(code, cufft_errors, cufft_error_num);
cv::gpu::error(msg.c_str(), file, line, func); cv::gpu::error(msg.c_str(), file, line, func);
} }
void cublasError(int code, const char *file, const int line, const char *func)
{
string msg = getErrorString(code, cublas_errors, cublas_error_num);
cv::gpu::error(msg.c_str(), file, line, func);
}
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment