如果只从硬件的角度看,线程在执行了访存写入的指令(由编译器生成)后, 没有这3个函数(所生成的对应指令)的时候, 是会继续往下执行的, 并不等待访存完成。...如果只从硬件的角度看,线程在执行了访存写入的指令(由编译器生成)后,没有这3个函数(所生成的对应指令)的时候,是会继续往下执行的,并不等待访存完成,而有了这三个指令后, 线程则会暂停, 等待写入的过程完成到一定程度..., 在某个级别上的该指令的一个级别上是有时间错误的,然后编译器在对特定的该计算能力的卡, 生成特定级别的该暂停指令的时候,进行了patch操作....在目前版本的手册说明上, 它还同时具有之前地__threadfence_block的效果(例如硬件的访存写入生效性控制, 或者编译器类似在fence前后的语句顺序调整安排).因此在常见的情况下, block....主要因为这是并行的, 所以很多东西你需要考虑的, 特别说同时进行数据地生成和消费.所以这是为何推荐之前地2步版本的规约求和的原因.它通过2次顺序执行的kernel启动, 每次都不会同时消费本次生成的数据