GPU Hardware

Tensor Core

Специализированные вычислительные блоки GPU NVIDIA для ускоренных матричных умножений.

Что такое Tensor Core

Tensor Cores — специализированные аппаратные блоки внутри GPU NVIDIA, оптимизированные для выполнения операций вида D = A × B + C (умножение матриц с накоплением) за один такт. Введены в архитектуре Volta (V100) в 2017 году.

Обычные CUDA-ядра выполняют скалярные FP32-операции. Tensor Cores работают с матрицами 4×4 (или 8×8/16×16 в зависимости от поколения), выполняя умножение целой матрицы за один шаг — это ключевое ускорение для трансформеров, где 90%+ времени уходит на матричные умножения.

Поколения и поддерживаемые форматы

Архитектура GPU Поколение TC Форматы
Volta V100 1st gen FP16
Turing T4, RTX 20xx 2nd gen FP16, INT8, INT4
Ampere A100, RTX 30xx 3rd gen FP16, BF16, TF32, INT8
Hopper H100 4th gen FP8, FP16, BF16, TF32
Ada RTX 40xx, L40S 4th gen FP8, FP16, BF16

Практическое значение

Один H100 содержит 528 Tensor Cores 4-го поколения. При вычислениях в BF16 они обеспечивают 1979 TFLOPS — против ~60 TFLOPS для FP32 на обычных ядрах. То есть Tensor Cores дают ~33× ускорение для матричных операций.

Чтобы использовать Tensor Cores эффективно, нужно:

  • Использовать подходящие типы данных (BF16/FP16, не FP32)
  • Выравнивать размерности матриц по 16 или 8 (в зависимости от формата)
  • Включить torch.backends.cuda.matmul.allow_tf32 = True для TF32
import torch
# Включить TF32 для матричных умножений (рекомендуется для обучения)
torch.backends.cuda.matmul.allow_tf32 = True
torch.backends.cudnn.allow_tf32 = True

# Убедиться, что тензоры в BF16 (задействует Tensor Cores)
x = torch.randn(1024, 1024, dtype=torch.bfloat16, device='cuda')

Связанные термины

  • CUDA — платформа, через которую используются Tensor Cores
  • BF16 — основной формат для эффективного использования Tensor Cores
  • FP8 — новый формат 4-го поколения Tensor Cores
  • NVIDIA H100 — GPU с 4-м поколением Tensor Cores

Готовы запустить GPU-задачу?

Запустить GPU-сервер