第三章

加载吞吐量实验

上个实验介绍的是如何通过nvprof来检测SM上的占用率,现在我们来简述一下吞吐量是怎么检测的。

命令:nvprof --metrics gld_throughput <program> [param1] [param2] …

第一种情况:32*32的线程块大小:
CUDA学习——Chapter 3(6)并行性实验(2)
第二种情况:32*16的线程块大小:
CUDA学习——Chapter 3(6)并行性实验(2)
第三种情况:16*32的线程块大小:
CUDA学习——Chapter 3(6)并行性实验(2)
第四种情况:16*16的线程块大小:
CUDA学习——Chapter 3(6)并行性实验(2)

可以看到,第四种的吞吐量最大,但是速度不是最快的。因此我们可以得出初步结论,更高的吞吐量不一定意味着更优的性能。

全局内存加载效率

命令:nvprof --metrics gld_efficiency <program> [param1] [param2] …

同样地,我们把参数分别设为上述的4组,完成这个实验(需要在debug环境下进行,Release模式下优化程度较高,得不到正确的实验结果):

第一种情况:
CUDA学习——Chapter 3(6)并行性实验(2)
第二种情况:
CUDA学习——Chapter 3(6)并行性实验(2)
第三种情况:
CUDA学习——Chapter 3(6)并行性实验(2)

第四种情况:
CUDA学习——Chapter 3(6)并行性实验(2)

结合运行时间和吞吐量的相似性……出4个100%我觉得已经是比较正常的事情了……

书上是前两个100%,后两个50%左右,如果大家有不同的实验结果或者对这个实验结果有想法的欢迎在评论区讨论~

书上对它们自己的实验结果的解释是:为什么后面两个慢呢?因为虽然吞吐量很大,但是GLD的效率很低,所以执行时间较慢。

相关文章:

  • 2021-05-24
  • 2022-12-23
  • 2021-12-28
  • 2021-05-21
  • 2021-08-27
  • 2022-12-23
  • 2021-07-20
  • 2022-02-04
猜你喜欢
  • 2021-10-27
  • 2021-12-01
  • 2021-06-20
  • 2021-07-26
  • 2021-12-13
  • 2021-10-07
  • 2021-05-17
相关资源
相似解决方案