nvcc编译器之编译选项(chapter 4)
admin
2024-02-06 06:38:36
0

目录

4. NVCC编译选项

4.1 命令选项类型和符号

4.2 命令选项描述


4. NVCC编译选项

4.1 命令选项类型和符号

每个nvcc选项都有一个长名称和一个短名称,它们之间可以相互替换。这两种选项的区别在于选项名称前面连字符(-号)的数目。长名称前面必须有两个连字符(--),而短名称前面必须有一个连字符(-)。例如,-I是--include-path的简写。长选项用于构建脚本,因为选项的长度不如选项名提供的描述性语义的清晰性重要。相比之下,短选项是为了交互使用。

NVCC可以识别三种类型的命令选项:布尔选项、单值选项和列表选项

布尔选项没有参数,它们可以在命令行上指定,也可以不在命令行上指定;
单值选项最多只能指定一次;
列表选项可以重复;
如下示例这三类选项:
--verbose(切换到详细信息模式);
--output-file(指定输出文件);
--include-path(指定包含路径);

单值选项和列表选项必须有参数,参数必须在选项本身的名称后面,加上多个空格或等号字符。当使用- I、-l和-L等短选项名称时,选项的值也可以紧接在选项本身后面,而不用空格或等号分隔。列表选项的各个值可以在选项的单个实例中用逗号分隔,或者选项可以重复,或者这两种情况的任意组合。

如下示例:

-o file-o=file-Idir1,dir2 -I=dir3 -I dir4,dir5

本文档中使用长选项描述,除非另有指定。但是,可以使用短选项代替长选项,以达到相同的效果。

4.2 命令选项描述

4.2.1 File和Path规范

  • --output-file file(-o): 指定输出文件的名称和位置
  • --pre-include file, ...(-include): 指定预处理中必须提前包含的头文件
  • --library library,...(-l): 指定要在链接阶段使用的库(不包含库文件的扩展名),库文件从--library-path指定的路径中搜索。
  • --define-macro def,...(-D): 定于预处理阶段会使用到的宏。

def格式有两种:

  • name : 提前定义‘name’作为一个宏
  • name=definition:definition的内容被token化,并进行预处理。类似使用#define指令定义后在编译器翻译的阶段三的处理过程。definition将会被植入换行符截断
  • --undefine-macro def,...(-U): 在预处理或编译阶段,undefine一个已经存在宏
  • --include-path path,...(-I): 指定include的查找路径
  • --system-include path,...(-isystem): 指定系统include的查找路径
  • --library-path path,...(-L)
  • --output-directory directory(-odir)
  • --dependency-output file(-MF)
  • --compiler-binder directory(-ccbin)
  • --allow-unsupported-compiler(-allow-unsupported-compiler)
  • --archiver-binary executable(-arbin)
  • --cudart{none|shared|static} (-cudart)
  • --cudadevrt{none|static} (-cudadevrt)
  • --libdevice-directory directory(-ldir)
  • --target-directory string(-target-dir)

4.2.2 指定编译阶段的相关选项

指定输入文件必须编译到哪个阶段。

  • --link(-link): 指定默认行为,编译并链接所有文件。默认输出a.exe(windows平台)或a.out(其它平台)。
  • --lib(-lib): 编译所有的输入文件到目标文件(.o),并将结果添加到指定的库输出文件中。默认输出a.lib(windows平台)或a.a(其它unix平台)。
  • --device-link(-dlink): 将可重定位设备代码的目标文件和.ptx,.cubin以及.fatbin文件链接到具有可执行设备端代码的目标文件中(生成设备可执行代码),该目标文件可以继续由主机链接器进行链接。生成a_dlink.obj(windows平台)或a_dlink.o(其它Unix平台),当该选项和--fatbin 联合使用时,生成a_dlink.fatbin;当该选项和--cubin 联合使用时,生成a_dlink.cubin。
  • --device-c(-dc): 编译每个.c,.cc,.cpp,.cxx和.cu输入文件为可重定位的设备目标文件中。等同于使用--relocatable-device-code=true --compile 。默认每个文件生成*.obj(在windows平台)或.o(类Unix平台)。
  • --device-w(-dw): 编译每个.c,.cc,.cpp,.cxx和.cu输入文件为可重执行设备端代码的目标文件中。等同于使用--relocateable-device-code=false --compile 。默认生成*.obj(windows平台)或.o(类Unix平台)。
  • --cuda(-cuda): 编译每个.cu文件为.cu.cpp.ii文件。
  • --compile(-c):编译每个.c,.cc,.cpp,.cxx和.cu文件为一个目标文件。生成.obj文件(windows平台)或.o(类Unix平台)文件。
  • --fatbin(-fatbin):编译所有.cu,.ptx和.cubin输入文件为设备端的.fatbin文件。该选项使得nvcc丢弃所有.cu输入文件中的主机侧代码。
  • --cubin(-cubin):编译所有的.cu和.ptx输入文件到设备端的.cubin文件。该选项使得nvcc丢弃所有.cu输入文件中的主机侧代码。
  • --ptx(-ptx):编译所有.cu文件到一个设备端的.ptx文件。该选项使得nvcc丢弃所有.cu文件中的主机侧代码。
  • --preprocess(-E):预处理所有的.c,.cc,.cpp,.cxx和.cu输入文件。默认输出到stdout。
  • --generate-dependencies(-M):生成一个可包含在.c、.cc、.cpp、.cxx和.cu输入文件的Makefile中的依赖文件。默认输出到stdout。
  • --generate-nonsystem-dependencies(-MM):与--generate-dependencies(-M) 一样,但忽略在系统目录找到的头文件。
  • --generate-dependencies-with-compile(-MD):生成依赖文件,并编译输入文件。依赖文件可以在Makefile中包含,并被.c,.cc,.cpp,.cxx和.cu文件包含。
  • --generate-nonsystem-dependencies-with-compile(-MMD): 与--generate-dependencies-with-compile(-MD) 一样,但忽略在系统目录找到的头文件。
  • --run(-run):编译并链接所有输入的文件为可执行文件,并运行。当输入文件就是可执行文件时,不编译或链接,直接运行。

