测量 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.float16
和tf.float32
中训练相同的网络,但结果相同,我看到了改进,但不知道是什么原因导致模型尺寸减小。
在此先感谢您提供任何帮助/建议。
【问题讨论】:
我的猜测是volta_s884gemm_fp16来自cuBLAS库,一些ops直接调用cuBLAS,因此调用不受TF_DISABLE_CUDNN_TENSOR_OP_MATH的影响。 【参考方案1】:我选择了一个 hack 来估计张量核心的性能增益:
我在 Pascal 和 Volta 架构上运行float32
中的代码(以估计架构的性能增益)。
我也在float16
中运行了代码,假设架构的性能增益与float32
和float16
相同,我可以估计性能增益的另一部分(在@ 987654325@) 归于张量核心。
【讨论】:
以上是关于测量 NVIDIA 张量核心加速的主要内容,如果未能解决你的问题,请参考以下文章