2012-07-09 183 views
1

我想攔截NVIDIA GPU上的opencl程序的PTX級別。在NVIDIA GPU上編譯ptx代碼?

我想象例程可能看起來像這樣。首先,我編寫一個opencl程序(主機和設備代碼),使用NVIDIA編譯器生成相應的ptx代碼。然後,我通過修改PTX代碼來編寫我想要做的事情(請不要問我爲什麼不在設備C代碼上這麼做 - 我有一些原因)。但問題是,在修改後,如何將這個PTX代碼編譯爲二進制代碼?

+0

使用CUDA工具鏈和CUDA驅動程序API。我不相信有一種方法可以用OpenCL處理彙編代碼或內聯彙編指令。 – talonmies 2012-07-09 07:02:38

+0

這適用於CUDA http://wili.cc/blog/ptx.html。可能也適用於OpenCL – nouveau 2012-07-31 10:34:53

回答

1

您可以使用包含在CUDA工具包中的ptxas。它將.ptx編譯爲.cubin,然後可以使用驅動程序API加載該文件。

+0

它可以與OpenCL一起使用嗎? – Zk1001 2012-07-24 08:35:59

+0

我不認爲有辦法將PTX重新注入OpenCL。您可以使用CUDA驅動程序API和cuModuleLoadData。如果你真的需要做低級別的PTX操作,我建議你只使用CUDA(也可能是[CUDA編譯器SDK(libNVVM)](http://developer.nvidia.com/cuda/cuda-llvm-compiler) 。 – harrism 2012-09-12 01:29:13