OpenCl工作组

OpenCl工作组,opencl,Opencl,例如,当我设置我的 工作组为5120,本地大小为1 工作组设置为2560,本地大小为2 工作组设置为640,本地大小为4 这会如何影响我的工作项数量和对资源的访问 您将拥有5120个线程。5120组。每组1个线程。每个组(1个线程)将占用一个处理器。您不能同步其中任何一个(在传统意义上) 您将拥有2560个线程。1280组。每组2个线程。每组(2个线程)将占用一个处理器。您可以同步这两个线程(在传统意义上) 您将拥有640个线程。160组。每组4个线程。每组(4个线程)将占用一个处理器。您可以同

例如,当我设置我的

  • 工作组为5120,本地大小为1
  • 工作组设置为2560,本地大小为2
  • 工作组设置为640,本地大小为4
  • 这会如何影响我的工作项数量和对资源的访问

  • 您将拥有
    5120个线程。5120组。每组1个线程
    。每个组(1个线程)将占用一个处理器。您不能同步其中任何一个(在传统意义上)
  • 您将拥有
    2560个线程。1280组。每组2个线程
    。每组(2个线程)将占用一个处理器。您可以同步这两个线程(在传统意义上)
  • 您将拥有
    640个线程。160组。每组4个线程
    。每组(4个线程)将占用一个处理器。您可以同步这四个线程(在传统意义上)
  • 在OpenCL中,您需要用线程总数来表示全局工作大小。底层的OpenCLAPI将查看全局工作大小,然后除以本地工作大小来计算线程安排

    现在(这是一个一般性的建议。在某些情况下,您可能需要这样做,但现在….)

  • 这是个糟糕的主意。清晰地一次给处理器一个线程是在浪费处理器的时间。虽然这可能不是CPU的世界末日,但却是现代GPU的末日。为什么?因为GPU上的每个处理器都有许多内核。一切准备就绪。在这种情况下,它们中只有一个起作用。另外,如果需要的话,你没有办法同步线程

  • 同样的事情

  • 同样的事情

  • 如果我没记错的话,NVIDIA建议一组至少32个线程以获得最佳性能