是否存在OpenCL内核编程的通用二进制中间表示?

时间:2013-05-10 08:21:02

标签: opencl llvm llvm-ir

据我所知,OpenCL使用修改后的C语言(通过添加一些关键字,如__global)作为定义内核函数的一般目的。现在我在F#语言中做了一个前端,它有一个代码报价功能,可以进行元编程(你可以把它看作某种反射技术)。所以我想知道是否存在内核的通用二进制中间表示而不是C源文件。

我知道CUDA支持LLVM IR用于二进制中间表示,因此我们可以以编程方式创建内核,并且我想用OpenCL做同样的事情。但是文档说没有指定二进制格式,每个实现都可以使用自己的二进制格式。那么有没有可以通过程序生成的通用IR,还可以运行NVIDIA,AMD,Intel的OpenCL实现吗?

Thansk。

1 个答案:

答案 0 :(得分:2)

不,还没有。 Khronos正致力于SPIR(该规范仍然是临时的),希望这将成为现实。据我所知,没有一个主要的实现支持它。除非你想让你的项目成功并且可能推迟你的项目一两年,否则你应该开始用C语言生成代码。