- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对 NVidia GPU 中的内核数量、SMP 数量和最大线程数之间的关系感到困惑。我的笔记本电脑 GT650m 的设备属性显示 384 个内核,2 个 SMP,每个 SMP 有 1024 个线程。
这些数字如何相互关联和扭曲大小?我假设(可能是错误的)每个 SMP 有 192 个内核,但这不是 1024 的因数。如果每个内核运行 32 个线程,我预计每个 SMP 有 32 * 192 个线程,或 2^5 * (2^ 7 + 2^6),或 4096 + 2048 = 6142。
我错过了什么?
最佳答案
我认为您应该更深入地了解在 cuda 中调度内核。
有两个重要的尺寸:块 和 每块线程
每个区块被安排在一个 SM 上,然后在那里切成经线。
因此块有一个共享内存,只能在块内部访问,
因为它位于 SM 内存中。数量块 每个 SM 取决于设备限制和占用计算。 CC 1.0-2.x 的每个 SM 的最大块数为 8,CC 3.x 的最大块数为 16。
每个区块有一定数量的每块线程 .线程是分开的
进入经纱,经纱可以按任意顺序运行,仅由经纱决定
调度程序和 SM。
现在您的卡在 2 个 SM 上共有 384 个内核,每个 192 个内核。 CUDA 核心数表示每个周期可以执行的单精度浮点或整数线程指令总数。不要在任何计算中考虑 CUDA 核心。
最大线程数 因计算能力而异。 CC2.0-3.x 支持每块最多 1024 个线程,前提是有足够的寄存器和扭曲槽。扭曲被静态分配给扭曲调度程序。每个SM的warp调度程序的数量对于CC 1.x是1个,对于CC 2.x是2个,对于CC 3.x是4个。
如果您的应用程序不执行并发内核,则要使用每个 SM,gridDim 应具有 >= SM 块数。
为了让 GTX650m 充分利用您的计算能力,您应该至少有两个块(否则只有一个
块你只能使用一个 SM)。另一方面,如果您想调度 10240 个线程,您可以轻松地调度 10 个 1024 个线程的块。
关于architecture - CUDA 内核与线程数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16986770/
我是一名优秀的程序员,十分优秀!