根据我的理解,CUDA的PTX文件是由设备运行时编译的JIT虚拟字节码。这意味着该文件是跨平台的,您可以生成PTX文件,它将在任何兼容CUDA的设备上运行。但是,当我在文本编辑器中读取文件时,我看到这些指令“.file”,其中包含有关我为其编译的原始计算机上的文件的信息。所以我不确定这些指令的目的是什么。另外,鉴于我生成的PTX文件不应该依赖于这些文件,是否可以安全地删除它们? (就像我想开始编写自己的PTX生成器一样)。
答案 0 :(得分:6)
如果您检查功能的正文,您很可能会找到表格的说明
.loc fileNum fileLine
这表明,以下代码是从文件fileLine
中的行fileNum
生成的。 fileNum
是一个索引整数,用于命名您要求的.file
指令预先声明的文件。
这可以帮助您将源代码与生成的PTX输出相关联。
在JIT编译期间,PTX将转换为本机GPU机器代码。在那里,.loc
和.file
根本没有出现。它对最终的机器代码完全没有影响。