Uživatelské nástroje

Nástroje pro tento web


tensorcore

TensorCore – vysvětlení pojmu

TensorCore (česky tensorové jádro) je specializovaná výpočetní jednotka, která je součástí moderních grafických procesorů (GPU) od společnosti NVIDIA. Je navržena pro akceleraci výpočtů s tenzory – vícerozměrnými maticemi – a především pro výkonné provádění operací typu matrix‑multiply‑accumulate (MMA), což jsou základní stavební kameny deep‑learningových algoritmů.

Historie

  Volta (2017) – první generace GPU s TensorCores (např. NVIDIA V100).
  Turing (2018) – rozšíření o podporu inferencí a ray‑tracing (RTX 2000‑serie).
  Ampere (2020) – zvýšený počet a vyšší přesnost (FP16, BF16, TF32, INT8/INT4).
  Ada Lovelace (2022) – další optimalizace a podpora nových datových typů.

Architektura a princip fungování

  MMA jednotka – provádí operaci C = A × B + C na 4 × 4 blokových maticích najednou.
  Datové typy – podporuje různé formáty:
      FP16 (half‑precision) – původní podpora.
      BF16 (brain‑floating‑point) – pro vyšší dynamický rozsah.
      TF32 – kombinace FP32 a FP16, optimalizovaná pro trénink.
      INT8 / INT4 – určené pro inferenci s nízkou přesností.
  Paralelismus – každé TensorCore může paralelně zpracovávat až 64 bitových operací, což vede k třicetinásobnému zrychlení oproti klasickým FP32 výpočtům na stejném GPU.

Využití

  Deep Learning – trénink a inference neuronových sítí (CNN, RNN, Transformer).
  High‑Performance Computing (HPC) – simulace, lineární algebra, vědecké výpočty.
  AI akcelerátory – integrace do serverových a edge zařízení (např. NVIDIA Jetson).

Výhody TensorCores

  Vyšší propustnost – až několik TFLOPS (tera‑floating‑point operations per second) pro FP16/TF32.
  Úspora energie – více výpočtů na watt ve srovnání s tradičními CUDA jádry.
  Jednoduchá integrace – využívá se pomocí knihoven jako cuBLAS, cuDNN, TensorRT a frameworků (PyTorch, TensorFlow) bez nutnosti psát nízko‑úrovňový kód.

=== Příklad kódu (CUDA) ===

 #include <cuda_fp16.h> #include <stdio.h>

global void matMulTensorCore(half *A, half *B, float *C, int N) { // Využití WMMA API (CUDA 10+) wmma::fragment<wmma::matrix_a, 16, 16, 16, half, wmma::row_major> a_frag; wmma::fragment<wmma::matrix_b, 16, 16, 16, half, wmma::col_major> b_frag; wmma::fragment<wmma::accumulator, 16, 16, 16, float> c_frag;
 
// Načtení sub‑matice do fragmentů
wmma::load_matrix_sync(a_frag, A, N);
wmma::load_matrix_sync(b_frag, B, N);
wmma::fill_fragment(c_frag, 0.0f);
 
// Výpočet C = A × B + C
wmma::mma_sync(c_frag, a_frag, b_frag, c_frag);
 
// Uložení výsledku
wmma::store_matrix_sync(C, c_frag, N, wmma::mem_row_major);
 
} 

Další zdroje

  [[https://developer.nvidia.com/tensor-cores|NVIDIA – Tensor Cores – oficiální dokumentace]]
  [[https://arxiv.org/abs/1803.08968|“Mixed Precision Training” – Micikevicius et al., 2018]]
  [[https://pytorch.org/docs/stable/generated/torch.cuda.amp.html|PyTorch – Automatic Mixed Precision (AMP)]]
tensorcore.txt · Poslední úprava: autor: admin