Files
URDepends/TVALGPU/include/handle_error.h
2023-05-18 16:04:27 +08:00

41 lines
1.1 KiB
C++

#ifndef HANDLE_ERROR_H_
#define HANDLE_ERROR_H_
#include <stdexcept>
#include <string>
#include <sstream>
class cuda_exception: public std::runtime_error {
public:
cuda_exception(const std::string& message) : std::runtime_error(message) {};
};
static void handle_error(cudaError_t error, const char *file, int line ) {
if (error != cudaSuccess) {
std::stringstream ss;
ss << file << ", line " << line << ": " << cudaGetErrorString(error) << "\n";
throw cuda_exception(ss.str());
}
}
static void handle_error(cublasStatus_t error, const char *file, int line ) {
if (error != CUBLAS_STATUS_SUCCESS) {
std::stringstream ss;
ss << file << ", line " << line << ": cublas error " << error << "\n";
throw cuda_exception(ss.str());
}
}
static void handle_error(cusparseStatus_t error, const char *file, int line ) {
if (error != CUSPARSE_STATUS_SUCCESS) {
std::stringstream ss;
ss << file << ", line " << line << ": cusparse error " << error << "\n";
throw cuda_exception(ss.str());
}
}
#define HANDLE_ERROR(error) (handle_error(error, __FILE__, __LINE__ ))
#endif /* HANDLE_ERROR_H_ */