滚动新闻:
首页 > 客户服务 > 技术支持

Ubuntu环境下的CUDA编程(二)

  一:运行程序

  按照上一篇文章所述,安装好CUDA软件以后,就可以使用”nvcc -V“命令查看所用到的编译器版本,本人用版本信息来自:“Cuda compilation tools, release 3.2, V0.2.1221”。

  自己创建一个目录,在里面新建 cu 文件,写入代码,保存,即可使用终端切换到相应目录下进行编译了,编译命令:nvcc -o filename filename.cu,即可将 .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” 即可编译生成不同的可执行文件。