Linux环境下CUDA在CodeBlocks中的配置

正文:

 

        本文将介绍NVIDIA CUDA的nvcc编译器在CodeBlocks 中的设置步骤,注意,这些步骤仅仅针对Linux环境下,使用GCC作为C/C++编译器的情况,而不适用于Windows环境的情况。

  • 点击CodeBlocks 菜单栏上的Settings --> Compiler and debugger
  • 在上方的Selected compiler中,确定“GNU GCC Compiler”被选中,然后点击下面的Copy按钮,以新建一个编译器配置
  • 输入编译器名字,比如"NVIDIA NVCC CUDA Compiler"
  • 弹出的窗口全部点击“Yes”等,然后选择下面的Toolchain executables标签页,如果看不到,点一下向右的箭头
  • 输入nvcc的安装路径,比如/opt/local/cuda
  • 再下面的C compiler输入:nvcc
  • C++ compiler: nvcc
  • Linker for dynamic libs: nvcc
  • Likner for static libs: nvcc
  • Debugger: cuda-gdb?(不确定,我还没有试过)
  • 点击Search directories标签页,在Compiler box中加入/Your_location/NVIDIA_GPU_Computing_SDK/C/common/inc (视安装路径不同而不同,这样添加后,编译器便能够找到cutil.h等头文件)
  • 在Linker box中加入 /Your_location/NVIDIA_GPU_Computing_SDK/C/common/lib/linux 和 /Your_location/NVIDIA_GPU_Computing_SDK/C/lib

 

        下面让CodeBlocks 能够认出CUDA的源代码文件:*.cu :

  • 在菜单上点击Project --> Project tree --> Edit file types & categories
  • 点击Add按钮
  • 输入类别名,如“CUDA sources”
  • 在下面的fire masks中输入: *.cu;

 

        Ok,现在当你将cu文件添加到项目中后,左边的项目文件关系树将出现新的文件夹“CUDA sources”,下面便有新加入的文件。

        接下来,还需要作一些小设定,使得cu源代码文件能够被编译器所编译链接:

  • 注意:只能对需要编译的.cu文件进行以下步骤,而那些被其他文件所include的头文件不需要做这些设定
  • 在左边项目文件关系树的.cu文件上点击右键,然后点击Propertiies
  • 在Build标签页中,选中Compile file 和 Link file

 

        最后,由于nvcc编译器的语法规则和GCC有一些细微差别,因此要按照下面步骤作一点小小的修正:

  • Settings -> Compiler and debugger
  • 在上方选择我们之前新建的NVIDIA NVCC CUDA Compiler
  • 点击下面标签栏旁边的向右箭头,直到滚动到Other settings
  • 点击下面的Advanced options按钮,在弹出的警告窗口中点击Yes
  • 在Commands标签页中选择Compile single file to object file,然后把Command line macro中的内容替换成:

    $compiler --compiler-options "$options" $includes -c $file -o $object

  • 在Output parsing标签页中选择Instantiated from info,然后把Regular expression中的内容替换成:

    ([][{}() #%$~A-Za-z0-9_:+//.-]+)[(:]([0-9]+)/)?:[ ]+([iI]nstantiated from .*)

  • 选择Compiler warning,然后把regular expression中的内容替换成:

    ([][{}() #%$~A-Za-z0-9_:+//.-]+)[(:]([0-9]+)/)?:[ ]([Ww]arning:[ ].*)

  • 选择Compiler error,然后把regular expression中的内容替换成:

    ([][{}() #%$~A-Za-z0-9_:+//.-]+)[(:]([0-9]+)/)?:[ ](.*)

 

        Ok,所有设置完成,现在便可以在CodeBlocks 中编写CUDA应用,然后直接按F9进行Build了。

        注意,SDK的例子中,很多需要链接cutil库,记得要在Project --> Build options里面的Link libraries中加入这个库,当然,也可以在gblobal compiler settings里面加入。

        正文结束。

 

        译注: CodeBlocks 是一个十分优秀的开源跨平台IDE,现在用户越来越多,经过上述配置,Linux环境下我们不用每次在command line中输入nvcc ........这样来编译项目,同时,也可以很方便的将CUDA引入原有项目中进行整合,编译。

        注意: 项目的Build Options中,一定要把编译器选择为新建的CUDA NVCC Compiler,否则将还是使用普通的C/C++编译器来编译项目。修改后,整个项目的所有代码将首先通过nvcc编译器,nvcc会作出判断该文件是C/C++文件还是cu文件,如果是C/C++代码文件,nvcc会自动将该文件转交给GCC处理,如果是cu文件,nvcc会按照nvcc编译规则,分离其中的host和device代码,然后进行编译。如果对nvcc编译过程的细则感兴趣,请参考NVIDIA的 《nvcc_版本号.pdf》,该文档在NVIDIA CUDA网站 有下载,也可以在安装的CUDA路径中的doc文件夹中找到。

        注意: 再次声明,以上配置过程仅对Linux环境中使用GCC编译器的情况有效,Windows中使用CodeBlocks作为IDE暂未成功配置,可以确定的是,目前的CUDA版本在Windows中必须使用Visual Studio2005或2008的ld编译器。

        如果在Linux环境下,使用上述配置方法不能成功生成CUDA项目,请检查GCC编译器以及CUDA Toolkit和CUDA SDK是否正确安装和配置。

你可能感兴趣的:(linux学习)