是否可以在GPU中运行一些纯C ++代码

时间:2016-12-28 19:53:58

标签: c++ opencl gpgpu arrayfire

我不太了解OpenCL,但我知道C / C ++ API要求程序员将OpenCL代码作为字符串提供。但最近我发现了 ArrayFire 库,它不需要字符串代码来调用某些计算。我想知道它是如何工作的(它是开源的,但代码有点令人困惑)。是否可以使用OpenCL后端编写并行,调用任何编译的(例如x86)代码,如下所示:

template <typename F>
void parallel_for(int starts, int ends, F task) //API
{ /*some OpenCL magic */ }
//...
parallel_for(0, 255, [&tab](int i){ tab[i] *= 0.7; } ); //using
PS:我知道我99%过于乐观了

1 个答案:

答案 0 :(得分:2)

您无法使用标准OpenCL从设备中调用C ++主机代码。 您可以使用SYCL,Khronos标准进行单源C ++编程。 SYCL允许直接将C ++编译为设备代码,而无需OpenCL字符串。您可以从SYCL内核中调用任何C ++函数(只要源代码可用)。 SYCL.tech有更多链接和更新信息。