在CUDA的PTX文件中,".file"指令的目的是什么?

bmi*_*are 1 cuda

据我所知,CUDA的PTX文件是由设备运行时编译的JIT虚拟字节码.这意味着该文件是跨平台的,您可以生成PTX文件,它将在任何兼容CUDA的设备上运行.但是,当我在文本编辑器中读取文件时,我看到这些指令".file",其中包含有关我为其编译的原始计算机上的文件的信息.所以我不确定这些指令的目的是什么.另外,鉴于我生成的PTX文件不应该依赖于这些文件,是否可以安全地删除它们?(就像我想开始编写自己的PTX发生器一样).

Cyg*_*sX1 6

如果您检查函数的主体,您很可能会找到表单的说明

.loc fileNum fileLine

这表明以下代码是fileLine从文件中的一行生成的fileNum.这fileNum是一个索引整数,用于命名由.file您询问的指令预先声明的文件.

这可以帮助您将源代码与生成的PTX输出相关联.

在JIT编译期间,PTX被转换为本机GPU机器代码.在那里,那些.loc.file没有出现.它对最终的机器代码完全没有影响.