【发布时间】:2014-03-28 14:50:51
【问题描述】:
我需要分发我的程序,它使用没有 opencl 源的 opencl 代码。所以我需要将它编译成二进制并从二进制加载程序。这很简单,但是每个视频卡都会为自己编译不同的二进制文件。我怎样才能避免这种情况,并为不同的视频卡编译我的源代码,而没有这个视频卡。也许存在一些编译器,我可以在哪里设置特定的视频卡并为其获取二进制代码?谢谢!
【问题讨论】:
标签: compiler-construction opencl gpu
我需要分发我的程序,它使用没有 opencl 源的 opencl 代码。所以我需要将它编译成二进制并从二进制加载程序。这很简单,但是每个视频卡都会为自己编译不同的二进制文件。我怎样才能避免这种情况,并为不同的视频卡编译我的源代码,而没有这个视频卡。也许存在一些编译器,我可以在哪里设置特定的视频卡并为其获取二进制代码?谢谢!
【问题讨论】:
标签: compiler-construction opencl gpu
SPIR 是为此设计的 http://www.khronos.org/registry/spir/
至少 AMD 卡支持它。但是你现在一般不能使用它。
现在,如果您想将内核普遍分发给消费者,除了将内核作为文本提供给您的程序之外,实际上没有其他方法。我不会太担心内核是否可见。如果没有 OpenCL API 调用和文档,它们就毫无用处。与从头开始做同样的事情相比,对它们进行逆向工程需要更多的时间。就像游戏中的 OpenGL 着色器一样,也是原始文本格式。
【讨论】:
SPIR 是解决方案,
只是为了解决以下问题
我认为二进制文件对于特定类型的视频卡是相同的。 您可以存储所有不同视频卡的二进制文件,并在运行时使用设备信息选择正确的二进制文件。
【讨论】: