ampere 架构比 turing CUDA cores 翻倍,比如 2060 ( CUDA cores 2176 ) vs A4500 ( CUDA cores 5888 ),理论上计算性能也会翻倍的,在带宽不是瓶颈的情况下,计算相同的东西 GPU 使用量 A4500 比 2060 少一半才对。但是在实际使用上并没有,A4500 只好一丢丢。
有人能解释下原因吗
1
leimao 2023-02-14 00:57:56 +08:00 via iPhone 2
影响因素有很多,很多时候都是参数或者编程没有优化好。首先得保证 GPU utilization 都是 100%。
|
2
FindHao 2023-02-14 01:34:46 +08:00 via Android 1
你测试下最简单的矩阵乘,比如 torch.mm 。结果应该是确实少了一半的执行时间。因为这种程序计算简单,可以达到真正计算单元的瓶颈。到了实际中你使用的程序,就复杂很多了。
|
3
okakuyang 2023-02-14 01:41:17 +08:00
CUDA 从某一代开始成为英伟达的一种“概念”。
当它宣称 CUDA 数量的时候,指的不是芯片真实的核心数量,而是一种逻辑上的概念。 |
4
feather12315 OP @okakuyang #3 有出处吗
|
5
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 了 |
6
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 就不会这么说了
|
7
feather12315 OP |
8
Laussan 2023-02-15 01:03:47 +08:00
首先 GPU 不是所有的计算都在 cuda core 上。
其次核数翻倍不是主频翻倍也不是 ipc 翻倍,粗略加速比计算参考 Amdal's Law. 最后想要获得比较准确的加速比,需要对你的任务做 profiling. |
9
Laussan 2023-02-15 01:04:52 +08:00
Amdal -> Amdahl ,这自动语法纠正把对的纠成错的也太搞了
|