Wrap
为什么需要wrap
虽然GPU的Grid和Block的大小很大,可以拥有上万级别的线程,但因为硬件的限制,不是所有线程都是可以平行运行的。在运行thread的时候, thread会被捆绑到一起形成一个wrap。32个thread一个wrap。 同一个wrap里的introduction 是一样的,也就是他们运行的东西是一摸一样的,数据也相同。一个wrap里的线程只允许在同一个block里面运行。为了让程序的运行更加有效,需要让同一个wrap里的线程运行同样的代码。
If语句的效率影响
如果我们有if else的语句怎么办?
__global__ void code_with_divergence()
{
int idx = threadIdx.x;
if(idx%2==0)
{
// do A
}
else
{
// do B
}