在标准C ++和OpenCL

时间:2015-08-10 12:05:41

标签: c++ multithreading parallel-processing opencl gpgpu

我正在尝试开发一个C ++应用程序,它必须并行运行许多计算。算法将非常大,但它们将纯粹是数学和浮点整数。因此,他们应该使用OpenCL在GPU上工作。我希望该程序可以在不支持OpenCL的系统上运行,但我希望它能够在系统上使用GPU来提高速度。

我的问题是我不想维护两组代码(标准C ++可能使用std :: thread和OpenCL)。我确实意识到我将能够共享许多实际的代码,但唯一明显的方法是手动复制文件之间的可共享部分,这实际上不是我想要出于可维护性原因而做的事情。防止错误。

我希望只能使用一组文件。有没有正确的方法来做到这一点? OpenCL仿真在某种程度上是一种选择吗?

PS。我知道AMD OpenCL模拟器,但它似乎只适用于开发,也适用于Windows。或者我错了吗?

1 个答案:

答案 0 :(得分:1)

OpenCL可以将CPU用作计算设备,因此OpenCL代码可以在没有GPU的平台上运行。但是,GPU和CPU之间的体系结构差异很可能需要您仍然维护两个代码库以在这两种情况下获得最佳性能。