测量 NVIDIA 张量核心加速

Posted

技术标签:

【中文标题】测量 NVIDIA 张量核心加速【英文标题】:Measure NVIDIA Tensor Cores speedup 【发布时间】:2019-06-10 07:58:48 【问题描述】:

我在 Volta 架构 (V100 GPU) 上使用 NVIDIA Tensor Cores。我想测量张量核心对我的代码的影响(用于测试目的的 Tensorflow/Python 中的卷积神经网络)。

如何测量张量核心加速?是否可以禁用张量核心并在有/没有它们的情况下运行相同的代码?

我尝试过的:

TF_DISABLE_CUDNN_TENSOR_OP_MATH 设置为1(来自this)。但我仍然看到使用了张量核心。更准确地说,我在nvprof 日志中看到:volta_s884cudnn_fp16 行(使用此选项消失)和volta_s884gemm_fp16(仍然存在)。附带问题:这些行是什么意思? 与没有张量核心的 Pascal 架构 (P100) 上的相同代码进行比较,我看到了 30% 的加速,但我不知道这 30% 的哪一部分是由 GPU 改进引起的,哪一部分是张量核心性能。 在tf.float16tf.float32 中训练相同的网络,但结果相同,我看到了改进,但不知道是什么原因导致模型尺寸减小。

在此先感谢您提供任何帮助/建议。

【问题讨论】:

我的猜测是volta_s884gemm_fp16来自cuBLAS库,一些ops直接调用cuBLAS,因此调用不受TF_DISABLE_CUDNN_TENSOR_OP_MATH的影响。 【参考方案1】:

我选择了一个 hack 来估计张量核心的性能增益:

我在 Pascal 和 Volta 架构上运行 float32 中的代码(以估计架构的性能增益)。 我也在float16 中运行了代码,假设架构的性能增益与float32float16 相同,我可以估计性能增益的另一部分(在@ 987654325@) 归于张量核心。

【讨论】:

以上是关于测量 NVIDIA 张量核心加速的主要内容,如果未能解决你的问题,请参考以下文章

Nvidia Tesla T4 张量核心基准测试 [关闭]

如何在我的代码中使用张量核心而不是 cuda 核心?

如何通过 Vulkan 使用 Nvidia Tensor Cores

RTX 4080参数 RTX 4080性能怎么样

RTX 4080参数 RTX 4080性能怎么样

如何在非 NVIDIA 设置上加速深度学习?