1 创建CUDA头文件
#ifndef _CUDAINPUT_H_
#define _CUDAINPUT_H_
#include "cuda_runtime.h"
#include "device_launch_parameters.h"
#include <stdio.h>
typedef enum {
CI_OK,
CI_ERROR
}CI_RESULT;
class input_engine {
public:
CI_RESULT initCUDA();
private:
char* err_str;
};
#endif // !_CUDA_H_
1.1 #ifndef/#define/#endif
这是为了防止该头文件被重复引用,具体内容可见《#ifndef/#define/#endif使用详解》。
1.2 创建状态枚举
typedef enum {
CI_OK,
CI_ERROR
}CI_RESULT;
这是和公司图像大神学的编程规范,用来简化代码的return,个人感觉很有效果。
1.3 创建接口
CI_RESULT initCUDA();
其具体实现接下来说明。另外这里有Char*类型,是为具体实现中的printf()使用。stdio.h头文件与printf()有关。
2 创建CUDA文件
#include "Cuda.cuh"
CI_RESULT input_engine::initCUDA() {
int count;
cudaGetDeviceCount(&count);
if (count <= 0) {
sprintf(err_str, "error: there is no cuda capable device;\n");
return CI_ERROR;
}
cudaDeviceProp prop; //获得显卡状态
for (int i = 0; i < count; i++) {
cudaGetDeviceProperties(&a