NVRTC中--no-source-include编译选项的作用是什么?
NVRTC
--no-source-include 选项作用详解 - 常规CUDA编译器(nvcc)处理的是本地源文件路径,预处理器会自动把每个源文件所在的目录加入头文件搜索路径,方便直接引用同目录下的头文件。
- NVRTC的特殊之处在于,你传入的不是源文件路径,而是内存中的字符串形式源代码。此时官方文档里提到的“输入源的目录”是一个虚拟概念:NVRTC默认会给这个字符串源关联一个虚拟目录(比如你通过
nvrtcCreateProgram的name参数指定的文件名对应的目录,或是默认临时目录),并自动将其加入头文件包含路径。 --no-source-include的核心作用:禁用上述默认的虚拟目录自动添加行为,之后预处理器只会搜索你通过--include-path(或-I)显式指定的路径,完全不会自动添加任何与输入字符串源关联的目录。
举个实际场景:
如果你的字符串源代码里写了
#include "helper.h",没加--no-source-include时,NVRTC会去它默认关联的虚拟目录查找这个头文件;加了该选项后,只有你通过-I显式指定了包含helper.h的路径,预处理器才能找到这个头文件。
内容的提问来源于stack exchange,提问作者einpoklum
相关产品推荐
相关产品推荐

