浅析CUDA编译流程与配置方法(2)
2010-01-04 10:57
281 查看
二、Nvcc启动与配置说明
1、nvcc的启动条件
在我们的工程文件编译选项的命令行下加入"C:/CUDA/bin/nvcc.exe",表示启动nvcc,要成功启动nvcc首先必须保证所需绑定的一般的C/C++编译器如VS下的cl,在编译器搜索路径范围内,一般默认目录下,如:
"C:/CUDA/bin/nvcc.exe" -ccbin "C:/Program Files/Microsoft Visual Studio 8/VC/bin",又或是,"$(CUDA_BIN_PATH)/nvcc.exe" -ccbin "$(VCInstallDir)bin"。
而Windows平台下编译选项--compiler-bindir是当编译器cl不在默认路径时用来重新设定路径,另外Windows平台下,nvcc 需要能定位到脚本vsvars.bat(这个脚本必须先于cl编译器执行,因为它将指定cl编译器正确运行所需的环境参数),也是通过--compiler-bindir 来重新指定。
CUDA提供了一个用于检查是否是启动nvcc编译的宏:__CUDACC__
2、nvcc的profile文件
在nvcc所在的目录里有一个Nvcc.profile,它定义了nvcc在CUDA中的目录结构,它对于nvcc使用者来说不像是作为一个配置文件,而是提供了指定CUDA Toolkit中的bin和lib等目录的参数变量如PATH, LD_LIBRARY_PATH等,打开这个文件可以看到如下的内容:
PATH += $(TOP)/extools/bin;$(TOP)/open64/bin;$(TOP)/bin;$(TOP)/lib;
INCLUDES += "-I$(TOP)/include" "-I$(TOP)/include/cudart" $(_SPACE_)
LIBRARIES =+ $(_SPACE_) "/LIBPATH:$(TOP)/lib" cudart.lib
CUDAFE_FLAGS +=
OPENCC_FLAGS +=
PTXAS_FLAGS +=
来简单介绍下里面的语法:
# 是注释符
name = <text> :赋值
name ?= <text> :条件赋值
name += <text> :首部增加
name =+ <text> :尾部增加
可通过以下任一种风格对所要赋值的环境变量字符串进行赋值:
%name% :DOS style
$(name) :‘make’ style
其中,nvcc定义了一个指定该profile文件所在目录的宏 _HERE_,它会根据nvcc的调用方式返回绝对或相对路径。
同样,nvcc使用宏 _SPACE_来代表空格字符,使用如下:
INCLUDES += -I../common $(_SPACE_)
去掉宏_SPACE_就会造成粘合效应,如 ‘–I../common-Iapps’ 。还可以看到profile文件中使用+=时$(_SPACE_)放在后面,而使用=+时则放在了前面,就是因为这个原因。
3、nvcc启动所需要使用的几个变量
在第一个部分,已经说明了Nvcc在进行编译时的主要工作流程,以下几个变量就是nvcc自身控制各个编译阶段所需要使用的相关变量。
(1)compiler-bindir
用于指定主机编译器所在的目录,可以使用编译选项--compiler-bindir进行修改。
(2)INCLUDES
这个字符串扩展nvcc的命令选项–Xcompiler,它也定义一些附加的include目录,在实际的编译选项语法范围内,如Linux下的gcc 语法或Windows下的cl 语法。
(3)LIBRARIES
这个字符串扩展nvcc的命令选项–Xlinker,它也定义一些附加的库文件和库文件目录,在实际的编译选项语法范围内,如Linux下的gcc 语法或Windows下的cl 语法。
(4)PTXAS_FLAGS
这个字符串扩展nvcc的命令选项–Xptxas,它主要是给CUDA内部工具ptxas传递一些命令。
(5)CUDAFE_FLAGS
这个字符串扩展nvcc的命令选项-Xcudafe,它主要是给CUDA内部工具cudafe传递一些命令。
(6)OPENCC_FLAGS
这个字符串扩展nvcc的命令选项–Xopencc,它主要是给CUDA内部工具nvopencc传递一些命令。
注意:CUDA提供的几个内部工具在C:/CUDA/bin目录下分别是ptxas,fatbin,cudafe,nvopencc(C:/CUDA/open64/bin)。另外在使用CUDA编程环境向导后可在VS2005中的项目-->属性-->CUDA-->backends中设置相关命令,如下图:
1、nvcc的启动条件
在我们的工程文件编译选项的命令行下加入"C:/CUDA/bin/nvcc.exe",表示启动nvcc,要成功启动nvcc首先必须保证所需绑定的一般的C/C++编译器如VS下的cl,在编译器搜索路径范围内,一般默认目录下,如:
"C:/CUDA/bin/nvcc.exe" -ccbin "C:/Program Files/Microsoft Visual Studio 8/VC/bin",又或是,"$(CUDA_BIN_PATH)/nvcc.exe" -ccbin "$(VCInstallDir)bin"。
而Windows平台下编译选项--compiler-bindir是当编译器cl不在默认路径时用来重新设定路径,另外Windows平台下,nvcc 需要能定位到脚本vsvars.bat(这个脚本必须先于cl编译器执行,因为它将指定cl编译器正确运行所需的环境参数),也是通过--compiler-bindir 来重新指定。
CUDA提供了一个用于检查是否是启动nvcc编译的宏:__CUDACC__
2、nvcc的profile文件
在nvcc所在的目录里有一个Nvcc.profile,它定义了nvcc在CUDA中的目录结构,它对于nvcc使用者来说不像是作为一个配置文件,而是提供了指定CUDA Toolkit中的bin和lib等目录的参数变量如PATH, LD_LIBRARY_PATH等,打开这个文件可以看到如下的内容:
PATH += $(TOP)/extools/bin;$(TOP)/open64/bin;$(TOP)/bin;$(TOP)/lib;
INCLUDES += "-I$(TOP)/include" "-I$(TOP)/include/cudart" $(_SPACE_)
LIBRARIES =+ $(_SPACE_) "/LIBPATH:$(TOP)/lib" cudart.lib
CUDAFE_FLAGS +=
OPENCC_FLAGS +=
PTXAS_FLAGS +=
来简单介绍下里面的语法:
# 是注释符
name = <text> :赋值
name ?= <text> :条件赋值
name += <text> :首部增加
name =+ <text> :尾部增加
可通过以下任一种风格对所要赋值的环境变量字符串进行赋值:
%name% :DOS style
$(name) :‘make’ style
其中,nvcc定义了一个指定该profile文件所在目录的宏 _HERE_,它会根据nvcc的调用方式返回绝对或相对路径。
同样,nvcc使用宏 _SPACE_来代表空格字符,使用如下:
INCLUDES += -I../common $(_SPACE_)
去掉宏_SPACE_就会造成粘合效应,如 ‘–I../common-Iapps’ 。还可以看到profile文件中使用+=时$(_SPACE_)放在后面,而使用=+时则放在了前面,就是因为这个原因。
3、nvcc启动所需要使用的几个变量
在第一个部分,已经说明了Nvcc在进行编译时的主要工作流程,以下几个变量就是nvcc自身控制各个编译阶段所需要使用的相关变量。
(1)compiler-bindir
用于指定主机编译器所在的目录,可以使用编译选项--compiler-bindir进行修改。
(2)INCLUDES
这个字符串扩展nvcc的命令选项–Xcompiler,它也定义一些附加的include目录,在实际的编译选项语法范围内,如Linux下的gcc 语法或Windows下的cl 语法。
(3)LIBRARIES
这个字符串扩展nvcc的命令选项–Xlinker,它也定义一些附加的库文件和库文件目录,在实际的编译选项语法范围内,如Linux下的gcc 语法或Windows下的cl 语法。
(4)PTXAS_FLAGS
这个字符串扩展nvcc的命令选项–Xptxas,它主要是给CUDA内部工具ptxas传递一些命令。
(5)CUDAFE_FLAGS
这个字符串扩展nvcc的命令选项-Xcudafe,它主要是给CUDA内部工具cudafe传递一些命令。
(6)OPENCC_FLAGS
这个字符串扩展nvcc的命令选项–Xopencc,它主要是给CUDA内部工具nvopencc传递一些命令。
注意:CUDA提供的几个内部工具在C:/CUDA/bin目录下分别是ptxas,fatbin,cudafe,nvopencc(C:/CUDA/open64/bin)。另外在使用CUDA编程环境向导后可在VS2005中的项目-->属性-->CUDA-->backends中设置相关命令,如下图:
![](http://p.blog.csdn.net/images/p_blog_csdn_net/shi06/EntryImages/20100104/未命名.jpg)
相关文章推荐
- 浅析CUDA编译流程与配置方法(3)
- 浅析CUDA编译流程与配置方法
- 浅析CUDA编译流程与配置方法(1)
- 浅析CUDA编译流程与配置方法
- CUDA开发的配置方法与编译流程简介
- CUDA开发的配置方法与编译流程简介
- 转自百度经验:editplus编译执行java的配置方法 确实不错
- [Webkit]QtWebkit开发环境配置及编译方法-Windows32bit
- EDKII Build Process:EDKII项目源码的配置、编译流程[3]
- Sublime Text 3中配置编译和运行Java的两个方法
- C程序访问hadoop出现的各种编译错误和运行时各种类DefFound异常的解决方法(makefile的书写和环境变量的配置)
- Amazon AWS上Caffe+GPU CUDA 8.0 +cuDNN 5.0 +OpenBLAS+pycaffe配置和lenet训练方法
- 给已经编译运行的Apache增加mod_proxy模块的配置方法
- 精简LINUX内核配置及快速编译的方法收集
- VS2013编译环境集成QT的配置方法
- 在Editplus中配置java的(带包)编译(javac)和执行(java)的方法
- 浅析配置更快的Eclipse方法
- Ubuntu 14.04 64位机上不带CUDA支持的Caffe配置编译操作过程
- MTK智能平台Modem的修改、编译及配置方法
- VC6.0下正确编译cybulk的配置,cyapi使用方法