我有关于GPU执行同步的一些问题。
据我所知,在一个warp遇到屏障时(假设它在OpenCL中),并且它知道同一组的其他warp还没有到达那里。因此,它必须等待。但在等待期间,这个warp具体会做什么呢?
它仍然是一个活动的warp吗?还是会执行某种无操作?
我注意到,在内核中进行同步时,指令数量会增加。我想知道这种增量的来源是什么。同步是否被分解成许多更小的GPU指令?或者是因为空闲的warp执行了一些额外的指令?
最后,我非常想知道与没有同步(比如barrier(CLK_LOCAL_MEM_FENCE))相比,同步所增加的成本是否受工作组(或线程块)中warp数量的影响? 谢谢。
我注意到,在内核中进行同步时,指令数量会增加。我想知道这种增量的来源是什么。同步是否被分解成许多更小的GPU指令?或者是因为空闲的warp执行了一些额外的指令?
最后,我非常想知道与没有同步(比如barrier(CLK_LOCAL_MEM_FENCE))相比,同步所增加的成本是否受工作组(或线程块)中warp数量的影响? 谢谢。