opencl - 从GPU获取OpenCL程序代码

标签 opencl

我有一个使用 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/

相关文章:

c++ - 如果从二进制文件加载,OpenCL 会导致 CL_INVALID_COMMAND_QUEUE

parallel-processing - OpenCL:工作组概念

c++ - 为什么我会收到 CL_MEM_OBJECT_ALLOCATION_FAILURE?

assembly - 在设备上实现 OpenCL 需要采取哪些步骤?

c++ - 在 CPU 上使用 OpenCL 将一个数组复制到另一个数组比 C++ 代码慢得多

c++ - OpenCL 矩阵乘法速度

performance - OpenCL - OpenGL 互操作性能

c - xcode 和 bash 中 opencl 的某些意外行为?

c - 使用 GtkGLArea 的 OpenCL/OpenGL 互操作

multithreading - 使用了多少线程/工作项?