2012-07-09 186 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