我試着用CUDA驅動程序API運行由.cl內核生成的PTX彙編代碼。我採取的步驟是,這些(標準的OpenCL程序):CUDA PTX代碼%envreg <32>特殊寄存器
1)負載.CL內核
2)JIT編譯
3)獲取編譯PTX代碼並保存它。
到目前爲止這麼好。
我注意到了一些特殊的寄存器,在ptx程序集中,%envreg3,%envreg6等等。問題是這些寄存器沒有設置(根據ptx_isa,這些寄存器在內核啓動前由驅動程序設置)與驅動程序API的代碼。所以代碼陷入了無限循環,並且無法正確運行。但是,如果我手動設置值(我確切地說,我用塊內部ptx替換%envreg6),代碼正在執行,並且我得到正確的結果(與cpu結果相比是正確的)。
有誰知道如何我們可以設置值這些寄存器,或者如果我失去了一些東西?即cuLaunchKernel上的一個標誌,它爲這些寄存器設置了值?
爲什麼要投票? – harrism