2011-11-25 91 views
1

據我所知,CUDA的PTX文件是由設備運行時編譯的JIT的虛擬字節碼。這意味着該文件是跨平臺的,您可以生成PTX文件,並且可以在任何CUDA兼容設備上運行。但是,當我在文本編輯器中讀取文件時,我看到這些指令「.file」,它們具有關於我編譯它的原始計算機上的文件的信息。所以我不確定這些指令的目的是什麼。另外,考慮到我生成的PTX文件不應該依賴這些文件,可以安全地刪除它們嗎? (就像如果我想開始寫我自己的PTX發電機)。在CUDA的PTX文件中,「.file」指令的用途是什麼?

+3

根據PTX規範,這些是調試指令。他們確實可以安全地移除AFAIK。我不是100%肯定,也不是100%確切的用途(雖然我能想象),所以只是一個評論。會對答案感興趣。 – Bart

回答

5

如果你檢查你的函數體,你很可能會發現形式

指令

.loc fileNum fileLine

這表明,這是從線fileLine從文件fileNum生成下面的代碼。 fileNum是一個索引整數,用於命名由您要求的.file指令預先聲明的文件。

這可以幫助您將您的源代碼與生成的PTX輸出關聯起來。

在JIT編譯期間,PTX被轉換爲本機GPU機器代碼。在那裏,那些.loc.file根本不出現。它對最終的機器代碼絕對沒有影響。

+0

謝謝,那就是我一直在尋找的。作爲補充,我注意到有一個.loc的第三個參數,它似乎總是爲零。這有什麼特別的意義嗎? – bmillare