4.2.3 指定编译器/链接器行为的选项

4.2.4 传递特定阶段选项的选项

4.2.5 影响编译器驱动的选项

4.2.6 指导cuda编译的选项

4.2.7 指导GPU代码生成的选项

4.2.8 通用工具选项

4.2.9 编译阶段控制选项

关于作者:

犇叔,浙江大学计算机科学与技术专业,研究生毕业,而立有余。先后在华为、阿里巴巴和字节跳动,从事技术研发工作,资深研发专家。主要研究领域包括虚拟化、分布式技术和存储系统(包括CPU与计算、GPU异构计算、分布式块存储、分布式数据库等领域)、高性能RDMA网络协议和数据中心应用、Linux内核等方向。

专业方向爱好:数学、科学技术应用

关注犇叔,期望为您带来更多科研领域的知识和产业应用。

内容坚持原创,坚持干货有料。坚持长期创作,关注犇叔不迷路

相关内容

热门资讯

我大话2想玩男人 现在已经两世... 我大话2想玩男人 现在已经两世男魔了 我是平民 接下来怎么转 怎么玩?主要想玩混男人嗯两世男魔转男人...
爱(艾)滋病在空气中生存时间 爱(艾)滋病在空气中生存时间放心吧,爱(艾)滋病在空气中是不能生存的
放羊的星星中所有的歌曲叫什么名... 放羊的星星中所有的歌曲叫什么名字01极速爱情-李雅微02对望-林志颖03paradise-李雅微04...
MAS曳步舞 是什么意思? MAS曳步舞 是什么意思?是一种风格,巴西风格的马来西亚风格
死神是神还是鬼脑筋急转弯 死神是神还是鬼脑筋急转弯鬼。死神是地狱的使者,说他是鬼不恰当,说他是神又没到那境界,但是说白了他就是...
科学练习册(牛津上海版)七年级... 科学练习册(牛津上海版)七年级上第九章电力与电信答案跪求啊~~17~36 D B A C C D C...
加刘三姐对歌歌词 加刘三姐对歌歌词 “男方:什么水面打跟斗呢,什么水面起高楼呢,什么水面撑阳伞,什么水面共白头?刘三姐...
怒与什么什么的成语 怒与什么什么的成语 怒开头的成语:怒不可遏、怒火中烧、怒气冲冲、怒形于色、怒气冲天、怒火冲天、怒...
女孩,姓王,阳历2008年3月... 女孩,姓王,阳历2008年3月7日,出生时间:下午16:52分, 请高人按生辰八字起名!急 急八字:...
NO是表示没有吗? NO是表示没有吗?表示否定的意思,没有,不是,无等等。
有没有盗墓的爱情小说 最好是悲... 有没有盗墓的爱情小说 最好是悲伤的 男主很冷的那种《我不是粽子,是个杯具》言情男主有点像小哥,呆呆冷...
《基础教育研究》和《教育探索》... 《基础教育研究》和《教育探索》这两本杂志哪个好一些?这要看你需要什么了。一个是侧重基础教育应用性。一...
店铺歇业语怎么写 店铺歇业语怎么写快回家过年了…小吃店歇业了…怎么写歇业语新年将至,正味餐饮谨此向大家致以新春的问候,...
不倾城不倾国是什么意思? 不倾城不倾国是什么意思?倾国倾城说的是女人长得好看;不倾国不倾城就是说长得不好看!意思就是长的不好看...
忏悔文全文 忏悔文全文往昔所造诸恶业皆由无始贪嗔痴从身语意之所生一切我今皆忏悔我今悉以清净三业,遍于法界极微尘刹...
海文考研的专业课怎么样啊? 海文考研的专业课怎么样啊?请问有人上过海文专业课的辅导班吗?我实在找不到专业课资料,而专业课辅导班又...
中国北方人的平均身高是多少,南... 中国北方人的平均身高是多少,南方人的平均身高是多少在北方,多高的男生或者女生才算是高大,在南方,多高...
找一个很多年前玩过的魔兽RPG... 找一个很多年前玩过的魔兽RPG图你那个 版本太老了, 玩都玩腻味了, 推荐你玩玩 , 仙邪之战,...
谁知道方婷创立伊指爱的故事? 谁知道方婷创立伊指爱的故事?你好 听说过这个故事 自己也没真正了解过 听起来挺伤感的 下次有机会也去...
随便求几个成语加解释 随便求几个成语加解释最好是我没见过得,谁都知道的就不要了,词语也行簪缨世族 [zān yīng...