1

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

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

谢谢。

4

1 回答 1

2

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

于 2013-05-10T08:33:51.720 回答