【发布时间】:2011-10-04 07:39:26
【问题描述】:
我对 GPU 如何执行同步有一些疑问。 据我所知,当一个经线遇到障碍时(假设它在 OpenCL 中),它知道同一组的其他经线还没有出现。所以它必须等待。但是,在等待期间,这个经线到底做了什么? 它仍然是一个活跃的经线吗?或者它会做某种空操作吗?
我注意到,当我们在内核中进行同步时,指令数量会增加。我想知道这个增量的来源是什么。同步是否分解为许多较小的 GPU 指令?还是因为空闲的 warp 执行了一些额外的指令?
最后,我非常想知道,与没有同步的情况相比,同步所增加的成本(比如说屏障(CLK_LOCAL_MEM_FENCE))是否受工作组(或线程块)中的扭曲数量的影响? 谢谢
【问题讨论】:
标签: cuda opencl gpu gpgpu nvidia