首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在我的Compute Capability 2.0 GPU上,每台多处理器1536的最大线程?

为什么在我的Compute Capability 2.0 GPU上,每台多处理器1536的最大线程?
EN

Stack Overflow用户
提问于 2017-05-10 16:13:49
回答 1查看 1.6K关注 0票数 1

在我的GPU上,使用Capability 2.0,每个多处理器的最大线程数是1536个。为什么不是2的力量?

下面是我的GPU的一些细节:

代码语言:javascript
复制
Physical Limits for GPU Compute Capability: 2.0   
Threads per Warp                            32  
Max Warps per Multiprocessor                48  
Max Thread Blocks per Multiprocessor        8  
Max Threads per Multiprocessor              1536  
Maximum Thread Block Size                   1024  
Registers per Multiprocessor                32768  
Max Registers per Thread Block              32768  
Max Registers per Thread                    63  
Shared Memory per Multiprocessor (bytes)    16384  
Max Shared Memory per Block                 16384  
Register allocation unit size               64  
Register allocation granularity             warp  
Shared Memory allocation unit size          128  
Warp allocation granularity                 2  
EN

回答 1

Stack Overflow用户

发布于 2017-05-10 16:22:56

Threads per Warp x Max Warps per Multiprocessor = Max Threads per Multiprocessor

32x48= 1536

Max Warps per Multiprocessor实际上是Maximum number of **resident** warps per multiprocessor的意思,Max Threads per MultiprocessorMaximum number of **resident** threads per multiprocessor

看看。在表14中,您将看到上述规则适用于每个计算能力。

数字1536意味着每个多处理器(cuda中的流式处理器称为SM )最多可以有1536个活动线程。这并不意味着您只能启动1536个线程。您可以在调用CUDA内核时启动超过1536个线程,但是每个SM只能包含1536个线程。而且,这并不意味着1536个线程同时在物理上执行。Warp是执行的单位,到目前为止,在各代数据自动化系统中是32种。

以下是来自这里的引文。

相比之下,CUDA设备上最小的并行执行单元包括32个线程(称为线程的翘曲)。现代NVIDIA GPU可以在有16个多处理器的GPU上同时支持每个多处理器最多1536个活动线程(见CUDA C编程指南的特性和规范),这将导致24,000多个并发活动线程。

编辑

另一个问题是:

你还能强调为什么每个多处理器的最大翘曲数是48而不是2(因为核数和寄存器大小= 65536字节都是2的幂)?

每个SM的核数并不总是2的幂。此外,CPU核心和CUDA核心之间也有一些细微的区别。以具有计算能力3.x的设备为例(链接)。

多处理器包括:

  • 192个用于算术运算的CUDA核心,
  • 32个用于单精度浮点超越函数的特殊函数单元,
  • 4翘曲调度器。

正如您所看到的,CUDA核(192)的数量不是2的幂,而CPU核是通用的,而CUDA核不执行单精度浮点超越功能。这些操作由其他一些特殊职能单位处理。看看

而且,在你的问题中,它说Registers per Multiprocessor是32K。这意味着每SM有32K 32位寄存器。所以总寄存器大小是128 is。

考虑到这一切,我认为Max Warps per Multiprocessor没有理由成为2的力量。

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

https://stackoverflow.com/questions/43897824

复制
相关文章

相似问题

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