CUDA或OpenCL内核的执行顺序 - 用于内存访问优化?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (27)

有没有关于内核执行顺序的提示?

比方说,我开始与8x8的工作组的网格的处理。我有1080个,每个128个核心共20个计算单元 - 总共2560个核心。

现在很明显,平均每个物理核心将平均处理网格中的约400个项目。问题统计上会是每个核心的执行顺序?它会是主要的行吗?列专业或每个核心将获得自己的“分区”工作?

这个问题很重要,以确保内存访问缓存友好。

提问于
用户回答回答于

比方说,我开始与8x8的工作组的网格的处理。我有1080个,每个128个核心共20个计算单元 - 总共2560个核心。

这实际上并不是一种可视化GPU的有效方法。你有20个计算单元。而已。“核心”实际上是一对(2 x 32)通道向量ALU单元,每个单元都有一个指令调度器和一个共享的L1缓存。

现在很明显,平均每个物理核心将平均处理网格中的约400个项目。

这并没有出于多种原因。如何分配工作取决于你编写的代码以及用于运行代码的执行参数。内核输入的大小与SM中的给定SM或“核心”执行的并行操作量之间没有内在联系。

问题统计上会是每个核心的执行顺序?

未定义。对于执行命令,CUDA不作任何暗示或其他保证。

它会是主要的行吗?专栏专业..?

仍未定义。

或者每个核心都会有自己的“分区”来工作?

由程序员来定义编程模型公开的逻辑线程/块编号方案如何映射到输入数据或存储器的特征。

这个问题很重要,以确保内存访问缓存友好。

GPU具有分层缓存设计,这意味着它在你想象的方式上并不重要。有很好的文档编程指导,以确保最大的内存吞吐量和缓存利用率。他们不受你的问题暗示的执行顺序的影响。

所属标签

可能回答问题的人

  • HKC

    红客学院 · 创始人 (已认证)

    27 粉丝7 提问5 回答
  • 西风

    renzha.net · 站长 (已认证)

    9 粉丝1 提问3 回答
  • 螃蟹居

    1 粉丝0 提问2 回答
  • 富有想象力的人

    2 粉丝0 提问1 回答

扫码关注云+社区

领取腾讯云代金券