一:运行程序
自己创建一个目录,在里面新建 cu 文件,写入代码,保存,即可使用终端切换到相应目录下进行编译 了,编译命令:nvcc -o filename filename.c u,即可将 .cu 文件编译成可执行文件,如果有语法错误,此时将会报错,如果没有,其他错误将会在运行时报错,使用 ./filename 运行程序,即可。
二:调试程序
如果程序有误但是没能看到结果或者相关信息,不妨加入调试信息:nvcc -o filename filename.cu -g ,即可添加调试信息,之后使用gdb运行:gdb ./filename 即可进入可执行文件,输入命令:r,即可运行具有调试信息的程序,看到错误结果的相关信息,再找出错误之处,修改 再编译。
三:错误查找
在CUDA里面,有很好的查错函数,本人一般用其中两个:CUT_CHECK_ERROR (),CUDA_SAFE_CALL(),前者可以接受最近一次 的cudaerror_t异常,且输出 相应的错误类型,比如像检测一个核函数是否正确执行,可以在执行语句之后加 入:CUT_CHECK_ERROR(“Kernel execution Failed”);运行时如果出错,将会报告并且输出错误类型;而后者直接输出错误类型,例如想要知道某复制语句是否成功,可以在将语句改写 成:CUDA_SAFE_CALL(cudaMemcpy(d_data,data,size,cudaMemcpyHostToDevice));运行时如果出错,将会直接输出错误类型。
上述函数使用时必须包含头文件 cutil.h,添加方法见第四点。
四:添加路径
如何添加路径呢?使用 "-I path" 参数输入,例如想要添加的头文件为 cutil.h,则在 .cu 文件将其包括进去,查看其属性可以知道其位置,为:/home/user/NVIDIA_GPU_Computing_SDK/C/common/inc,那么编译的时候命令可以写成:nvcc -I /home/user/NVIDIA_GPU_Computing_SDK/C/common/inc -o filename filename.cu,这样编译器就会找到该文件并调用了,其他路径的添加类似。
五:利用Makefile编程
创建一个Makefile,然后输入命令就可以了:
filename : filename.cu
nvcc -o filename filename.cu
在终端使用命令:make filename,即可编译生成可执行文件,如果有多个 .cu 文件要编译,也可以写在同一个Makefile里面,改变 “make filename” 中的 “filename” 即可编译生成不同的可执行文件。