我正在尝试开发一个必须并行运行许多计算的 C++ 应用程序。这些算法将非常庞大,但它们将是纯数学的并且基于浮点整数。因此,他们应该使用 OpenCL 在 GPU 上工作。我希望该程序可以在不支持 OpenCL 的系统上运行,但我希望它也能够在支持的系统上使用 GPU 来提高速度。
我的问题是我不想维护两套代码(标准 C++ 可能使用 std::thread 和 OpenCL)。我确实意识到我将能够共享很多实际代码,但唯一明显的方法是在文件之间手动复制可共享部分,出于可维护性原因,我真的不想这样做,并且以防止错误。
我希望只能使用一组文件。有没有正确的方法来做到这一点? OpenCL 仿真在某种程度上是一种选择吗?
附言。我知道 AMD OpenCL 模拟器,但它似乎只用于开发,也只用于 Windows。还是我错了?
最佳答案
OpenCL 可以将 CPU 用作计算设备,因此 OpenCL 代码可以在没有 GPU 的平台上运行。但是,GPU 和 CPU 之间的架构差异很可能需要您仍然维护两个代码库,以便在两种情况下都获得最佳性能。
关于c++ - 在标准 C++ 和 OpenCL 之间共享多线程代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31919096/