NV and AMD

来源:互联网 发布:linux挂载光驱命令 编辑:程序博客网 时间:2024/06/10 22:44
zz https://www.zhihu.com/question/35361192/answer/62410540?from=profile_answer_card 

要弄清楚这个问题需要充分理解现代 GPU 的架构。受限于篇幅,就不展开了。

从硬件调度的角度上来看:

1. Grid:GPU (GPC) 级别的基本调度单位。
2. Block (CTA):SM 级别的基本调度单位。
3. Warp:ALU 级别的基本调度单位。

从资源分配和通信的角度来看:

1. Grid:共享同样的 Kernel 和 Context。
2. Block (CTA):同一 CTA 的线程运行在同一个 SM,因此同一 CTA 中的不同线程可以通过 Shared Memory 通信,并共享 L1 cache(只读)。
3. Warp:32 宽度的 SIMD,占用同一块向量寄存器,线程间可以通过特殊指令交换寄存器中的数据。


一个 warp 对应一条指令流,等价于一个同时操作 32 个数据的 thread。所以出现 warp 的地方直接换成 thread 理解也没问题。

以 block 的形式组织 warp 是为了实现可扩展性。全局同步开销太大,但是如果让一个 block 中的 warp 通过 barrier 同步来通信开销就小得多,这样设计出来的程序性能才有可能随着 ALU 数量的增加线性增长。


作者:程亦超
链接:https://www.zhihu.com/question/35361192/answer/62415387
来源:知乎
著作权归作者所有,转载请联系作者获得授权。


0 0
原创粉丝点击