NVIDIA GPU CUDA core 数对性能的影响

2023-02-14 00:00:36 +08:00
 feather12315

ampere 架构比 turing CUDA cores 翻倍,比如 2060 ( CUDA cores 2176 ) vs A4500 ( CUDA cores 5888 ),理论上计算性能也会翻倍的,在带宽不是瓶颈的情况下,计算相同的东西 GPU 使用量 A4500 比 2060 少一半才对。但是在实际使用上并没有,A4500 只好一丢丢。

有人能解释下原因吗

1930 次点击
所在节点    NVIDIA
9 条回复
leimao
2023-02-14 00:57:56 +08:00
影响因素有很多,很多时候都是参数或者编程没有优化好。首先得保证 GPU utilization 都是 100%。
FindHao
2023-02-14 01:34:46 +08:00
你测试下最简单的矩阵乘,比如 torch.mm 。结果应该是确实少了一半的执行时间。因为这种程序计算简单,可以达到真正计算单元的瓶颈。到了实际中你使用的程序,就复杂很多了。
okakuyang
2023-02-14 01:41:17 +08:00
CUDA 从某一代开始成为英伟达的一种“概念”。
当它宣称 CUDA 数量的时候,指的不是芯片真实的核心数量,而是一种逻辑上的概念。
feather12315
2023-02-14 08:56:05 +08:00
@okakuyang #3 有出处吗
neopenx
2023-02-14 14:31:18 +08:00
你代码问题吧。gpu spec 给出了两者的渲染性能 perf 就是 2 倍。
https://www.techpowerup.com/gpu-specs/geforce-rtx-2060.c3310
考虑到 2060 的 fp32 peak flops 才是 A4500 的四分之一,跑个 cublas 的 gemm 能摸到 fp32 peak 的完全是暴打 2060 了
neopenx
2023-02-14 14:43:42 +08:00
@okakuyang CUDA core 是 Stream Processor 或(Shading Unit)的黄氏叫法,就是物理数量。逻辑概念是 CUDA thread ,thread 在代码中可以开到 2**31-1 以上, 但是没有足够的 CUDA core ,所以是分批次调度完的(一次 60K~120K threads)。但凡你写过 cuda 或者 shader 就不会这么说了
feather12315
2023-02-14 22:58:54 +08:00
@neopenx
1. 我确实没写过 CUDA 或 shader
2. 确实是没把 GPU 吃满。可这里比较的是相同计算量下的 GPU 使用率,并不是满载的情况。
Laussan
2023-02-15 01:03:47 +08:00
首先 GPU 不是所有的计算都在 cuda core 上。
其次核数翻倍不是主频翻倍也不是 ipc 翻倍,粗略加速比计算参考 Amdal's Law.
最后想要获得比较准确的加速比,需要对你的任务做 profiling.
Laussan
2023-02-15 01:04:52 +08:00
Amdal -> Amdahl ,这自动语法纠正把对的纠成错的也太搞了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/915849

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX