据我了解,OpenCL 使用修改后的 C 语言(通过添加一些关键字,如 __global)作为定义内核函数的通用目的。而现在我在做一个F#语言里面的前端,它有一个代码引用功能,可以做元编程(你可以认为它是某种反射技术)。所以我想知道内核是否有一个通用的二进制中间表示而不是C源文件。
我知道 CUDA 支持 LLVM IR 用于二进制中间表示,因此我们可以以编程方式创建内核,我想用 OpenCL 做同样的事情。但是文档说没有指定二进制格式,每个实现都可以使用自己的二进制格式。那么是否有任何通用IR可以由程序生成,也可以与NVIDIA、AMD、英特尔的OpenCL实现一起运行?
谢谢。