OpenCL内核编程有通用的二进制中间表示吗?

OpenCL内核编程有通用的二进制中间表示吗?,opencl,llvm,llvm-ir,Opencl,Llvm,Llvm Ir,据我所知,OpenCL使用经过修改的C语言(通过添加一些关键字,如_global)作为定义内核函数的一般用途。现在我正在做一个前端内置F#语言,它有一个代码引用功能,可以进行元编程(你可以把它看作某种反射技术)。所以我想知道内核是否有一个通用的二进制中间表示,而不是C源文件 我知道CUDA支持二进制中间表示的LLVM IR,因此我们可以通过编程方式创建内核,我想用OpenCL做同样的事情。但是该文件说,没有指定二进制格式,每个实现都可以使用自己的二进制格式。那么,是否有任何通用IR可以通过程序生

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

我知道CUDA支持二进制中间表示的LLVM IR,因此我们可以通过编程方式创建内核,我想用OpenCL做同样的事情。但是该文件说,没有指定二进制格式,每个实现都可以使用自己的二进制格式。那么,是否有任何通用IR可以通过程序生成,也可以与NVIDIA、AMD、英特尔OpenCL实现一起运行


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