如果我的内核在opencl中运行的线程如何计算最大数量

时间:2015-02-17 13:21:17

标签: multithreading opencl

当我从OpenCL设备读取设备信息时,如何计算其处理能力有多好?

要添加更多信息,假设我想对图像的像素执行一个非常简单的任务,据我所知(可能不对!)当我在GPU上运行内核时,opencl运行它与GPU中的不同处理单元并行,我可以将内核视为并行运行的线程主体。

如果这是正确的,那么对于我的简单任务,我需要找到具有更多处理单元的设备,以便我的内核在它们上运行,因此更快完成。我错了吗?

如何根据处理能力找到合适的设备?

1 个答案:

答案 0 :(得分:1)

计算OpenCL设备中的处理器数量不足以了解它的性能,原因有很多:

  1. 不同的处理器可能具有非常不同的频率(以MHz / GHz为单位)

  2. 不同的处理器可以具有非常不同的架构,例如在硬件中实现的无序,多标量函数

  3. 不同的OpenCL设备可以使用不同类型的内存,这在很大程度上会影响整体性能

  4. OpenCL设备可以与主CPU,分立外设板或网络集成。延迟以及同步或复制内存的需求将影响性能。

  5. 不同的算法支持不同的体系结构,因此对于一种算法,一种设备可能比另一种设备更快,但对于不同的算法可能不同。

  6. 我不建议使用处理器数量作为衡量效果的指标。最好的方法是使用特定算法进行基准测试。