对于OpenCL内核编程是否有一个通用的二进制中间表示?



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

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

Thansk .

不,还没有。Khronos正在开发SPIR(规范仍然是临时的),希望能变成这样。据我所知,目前还没有一个主要的实现支持它。除非你想把你的项目押在它的成功上,并可能把你的项目推迟一两年,否则你可能应该从用C方言生成代码开始。

最新更新