==== 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 #include global void matMulTensorCore(half *A, half *B, float *C, int N) { // Využití WMMA API (CUDA 10+) wmma::fragment a_frag; wmma::fragment b_frag; wmma::fragment 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)]]