是否有关于内核执行顺序的提示?
让我说我开始处理1024x1024的网格,工作组为8x8。我拥有1080个带有20个计算单元,每个128个核心 - 总共2560个核心。
现在很明显,平均每个物理核心平均处理大约400个项目。质疑每个核心的执行顺序是什么?它会成为主要的吗?专业专栏或每个核心将获得自己的"分区"继续努力?
这个问题很重要,以确保内存访问是缓存友好的。
答案 0 :(得分:2)
假设我开始使用工作组处理1024x1024的网格 8×8。我有1080个计算单元,每个128个核心 - 总计2560个 芯
这不是真正可视化GPU的有效方法。你有20个计算单位。而已。 “核心”实际上是一对(2 x 32)通道矢量ALU单元,每个单元都有一个指令调度器和一个共享的L1缓存。
现在很明显,平均每个物理核心都会处理 平均约有400个项目。
由于多种原因,这并不适用。如何分配工作取决于您编写的代码以及用于运行代码的执行参数。内核输入的大小与SM中给定的SM或“核心”执行的并行操作量之间没有内在的关系。
质疑每个核心的统计执行顺序是什么?
未定义。 CUDA对执行顺序不做任何暗示或暗示的保证。
它会成为行专业吗?专栏专栏..?
仍未定义。
或者每个核心都有自己的“子区域”可供使用吗?
由程序员决定编程模型公开的逻辑线程/块编号方案如何映射到输入数据或内存的特征。
这个问题很重要,以确保内存访问是缓存友好的。
GPU具有分层缓存设计,这意味着它在您想象的方式中并不重要。有很好的文档编程指南可确保最大内存吞吐量和缓存利用率。它们不会以您的问题所暗示的方式受执行顺序的影响。