是否可以为所有当前的视频卡编译OpenCL代码?

时间:2014-03-24 08:25:25

标签: compiler-construction opencl gpu

我需要分发我的程序,该程序使用opencl代码而不使用opencl源代码。所以我需要将其编译为二进制文件并从二进制文件加载程序。这很简单,但每个视频卡都为自己编译不同的二进制文件。我怎样才能避免这种情况,并为不同的视频卡编译我的源代码,使用此视频卡完成。也许存在一些编译器,我可以设置特定的视频卡并为其获取二进制代码?谢谢!

2 个答案:

答案 0 :(得分:4)

SPIR专为此http://www.khronos.org/registry/spir/

而设计

至少AMD卡支持它。但是你现在不能使用它。

现在除了将内核作为文本提供给您的程序之外,如果您想将其一般地分发给消费者,那么除此之外别无他法。我不会太担心内核是可见的。没有OpenCL API调用和文档,它们就没用了。有人对它们进行逆向工程比从头开始做同样的事情需要更多的时间。它就像游戏中的OpenGL着色器一样,也是原始文本格式。

答案 1 :(得分:0)

SPIR是解决方案,

仅针对以下方面的解决方案

我认为特定类型的视频卡的二进制文件是相同的。 您可以存储所有不同视频卡的二进制文件,并在运行时使用设备信息选择适当的二进制文件。