我可以将OpenCL代码编译成普通的,不含OpenCL的二进制文件吗?

时间:2012-01-09 08:47:30

标签: compilation inline opencl sse avx

我正在为我的目的评估OpenCL。在我看来,你不能认为它在Windows或Mac上开箱即用,因为:

  • Windows需要一个OpenCL驱动程序(当然可以安装)
  • MacOS仅在MacOS> = 10.6
  • 上支持OpenCL

所以我必须分别编写FPU / SSE / AVX代码和OpenCL来生成两个二进制文件:一个没有,一个支持OpenCL。

如果我可以将 compiletime 中的OpenCL编译成SSE / AVX,然后在其中发送没有 OpenCL的二进制,那会好得多。这样我就不需要为FPU / SSE / AVX单独实现了!

有办法吗?

干杯,   - 克莱门斯

1 个答案:

答案 0 :(得分:2)

实现此目的的一种方法是在开发计算机上安装Intel OpenCL SDK,并使用包含的OpenCL离线编译器工具为OpenCL内核生成汇编代码,并直接将汇编代码编译/链接到您的应用程序。但是,为了手动调用生成的汇编代码,找出正确的调用约定等可能是一些工作,然后你自己负责将你的工作分成多个线程。

因此,虽然这不是你一直要求的,但至少在Windows上,使用intelocl.dll及其依赖项(如果许可证允许的话,我还没有检查)可能更容易发送你的应用程序,动态加载从那里打开OpenCL函数入口点,动态地将OpenCL内核编译为Assembly,并使用OpenCL运行时执行它。