在CUDA';s的PTX文件,该文件的用途是什么;。文件";指令?

在CUDA';s的PTX文件,该文件的用途是什么;。文件";指令?,cuda,Cuda,据我所知,CUDA的PTX文件是由设备运行时JIT编译的虚拟字节码。这意味着该文件是跨平台的,您可以生成PTX文件,它将在任何CUDA兼容设备上运行。但是,当我在文本编辑器中读取文件时,我会看到这些指令“.file”,其中包含有关我编译它的原始计算机上的文件的信息。因此,我不确定这些指令的目的是什么。另外,考虑到我生成的PTX文件不应该依赖于这些文件,可以安全地删除这些文件吗?(比如,如果我想开始编写自己的PTX生成器)。如果您检查函数体,您很可能会找到表单说明 .loc fileNum fil

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

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

.loc fileNum fileLine

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

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


在JIT编译期间,PTX被转换为本机GPU机器代码。在那里,那些
.loc
.file
根本不会出现。它绝对不会影响最终的机器代码。

如果您检查函数体,您很可能会找到形式说明

.loc fileNum fileLine

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

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


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

根据PTX规范,这些是调试指令。它们确实可以被安全地一下子移除。我不是100%确定,也不知道它们的确切用途(尽管我可以想象),所以请发表评论。可能对答案感兴趣。根据PTX规范,这些是调试指令。它们确实可以被安全地一下子移除。我不是100%确定,也不知道它们的确切用途(尽管我可以想象),所以请发表评论。我想知道答案。谢谢,这就是我想要的。作为一个附加组件,我注意到.loc有第三个参数,它似乎总是零。这有什么特别的意义吗?谢谢,这就是我要找的。作为一个附加组件,我注意到.loc有第三个参数,它似乎总是零。这有什么特别的意义吗?