- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这个问题源于在内核中观察到的理论占用率和实现占用率之间的差异。我知道 different occupancy between calculator and nvprof以及 A question about the details about the distribution from blocks to SMs in CUDA .
让我们考虑一个具有计算能力 = 6.1 和 15 个 SM(GTX TITAN、Pascal 架构、芯片组 GP104)的 GPU。让我们考虑一个 2304 个元素的小问题。
如果我们将内核配置为 512 个线程,那么每个线程将处理一个元素,我们需要 5 个块来处理所有数据。并且内核非常小,因此在使用资源方面没有任何限制,无论是寄存器还是共享内存。
因此,理论上的占用率为 1,因为可以在一个 SM(2048 个线程)中分配四个并发块,从而导致 2048/32 = 64 个事件扭曲(最大值)。
然而,达到的占用率(由 nvidia profiler 报告)为 ~0.215,这可能与块映射到 SM 的方式有关。那么,当块的数量少于可用的 SM 时,如何将它们调度到 CUDA 中的 SM 中?
选项 1.- 将 4 个 512 个线程块调度到一个 SM 中,将 1 个 512 个线程块调度到另一个 SM 中。在这种情况下,入住率将为 (1 + 0.125)/2 = 0.56。我假设最后一个块只有 512 个线程中的 256 个处于事件状态以到达数组的最后 256 个元素,并且它在第二个 SM 中分配。因此,考虑到扭曲粒度,只有 8 个扭曲是事件的。
选项 2.- 将每个 512 块调度到不同的 SM。既然我们有 15 个 SM,为什么只用一个有许多块的 SM 来饱和?在这种情况下,每个 SM 有 512/32 = 16 个事件扭曲(除了最后一个,它只有 256 个事件线程)。因此,我们在四个 SM 中实现了 0.25 的入住率,在最后一个中实现了 0.125,导致 (0.25 + 0.25 + 0.25 + 0.25 + 0.125)/5 = 0.225。
选项 2 更接近视觉分析器报告的占用率,我们认为这是幕后发生的事情。无论如何,值得一问:当它们的数量少于可用的 SM 时,如何将块调度到 CUDA 中的 SM?有记录吗?
——
请注意,这不是家庭作业。这是使用不同第三方库的项目中的真实场景,这些库在由多个内核组成的管道的某些步骤中处理少量元素。
最佳答案
正如几年来针对这个问题发表的评论中所指出的,块调度程序的行为是未定义的,并且不能保证从硬件代到硬件代、从驱动程序/运行时版本到驱动程序/运行时版本,甚至是相同的平台到平台。
当然可以使用汇编器指令检测代码以提取时钟和 SM ID 并运行一些案例以查看设备上发生的情况。正如 Greg Smith 在评论中指出的那样,您可能会得出这样的结论:调度程序首先以广度工作,将 SM 填充到最大可用占用率,但不一定总是这样。最终,您尝试并利用您的发现构建的任何启发式方法都将依赖于未定义的行为。
[从评论中收集并添加为社区维基条目,以将问题从 CUDA 标签的未答复队列中删除]
关于cuda - 当 block 的数量少于可用的 SM 时,如何将它们调度到 CUDA 中的 SM 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43632483/
我需要澄清一下 AT 命令 AT+CPMS="SM","SM","MT" 尽管此 AT 命令适用于大多数 UE,但它会为诺基亚 N72 提供错误消息... 我试过 AT 命令 AT+CPMS=? &
我使用 hidden-sm 在平板电脑模式下隐藏我的 col-sm-5。 如何让 col-sm-4 在隐藏时重新获得 col-sm-5
我有一个问题来自 IBM's Nested Relational Database White Paper 的第 16 页,我很困惑为什么在下面的 CREATE 命令中他们使用 MV/MS/MS 而不
这个问题源于在内核中观察到的理论占用率和实现占用率之间的差异。我知道 different occupancy between calculator and nvprof以及 A question ab
我想将 col-sm-4 中的元素移动到显示它的窗口的左侧,基本上我的元素是一个圆环图,它在移动 View 中显示了一半——但是我想如果我可以在 col-xs-6 元素内进行调整,它将正确显示。 这是
是否可以在 bootstrap 中实现? 我实现了两行标签和输入。 LABEL* 但是当显示宽度超过 sm 大小时,我想将它们放在一行中。因此,我按如下方式编辑我的代码。
我注意到我的网站在桌面上看起来很好,但在我的手机上却有些问题。简而言之,我的网站是这样的 我注意到:第二行左侧没有空白。 第一种方法:改变
这个问题在这里已经有了答案: Nested rows with bootstrap grid system? (2 个答案) bootstrap 3 to bootstrap 4 cols no
我想从两个表中获取数据。 表一 deviceadd 具有以下列 DeviceID (primary key), DeviceName, SerialNumber, ModelNumber, Make
我正在使用 bootstrap,在某些 div 中,我使用了宽度为 16.6667% 的 col-sm-2 类。在这个宽度下,我看到我的元素相当大。 我也尝试过使用 col-sm-1,但这次元素太小了
如果类中没有指定col-lg和col-md,那么col-sm是否适用于所有大屏? 最佳答案 是的。 来自 bootstrap , Grid classes apply to devices with
作为this question的回答显示,当一个 SM 包含 8 个 CUDA 核心(计算能力 1.3)时,32 个线程的单个 warp 需要 4 个时钟周期来执行整个 warp 的单个指令。 即在
我正在运行一个 ols 模型,我需要知道所有系数,以便在我的分析中使用它们。如何以不同于科学记数法的格式显示/保存系数? model = sm.ols(formula="sales ~ product
我是一个刚刚接触CUDA编程的人。 好像有SP SM和CUDA架构的概念。 我曾尝试运行示例源的 deviceQuery.cpp 我认为有效的是他们环境的 SP SM 开发, 不知SP是不是SM中的任
有什么方法可以明确限制在我的程序运行期间使用的 GPU 多处理器的数量?我想计算我的算法如何随着多处理器数量的增加而扩展。 如果有帮助:我正在使用 CUDA 4.0 和计算能力为 2.0 的设备。 最
我有以下 div,它在导航栏上显示了一个登录按钮,但如果屏幕很小,我想隐藏这个按钮。出于某种原因,当我添加 fxHide.gt-sm=true 时,当我缩小屏幕时它不会隐藏。我该如何解决这个问题?
我正在尝试在我的新 Android 设备上制作我的 SD 卡内部存储。 我已经成功地安装了 ADB 和 Fastboot,虽然它不像我希望的那么简单,并且必须将它们安装在 usr/local/bin
我试图了解 GPU 的基本架构。我已经浏览了很多 Material ,包括这个very good SO answer .但我仍然很困惑,无法得到一张好的照片。 我的理解: 一个 GPU 包含两个或多个
我有两个 block 使用 Bootstrap 3: A B 当我处于移动模式时, block 被放置在彼此之下。 如何将它们内联放置直到有可用空间? 最佳答案 仅供引用,
我正在尝试创建一个简单的侧边栏,它将隐藏在小型设备上.. 但不能让它工作.. #sidebar 要么被隐藏,要么 #main 上的 padding-left 设置为 0 sidebar test @m
我是一名优秀的程序员,十分优秀!