CUDA函数错误判断

来源:互联网 发布:www.226bbb.com新域名 编辑:程序博客网 时间:2024/05/22 11:41

    在调用CUDA函数时都会有一个返回值,来判断函数是否调用成功,而且为了调试方便我们又总要将结果输出。然而这样是相当麻烦的,来看一个例子。

        这是cuda sample例子中的一个deviceQuery中的一部分。

        cudaError_t 是返回值的数据类型。

        只有返回值等于cudaSuccess才表明调用cuda函数成功。

   cudaError_t error_id = cudaGetDeviceCount(&deviceCount);

 

   if (error_id != cudaSuccess)

   {

       printf("cudaGetDeviceCount returned %d\n->%s\n",

              (int)error_id, cudaGetErrorString(error_id));

       printf("Result = FAIL\n");

       exit(EXIT_FAILURE);

   }

如果每调用一个函数都要进行判断,那毫无疑问,程序看起来将很臃肿,且不利于对代码整体的浏览。因此可以考虑将其简化,下面是我自己定义的一个头文件。

#ifndef HANDLERROR_H

#define HANDLERROR_H

 

#include "cuda_runtime.h"

#include

 

using namespace std;

static void HandleError( cudaError_t err, const char *file, int line )

{

   if (err != cudaSuccess)

   {

       cout << "" << file << "的第" << line << "行出现错误!" << endl;

       cout << "错误码为" << cudaGetErrorString( err ) << endl;

   }

}

#define HANDLE_ERROR( err ) (HandleError( err,__FILE__, __LINE__ ))

 

#endif

       如此,上述代码就转换为:

   HandleError( cudaGetDeviceCount(&deviceCount) )

0 0
原创粉丝点击