首页 > 解决方案 > 在这个添加两个数组的程序中,K80 与 Pascal 性能差异的原因是什么?

问题描述

我按照此页面上的示例开始使用 CUDA 编程。它使用添加两个具有一百万个元素的数组来说明不同的执行配置。

我使用 Tesla P100(Pascal 架构)通过 Google Colaboratory 运行代码。但是文章使用的是K80。以下是nvprof关于在这两个 GPU 中执行相同代码的指标。

+--------------------+-------------------------+----------+
| GPU                | Execution configuration | Time     |
+--------------------+-------------------------+----------+
| K80                | <<<1, 256>>>            | 2.7107ms |
+--------------------+-------------------------+----------+
| Tesla-P100(Pascal) | <<<1, 256>>>            | 4.4293ms |
+--------------------+-------------------------+----------+
| K80                | <<<4096, 256>>>         | 94.015us |
+--------------------+-------------------------+----------+
| Tesla-P100(Pascal) | <<<4096, 256>>>         | 3.6076ms |
+--------------------+-------------------------+----------+

读完这篇文章后,我假设 Pascal 架构会胜过 K80。但如上所示,有两个观察结果:

  1. K80 在单块性能方面比 Pascal 更快
  2. 在 K80 上使用 4096 块而不是 1 块会产生显着的性能提升(~28 倍),但在 Pascal 的情况下看不到(~1.2 倍)

这是预期的吗?另外,观察 (2) 的解释是什么?

如果我在这里遗漏了什么,请告诉我。

感谢您的阅读。

标签: cudagpunvidianvprof

解决方案


推荐阅读