cuda 与张量核心有什么区别?

问题描述 投票:0回答:5

我对 HPC 计算相关的术语完全陌生,但我刚刚看到 EC2 在 AWS 上发布了其新型实例,该实例由新的 Nvidia Tesla V100 提供支持,该实例具有两种“核心”:Cuda Cores (5,120) 和张量核心 (640)。 两者有什么区别?

cuda gpu nvidia
5个回答
85
投票

现在只有 Tesla V100 和 Titan V 有张量核心。两个 GPU 均具有 5120 个 cuda 核心,其中每个核心每 1 个 GPU 时钟最多可执行 1 次单精度乘法累加运算(例如,在 fp32 中:x += y * z)(例如 Tesla V100 PCIe 频率为 1.38Gz)。

每个张量核心对大小为 4x4 的小矩阵执行操作。每个张量核心每 1 个 GPU 时钟可执行 1 个矩阵乘法累加运算。它将两个 fp16 矩阵 4x4 相乘,并将乘积 fp32 矩阵(大小:4x4)添加到累加器(这也是 fp32 4x4 矩阵)。

之所以称为混合精度,是因为输入矩阵是 fp16,但乘法结果和累加器是 fp32 矩阵。

可能,正确的名称只是 4x4 矩阵核心,但 NVIDIA 营销团队决定使用“张量核心”。

编辑: 此后,NVIDIA 发布了多款采用 Tensor Core 的新显卡。所有 RTX 卡都具有 Tensor Core,甚至包括 3050。此外,以下其他显卡也具有 Tensor Core:

  1. Quadro 系列
  2. 泰坦系列
  3. 特斯拉系列

26
投票

GPU 一直有利于机器学习。 GPU 核心最初是为物理和图形计算而设计的,其中涉及矩阵运算。一般计算任务不需要大量的矩阵运算,因此 CPU 的速度要慢得多。物理和图形也比一般计算任务更容易并行,从而导致核心数量较多。

由于机器学习(神经网络)的矩阵重性质,GPU 非常适合。张量核心更专注于机器学习软件(例如 Tensorflow)中涉及的计算类型。

Nvidia 写了一篇详细的博客here,其中更详细地介绍了 Tensor 核心的工作原理以及相对 CUDA 核心的性能改进。


14
投票

CUDA 核心:

每个 GPU 时钟执行一次单值乘法

1 x 1 per GPU clock

TENSOR 核心:

每个 GPU 时钟进行一次矩阵乘法

[1 1 1       [1 1 1
 1 1 1   x    1 1 1    per GPU clock
 1 1 1]       1 1 1]

更准确地说,TENSOR 核心同时进行许多 CUDA 核心的计算。


1
投票

大多数深度学习神经网络计算都是矩阵乘法。因此,NVIDIA 引入了张量核心来有效地执行这些矩阵乘法。 Matrix 和 Tensor 都是相同的,都是多维数组。

CUDA 核心 - 1 个单精度乘法 (fp32) 并每个时钟累加。

Tensor 核心 - 每个时钟 64 个 fp16 乘法累加到 fp32 输出。

但主要区别是 CUDA 核心不会在精度上妥协。 采用 fp16 输入的张量核心会在精度上做出一些妥协。 因此,这就是张量核心用于混合精度训练的原因。 训练仍然采用浮点,但输入采用 fp16,输出采用 fp32。

NVIDIA 声称,在使用张量核心进行训练时,他们能够在精度损失有限的情况下实现 4 倍至 8 倍的速度。

所以,这都是一种权衡。


0
投票

与 Cuda 核心相比,张量核心使用的计算能力要少得多,但会牺牲精度,但精度的损失不会对最终输出产生太大影响。

这就是为什么对于机器学习模型来说,Tensor Core 在降低成本方面更有效,而无需改变输出太多。

谷歌本身使用张量处理单元进行谷歌翻译。

© www.soinside.com 2019 - 2024. All rights reserved.