同一block中的thread开始于相同的指令地址, 理论上可按不同的分支执行,
实际上, 由于8个SP共用一套取指与发射单元,因此同一Warp中的线程执行的指令是相同的。
如果一个Warp中的线程分别跳转到不同的分支,
则SM就需要把每一个分支的指令发射到每一个SP上,
再由SP根据线程逻辑决定需不需要执行,执行的时间是各分支的总和,极大的损耗了性能。
因此尽量避免分支。
同一block中的thread开始于相同的指令地址, 理论上可按不同的分支执行,
实际上, 由于8个SP共用一套取指与发射单元,因此同一Warp中的线程执行的指令是相同的。
如果一个Warp中的线程分别跳转到不同的分支,
则SM就需要把每一个分支的指令发射到每一个SP上,
再由SP根据线程逻辑决定需不需要执行,执行的时间是各分支的总和,极大的损耗了性能。
因此尽量避免分支。