错误处理
运行时 API 错误码
调用 CUDA 运行时 API 时,接口返回错误码。
1 | __host__ __device__ cudaError_t cudaGetDeviceCount ( int* count ); // 获取设备数量, 返回错误码 |
错误检查
1 | __host__ __device__ const char* cudaGetErrorName ( cudaError_t error ); // 获取错误码的枚举名称 |
定义错误检查函数
1 | __host__ void error_check_entry() { |
核函数中的异常
核函数的返回值必须是 void。
1 | __host__ __device__ cudaError_t cudaGetLastError ( void ); // 返回最后一次错误码 |
1 | __global__ void kernel_error_entry() { |
性能评估
事件计时
1 | __host__ cudaError_t cudaEventCreate ( cudaEvent_t* event ); |
示例。
1 | cudaEvent_t start, end; |
error_check。
1 | __host__ __device__ cudaError_t error_check(cudaError_t err, const char *fn, int line) { |
nvprof
nvprof 是评估 cuda 程序性能的工具。不过目前已经是过时的工具,不适用 compute capability >= 8.0 的设备。新设备适用 nsys 替代。
1 | nvprof {cuda-program} |
nsys
1 | nsys profile {cuda-program} # 运行并记录程序的 profile 到 nsys-rep 文件 |
获取 GPU 信息
运行时 API
1 | __host__ cudaError_t cudaGetDeviceProperties ( cudaDeviceProp* prop, int device ) |
1 | __host__ void PrintDeviceInfo() { |