本篇介绍数据的合并访问和非合并访问。
线程束

在一个线程束(warp)中的线程执行指令的方式是SIMT,即单指令多线程,单指令表明线程束中的线程执行相同的指令,如果因为条件语句导致线程束内的线程选择了不同分支,就会出现线程束分化。
warp是并行执行的一个独立单位,warp内所有线程是在同一个时钟周期内执行指令的。
Bank Conflict
共享内存被划分为多个大小相等的bank,其组织方式如下所示。

当同一warp的不同线程访问同一bank的不同地址时,会产生bank conflict,此时这些线程会顺序执行,而失去了并行性。
对于不同warp,不存在bank conflict,假设有两个warp的线程同时访问同一个bank,那么他们会通过调度来决定先后,这个过程本身不属于bank conflict,而是调度问题。(在一个SM上,不同warp严格来说是并发执行的,而不是真正并行)
参考资料
https://face2ai.com/CUDA-F-3-2-理解线程束执行的本质-P1/
https://www.cnblogs.com/zhcnfyy/p/15184405.html
https://segmentfault.com/a/1190000007533157
