我需要分发我的程序,该程序使用opencl代码而不使用opencl源代码。所以我需要将其编译为二进制文件并从二进制文件加载程序。这很简单,但每个视频卡都为自己编译不同的二进制文件。我怎样才能避免这种情况,并为不同的视频卡编译我的源代码,使用此视频卡完成。也许存在一些编译器,我可以设置特定的视频卡并为其获取二进制代码?谢谢!
答案 0 :(得分:4)
SPIR专为此http://www.khronos.org/registry/spir/
而设计至少AMD卡支持它。但是你现在不能使用它。
现在除了将内核作为文本提供给您的程序之外,如果您想将其一般地分发给消费者,那么除此之外别无他法。我不会太担心内核是可见的。没有OpenCL API调用和文档,它们就没用了。有人对它们进行逆向工程比从头开始做同样的事情需要更多的时间。它就像游戏中的OpenGL着色器一样,也是原始文本格式。
答案 1 :(得分:0)
SPIR是解决方案,
仅针对以下方面的解决方案
我认为特定类型的视频卡的二进制文件是相同的。 您可以存储所有不同视频卡的二进制文件,并在运行时使用设备信息选择适当的二进制文件。