Linux环境下CUDA在CodeBlocks中的配置
译注:本文翻译自Ben的博客(点这里 )中的相应文章,文章标题并非作者原标题,在此译文中为了清楚表达文章意图而作修改。本文翻译原则为:忠于原文技术内容,非技术内容予以删减,并附加本人的理解以辅助。Warning: 非全文对照翻译。
正文:
本文将介绍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是否正确安装和配置。
译注:本文翻译自Ben的博客(点这里 )中的相应文章,文章标题并非作者原标题,在此译文中为了清楚表达文章意图而作修改。本文翻译原则为:忠于原文技术内容,非技术内容予以删减,并附加本人的理解以辅助。Warning: 非全文对照翻译。
正文:
本文将介绍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是否正确安装和配置。