为CPU设备使用OpenCL时调用外部函数

为CPU设备使用OpenCL时调用外部函数,opencl,llvm,Opencl,Llvm,我正在评估使用OpenCL为CPU设备实时编译性能关键数学表达式的可能性。我目前正在直接使用LLVM(或者更确切地说,我有一个有效的概念证明),但我会发现OpenCL提供的抽象在未来非常有用 我现在试图弄清楚,当使用OpenCL作为CPU设备时,是否有某种方法可以调用具有外部链接的函数,相当于LLVM中的以下内容: ... = llvm::Function::Create(..., llvm::Function::ExternalLinkage, "...", ...); 因为我的OpenCL

我正在评估使用OpenCL为CPU设备实时编译性能关键数学表达式的可能性。我目前正在直接使用LLVM(或者更确切地说,我有一个有效的概念证明),但我会发现OpenCL提供的抽象在未来非常有用

我现在试图弄清楚,当使用OpenCL作为CPU设备时,是否有某种方法可以调用具有外部链接的函数,相当于LLVM中的以下内容:

... = llvm::Function::Create(..., llvm::Function::ExternalLinkage, "...", ...);
因为我的OpenCL实现至少是建立在LLVM之上的,所以我希望这在某种程度上是可能的。

这个功能吗 完成你的目标


编辑:信用到期的地方:

不,那个链接不是我真正想要的。我的意思是从(CPU)内核内部调用具有外部链接的函数。然而,第二个链接非常有用。答案表明,如果不与内核进行类似“反向通信”的操作,这可能是不可能的。我将奖励您,因为您提供的两个链接基本上提供了我需要的所有信息。通过使用与内核的反向通信并结合使用ClenqueueEnableTivekernel,应该可以从OpenCL内核调用任何外部函数。