В чем разница между ядрами CUDA и тензора?

Я совершенно новичок в терминах, связанных с вычислениями HPC, но я только что видел, что EC2 выпустила свой новый тип экземпляра на AWS, который питается от новой Nvidia Tesla V100, которая имеет как "ядра": ядра Cuda (5.120), так и тензорные ядра (640). В чем разница между тем и другим?

3 ответов


теперь только Tesla V100 и Titan V имеют тензорные ядра. Оба графических процессора имеют 5120 ядер cuda, где каждое ядро может выполнять до 1 одной операции прецизионного многократного накопления (например, в fp32: x += y * z) на 1 тактовый процессор (например, частота Tesla V100 PCIe составляет 1,38 Гц).

каждое тензорное ядро выполняет операции над малыми матрицами размером 4x4. Каждое тензорное ядро может выполнять 1 матричную операцию умножения на 1 такт GPU. Он умножает две матрицы fp16 4x4 и добавляет умножение матрица продукта fp32 (размер: 4x4) к аккумулятору (который также матрица fp32 4x4).

Он называется смешанной точностью, потому что входные матрицы fp16, но результат умножения и накопитель являются матрицами fp32.

вероятно, собственное имя будет просто 4x4 matrix Core, однако маркетинговая команда NVIDIA решила использовать "тензорные ядра".


GPU всегда были хороши для машинного обучения. Ядра GPU изначально были разработаны для физических и графических вычислений, которые включают в себя матричные операции. Общие вычислительные задачи не требуют большого количества матричных операций, поэтому процессоры намного медленнее. Физика и графика также намного проще распараллелить, чем общие вычислительные задачи, что приводит к высокому количеству ядер.

из-за матричного тяжелого характера машинного обучения (нейронные сети), GPU были отлично подходят. Тензорные ядра просто более специализированы на типах вычислений, участвующих в программном обеспечении машинного обучения (например, Tensorflow).

Nvidia написали подробный блог здесь, который идет гораздо более подробно о том, как работают Тензорные ядра и улучшения преформации над ядрами CUDA.


Тензорные ядра используют намного меньше вычислительной мощности за счет точности, чем ядра Cuda, но эта потеря точности не оказывает такого большого влияния на конечный результат.

вот почему для моделей машинного обучения Тензорные ядра более эффективны при снижении затрат без существенного изменения выхода.

сам Google использует Тензорные процессоры для Google translate.