首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >CUDA或OpenCL内核中的执行顺序-用于内存访问优化

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

Stack Overflow用户
提问于 2018-05-31 13:58:02
回答 1查看 138关注 0票数 0

关于内核的执行顺序有什么提示吗?

假设我开始处理1024x1024的网格,工作组为8x8。我有1080个计算单元,每个计算单元128个核心-总共2560个核心。

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

为了确保内存访问是高速缓存友好的,这个问题很重要。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-01 01:55:08

假设我开始处理1024x1024的网格,工作组为8x8。我有1080个计算单元,每个计算单元128个核心-总共2560个核心。

这不是一种有效的可视化GPU的方法。您有20个计算单元。就这样。“核心”实际上是一对(2x32)通道矢量算术逻辑单元,每个单元都有一个指令调度器和一个共享的L1缓存。

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

这并不符合以下几个原因。如何分配工作取决于您编写的代码和用来运行代码的执行参数。在核的输入大小和给定SM或SM中的“核心”将执行的并行操作量之间没有内在关系。

问,从统计上讲,每个核心的执行顺序是什么?

未定义。CUDA对执行顺序不做任何保证,无论是暗示还是其他。

会是row major吗?纵队专业..?

仍然没有定义。

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

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

为了确保内存访问是高速缓存友好的,这个问题很重要。

GPU有一个分层的缓存设计,这意味着它实际上并不像你想象的那样重要。对于确保最大的内存吞吐量和缓存利用率,有详细的编程指导原则。它们不会像你的问题所暗示的那样受到执行顺序的影响。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50617580

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档