Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Compiler construction 是否可以为所有当前视频卡编译OpenCL代码?_Compiler Construction_Opencl_Gpu - Fatal编程技术网

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

Compiler construction 是否可以为所有当前视频卡编译OpenCL代码?,compiler-construction,opencl,gpu,Compiler Construction,Opencl,Gpu,我需要分发我的程序,它使用opencl代码而不使用opencl源代码。所以我需要把它编译成二进制,然后从二进制加载程序。这很简单,但每个视频卡都为自己编译不同的二进制文件。我怎样才能避免这种情况,并为不同的视频卡编译我的源代码,而不需要这些视频卡。也许存在一些编译器,在那里我可以设置spesific视频卡并为其获取二进制代码?谢谢 SPIR就是为此而设计的 至少AMD卡支持它。但是你现在不能一般地使用它 现在,如果你想把程序分发给消费者,除了把内核作为文本提供给你的程序之外,真的没有别的办法了。

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

SPIR就是为此而设计的

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

现在,如果你想把程序分发给消费者,除了把内核作为文本提供给你的程序之外,真的没有别的办法了。我不会太担心内核是否可见。如果没有OpenCLAPI调用和文档,它们将毫无用处。对一个人来说,对他们进行逆向工程要比从头开始做同样的事情花费更多的时间。它就像游戏中的OpenGL着色器,也是原始文本格式。

SPIR是解决方案

以下是解决方案

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

对二进制文件中的程序文本或字符串进行加密或散列处理也可以吗?它仍然需要以可解析的形式转到驱动程序。您所能做的最好的事情就是使用与Javascript类似的技术。