c++ - 在标准 C++ 和 OpenCL 之间共享多线程代码

标签 c++ multithreading parallel-processing opencl gpgpu

我正在尝试开发一个必须并行运行许多计算的 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/

相关文章:

c++ - 累积整数从 C++11 中的文件中读取数据

Java Thread.sleep 异常

c - 如何使用 OpenMP 制作生产者-消费者代码?

linux - 沙箱允许多个进程打开同一个端口

parallel-processing - 如何检查 OpenMPI 中使用了哪些 MCA 参数?

c++ - Rcpp: 'operator=' 矩阵和列表的模糊重载

c++ - 对象如何成为子对象?

c++ - 保证有效的字符串作为函数参数

java - 定时器内存泄漏

java - new Runnable() 但没有新线程?