SM:stream multiprocessors
warp:一个SM里有两个warp(线程束)
core:含有一个浮点数单元和一个逻辑运算单元。相当于一个线程,工作就是执行运算。
一个warp里有16个core,一组core由Warp Scheduler管理
Lock-step:锁步。一个warp里的所有core以锁步方式执行各自的指令
锁步的意思是全体线程的步调要一致,完成工作的线程要等待未完成工作的线程。
Be masked out:这种机制会有线程遇到了不激活执行的情况,会'被遮掩'掉
1.if语句的判断结果在warp中的不同线程间造成了不一致性:当某一线程遇到if(true)但自己的数据是false时,由于锁步,它不可以执行else语句,因此只能在原地空等着,被遮住
2.for循环的迭代次数不统一:可能是终止条件不同,也可能是提前break跳出循环。总之,先迭代完的线程需要等待未结束循环的线程,等待的线程此时被遮掩
被遮掩的线程越少,GPU并行计算的能力自然也就越高!