我有一个使用 OpenCL 做数学计算的程序,我如何获得 opencl 的源代码,当这个程序进行计算时,它在我的 GPU 上执行?
最佳答案
最直接的方法是在应用程序中查找内核字符串。有时您只能在某个 .cl 文件中找到其源代码,否则您可以尝试使用类似 strings 的内容扫描应用程序的二进制文件。 。如果应用程序没有故意混淆内核源代码,您可能会使用其中一种方法找到它。
更可靠的方法是捕获提供给 OpenCL API 的字符串。您甚至可以提供自己的 OpenCL 实现,仅打印出相关 cl 函数中的内核字符串。实际上很简单:从 pocl 开始并更改the implementation of clCreateProgramWithSource打印出输入字符串 - 这是一个简单的代码更改。
然后,您可以将该修改版本安装为 OpenCL 实现,并确保应用程序使用它。如果应用程序需要某些 OpenCL 功能,这可能会很棘手,但您的实现当然可能会欺骗这些功能。
请注意,将来,SPIR可以使这种事情变得不可能 - 您将能够获得内核的 IR,但不能获得其源代码。
关于opencl - 从GPU获取OpenCL程序代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22154757/