我在 OpenMP、TBB 和 OpenCL 中实现了一些正常的循环应用程序。在所有这些应用程序中,当我只在 CPU 上运行 OpeCL 而没有在内核中进行特定优化时,OpeCL 的性能也比其他应用程序好得多。OpenMP 和 TBB 也提供了良好的性能,但远低于 OpenCL,这可能是什么原因,因为它们都是 CPU 专用框架,并且应该至少提供与 OpenMP/TBB 相等的性能。
我的第二个担忧是,当涉及到 OpenMP 和 TBB 时,OpenMP 在我的实现中总是比 TBB 性能更好,因为我不是那么专家,所以我没有调整它以获得非常好的优化。OpenMP 在性能上通常比 TBB 更好是有原因的吗?因为我认为他们都甚至 OpenCL 也在低级别使用相同类型的线程池......任何专家意见?谢谢