据我所知,不存在这样的事情。如果您只想在出错时抛出异常,请考虑使用thrust::system_error
.
例如:
#include <thrust/system_error.h>
void my_cudaMalloc_wrapper(void **devPtr, size_t size)
{
cudaError_t error = cudaMalloc(devPtr, size);
if(error != cudaSuccess)
{
throw thrust::system_error(error, thrust::cuda_category());
}
}
thrust::system_error
源自std::runtime_error
。它的.what()
成员函数将为您解码 CUDA 运行时错误:
#include <iostream>
void foo()
{
int *ptr = 0;
size_t n = 13;
try
{
my_cudaMalloc_wrapper(&ptr, n);
}
catch(std::runtime_error &error)
{
std::cerr << "Uh oh: " << error.what() << std::endl;
}
}