Fp16 fp32 fp64 что это

FAQ по видеокартам GeForce: что следует знать о графических картах?

Страница 4: GPU

Что скрывается за потоковым процессором, блоком шейдеров или ядром CUDA?

Потоковый процессор обрабатывает непрерывный поток данных, которых насчитываются многие сотни, причем они выполняются параллельно на множестве потоковых процессоров. Современные GPU оснащаются несколькими тысячами потоковых процессоров, они отлично подходят для задач с высокой степенью параллельности. Это и рендеринг графики, и научные расчеты. Что, кстати, позволило GPU закрепиться в серверном сегменте в качестве вычислительных ускорителей.

Fp16 fp32 fp64 что это. Смотреть фото Fp16 fp32 fp64 что это. Смотреть картинку Fp16 fp32 fp64 что это. Картинка про Fp16 fp32 fp64 что это. Фото Fp16 fp32 fp64 что это

Еще одним шагом дальше можно назвать интеграцию ядер Tensor в архитектуру NVIDIA Ampere, которые способны эффективно вычислять менее сложные числа INT8 и INT4, но об этом мы поговорим чуть позже.

Fp16 fp32 fp64 что это. Смотреть фото Fp16 fp32 fp64 что это. Смотреть картинку Fp16 fp32 fp64 что это. Картинка про Fp16 fp32 fp64 что это. Фото Fp16 fp32 fp64 что это

В составе GPU GA102 имеются семь кластеров Graphics Processing Clusters (GPC) с 12 потоковыми мультипроцессорами Streaming Multiprocessors (SM) каждый. Но на видеокартах GeForce RTX 3090 и GeForce RTX 3080 активны не все SM. GA102 GPU теоретически содержит 10.752 блоков FP32 (7 GPC x 12 SM x 128 блоков FP32). Но у GeForce RTX 3090 два SM отключены, поэтому видеокарта предлагает «всего» 10.496 блоков FP32. Такой подход повышает выход годных чипов NVIDIA, поскольку наличие одного-двух дефектных SM не приводит к отбраковке кристалла.

В случае GeForce RTX 3080 один кластер GPC полностью отключен, поэтому на GA102 GPU остаются шесть GPC, но только четыре из них содержат полные 12 SM, два ограничены десятью SM. Что дает в сумме 8.704 блока FP32 в составе 68 SM.

NVIDIA масштабирует архитектуру Ampere с видеокарты GeForce RTX 3060 вплоть до GeForce RTX 3090. Ниже представлен обзор видеокарт GeForce RTX 30:

Сравнение видеокарт семейства GeForce RTX 30

GeForce RTX 3090GeForce RTX 3080 TiGeForce RTX 3080GeForce RTX 3070 Ti
GPUAmpere (GA102)Ampere (GA102)Ampere (GA102)Ampere (GA104)
Число транзисторов28 млрд.28 млрд.28 млрд.17,4 млрд.
Техпроцесс8 нм8 нм8 нм8 нм
Площадь кристалла628,4 мм²628,4 мм²628,4 мм²392,5 мм²
Число FP32 ALU10.49610.2408.7046.144
Число INT32 ALU5.2485.1204.3523.072
Число SM82806848
Ядра Tensor328320272192
Ядра RT82806848
Базовая частота1.400 МГц1.365 МГц1.440 МГц1.580 МГц
Частота Boost1.700 МГц1.665 МГц1.710 МГц1.770 МГц
Емкость памяти24 GB12 GB10 GB8 GB
Тип памятиGDDR6XGDDR6XGDDR6XGDDR6X
Частота памяти1.219 МГц1.188 МГц1.188 МГц1.188 МГц
Ширина шины памяти384 бит384 бит320 бит256 бит
Пропускная способность памяти936 Гбайт/с912 Гбайт/с760 Гбайт/с608 Гбайт/с
TDP350 Вт350 Вт320 Вт290 Вт
Сравнение видеокарт семейства GeForce RTX 30

GeForce RTX 3070GeForce RTX 3060 TiGeForce RTX 3060
GPUAmpere (GA104)Ampere (GA104)Ampere (GA106)
Число транзисторов17,4 млрд.17,4 млрд.12 млрд.
Техпроцесс8 нм8 нм8 нм
Площадь кристалла392,5 мм²392,5 мм²276 мм²
Число FP32 ALU5.8884.8643.584
Число INT32 ALU2.9442.4321.792
Число SM463828
Ядра Tensor184152112
Ядра RT463828
Базовая частота1.500 МГц1.410 МГц1.320 МГц
Частота Boost1.730 МГц1.665 МГц1.780 МГц
Емкость памяти8 GB8 GB12 GB
Тип памятиGDDR6GDDR6GDDR6
Частота памяти1.725 МГц1.750 МГц1.875 МГц
Ширина шины памяти256 бит256 бит192 бит
Пропускная способность памяти448 Гбайт/с448 Гбайт/с360 Гбайт/с
TDP220 Вт200 Вт170 Вт

Одновременное выполнение операций с целыми числами и числами с плавающей запятой

Как мы уже упоминали, вычислительные блоки FP32 могут работать в режиме 2x FP16, то же самое касается INT16. Чтобы увеличить вычислительную производительность и сделать ее более гибкой, в архитектуре NVIDIA Turing появилась возможность одновременного расчета чисел с плавающей запятой и целых чисел. Конечно, подобная возможность сохранилась и в архитектуре Ampere. NVIDIA проанализировала данные вычисления в конвейере рендеринга в десятках игр, обнаружив, что на каждые 100 расчетов FP выполняется примерно треть вычислений INT. Впрочем, значение среднее, на практике оно меняется от 20% до 50%. Конечно, если вычисления FP и INT будут выполняться одновременно, то конвейеру придется иногда «подтормаживать» в случае взаимных связей.

Fp16 fp32 fp64 что это. Смотреть фото Fp16 fp32 fp64 что это. Смотреть картинку Fp16 fp32 fp64 что это. Картинка про Fp16 fp32 fp64 что это. Фото Fp16 fp32 fp64 что это

Соотношение 1/3 INT32 и 2/3 FP32 отражено в структуре Ampere Streaming Multiprocessor (SM), составляющем элементе архитектуры Ampere. NVIDIA удвоила число вычислительных блоков FP32 на каждый SM. Вместо 64 блоков FP32 на SM, их теперь насчитывается 128. Плюс 64 блока INT32. Теперь на квадрант SM насчитывается два пути данных, некоторые могут работать параллельно. Один из путей данных содержит 16 блоков FP32, то есть может выполнять 16 вычислений FP32 за такт. Второй путь данных содержит по 16 блоков FP32 и INT32. Каждый из квадрантов SM может выполнять либо 32 операции FP32, либо по 16 операций FP32 и INT32 за такт. Если же брать SM целиком, то возможно выполнение 128 операций FP32 или по 64 операции FP32 и INT32 за такт.

Параллельное выполнение продолжается и на других блоках. Например, ядра RT и Tensor могут работать параллельно в конвейере рендеринга, что снижает время, требующееся на рендеринг кадра.

Под термином «потоковые процессоры» сегодня подразумевают количество вычислительных блоков GPU, хотя следует помнить, что сложность вычислений бывает разной. Поэтому термин используется гибко, но обычно все равно описывает вычислительные блоки.

Текстурные блоки

Действительно, для рендеринга объекта простых текстур уже недостаточно, использование нескольких слоев позволяет, например, получить 3D-эффект вместо плоской текстуры. Раньше объекты приходилось рассчитывать на конвейере несколько раз, и каждый проход текстурный блок накладывал текстуру, сегодня достаточно одного процесса рендеринга, текстурный блок может получать данные объекта для многократной обработки из буфера.

Контроллер памяти

Помимо изменений в SM, новая архитектура NVIDIA получила оптимизированную структуру конвейеров растровых операций (ROP), а также соединения ROP и контроллера памяти. До поколения Turing ROP всегда подключались к интерфейсу памяти. И на каждый 32-битный контроллер памяти приходилось восемь ROP. Если число контроллеров памяти и ширина шины менялись, то же самое касалось и ROP. В архитектуре Ampere ROP перенесены в GPC. Используются два раздела ROP на GPC, каждый раздел содержит восемь ROP.

Fp16 fp32 fp64 что это. Смотреть фото Fp16 fp32 fp64 что это. Смотреть картинку Fp16 fp32 fp64 что это. Картинка про Fp16 fp32 fp64 что это. Фото Fp16 fp32 fp64 что это

Что дает иную формулу вычисления ROP на GeForce RTX 3080. Шесть GPC с 2x 8 ROP на каждом дают 96 ROP. У GeForce RTX 3090 работают семь GPC с 2x 8 ROP, что дает 112 ROP. NVIDIA намеренно интегрировала ROP глубже, чтобы задняя часть конвейера рендеринга меньше зависела от интерфейса памяти. Например, видеокарта GeForce RTX 3080 использует 320-битный интерфейс памяти, но содержит 96 ROP, а не 80 ROP.

Интерфейс памяти разделен на 32-битные блоки. В зависимости от желаемой ширины интерфейса памяти или емкости, их можно набирать в произвольном количестве.

Ядра Tensor и RT

Ядра Tensor третьего поколения

С архитектурой Turing NVIDIA представила два новых вычислительных блока, ранее на GPU не использовавшихся. Конечно, ядра Tensor знакомы нам по архитектуре Volta, но там они использовались для научных расчетов. В случае GPU Ampere ядра Tensor перешли уже на третье поколение.

Fp16 fp32 fp64 что это. Смотреть фото Fp16 fp32 fp64 что это. Смотреть картинку Fp16 fp32 fp64 что это. Картинка про Fp16 fp32 fp64 что это. Фото Fp16 fp32 fp64 что это

Ядра Tensor ранее использовались только для вычислений INT16 и FP16, но в третьем поколении они могут работать с FP32 и FP64. Что особенно важно для сегмента HPC с высокой точностью. Для игровых GPU GeForce намного важнее меньшая точность.

Ядра Tensor архитектуры Turing могут выполнять 64 операции FP16 Fused Multiply-Add (FMA) каждое. В случае Ampere число операций увеличено до 128 у GA102 GPU и до 256 у GA100 GPU с плотными матрицами. Если же используются разреженные матрицы, число операций FMA FP16 увеличивается до 256 у GA102 GPU и до 512 у GA100 GPU. Ядра Tensor архитектуры Turing разреженные матрицы не поддерживают.

Ядра RT второго поколения

Все они опираются на тот принцип, что удаленные от луча примитивы не могут с ним пересекаться. Следовательно, и смысла их просчитывать нет. Число лучей на сценах растет экспоненциально, поэтому на каждый луч следует обрабатывать как можно меньшее число примитивов, чтобы не увеличивать вычислительную нагрузку.

Fp16 fp32 fp64 что это. Смотреть фото Fp16 fp32 fp64 что это. Смотреть картинку Fp16 fp32 fp64 что это. Картинка про Fp16 fp32 fp64 что это. Фото Fp16 fp32 fp64 что это

Поскольку NVIDIA не изменила число ядер RT на SM в архитектуре Ampere, количество блоков SM на GPU по-прежнему определяет производительность RT. Но в ядрах RT есть другие оптимизации.

Одна из проблем с расчетом пересечений при трассировке лучей связана с движущимися объектами, особенно если используется эффект размытия движения (motion blur). Для ядер RT в архитектуре Turing такой сценарий является «узким местом». Но второе поколение ядер RT уже лучше справляется с интерполяцией эффекта размытия движения. Пересечения просчитываются с упреждением, в итоге трассировка лучей рассчитываются только для тех областей, где она необходима.

Кэши L1 и L2

Между функциональными блоками (потоковые процессоры, ядра RT и Tensor) и видеопамятью располагаются еще два уровня хранения данных, без которых GPU не смог бы выдавать высокий уровень производительности. Цель этих кэшей заключается в том, чтобы хранить информацию как можно ближе к функциональным блокам. Данные передаются из видеопамяти сначала в кэш L2, а затем и в кэш L1.

NVIDIA с архитектурой Ampere вновь увеличила кэш L1 с 96 до 128 кбайт. Скорость работы L1 была вновь удвоена. NVIDIA реализовала такую же меру ранее при переходе с Pascal на Turing. Число 32-битных регистров не изменилось и осталось на уровне 16.384. То же самое касается числа блоков чтения/записи.

Источник

Nvidia Ampere — самое главное о новой архитектуре видеокарт

Fp16 fp32 fp64 что это. Смотреть фото Fp16 fp32 fp64 что это. Смотреть картинку Fp16 fp32 fp64 что это. Картинка про Fp16 fp32 fp64 что это. Фото Fp16 fp32 fp64 что это

Fp16 fp32 fp64 что это. Смотреть фото Fp16 fp32 fp64 что это. Смотреть картинку Fp16 fp32 fp64 что это. Картинка про Fp16 fp32 fp64 что это. Фото Fp16 fp32 fp64 что это

В мае 2020 года компания Nvidia представила первый графический процессор на архитектуре Ampere. Это был профессиональный видеоускоритель Tesla A100, созданный для суперкомпьютеров и специализированных вычислений. Прирост производительности в A100 оказался впечатляющим, поэтому большинство с нетерпением ожидало появления уже игровых видеокарт на новой архитектуре.

В сентябре 2020 мир увидел новые GeForce RTX. Геймерские модели 3090, 3080 и 3070 были построены на новейшей микроархитектуре Ampere и оказались практически вдвое быстрее линейки RTX 20ХХ. В чем же особенности архитектуры Ampere, и почему она способна обеспечить такую производительность?

Структура Ampere

Высокоуровневая архитектура чипов GA102 не претерпела кардинальных изменений. Здесь также в основе лежат графические кластеры (GPC), в каждом из которых находятся кластеры обработки текстур (TPC), потоковые мультипроцессоры (SM), растровые операторы (ROP) и контроллеры памяти.

В GA102 для RTX 3090 входит семь GPC, 42 TPC и 84 SM. В RTX 3080 используется урезанный вариант с шестью GPC.

Fp16 fp32 fp64 что это. Смотреть фото Fp16 fp32 fp64 что это. Смотреть картинку Fp16 fp32 fp64 что это. Картинка про Fp16 fp32 fp64 что это. Фото Fp16 fp32 fp64 что это

В сравнении с архитектурой Turing по структуре принципиальных перемен нет, поэтому прирост производительности стал возможен за счет некоторых других нововведений и переходу на новый техпроцесс.

Fp16 fp32 fp64 что это. Смотреть фото Fp16 fp32 fp64 что это. Смотреть картинку Fp16 fp32 fp64 что это. Картинка про Fp16 fp32 fp64 что это. Фото Fp16 fp32 fp64 что это

Каждый SM блок в графических чипах на архитектуре Ampere для GA10X имеет 128 ядер CUDA, две пары тензорных ядер третьего поколения, регистровый файл 256 килобайт, четыре текстурных блока и ядро трассировки лучей.

Fp16 fp32 fp64 что это. Смотреть фото Fp16 fp32 fp64 что это. Смотреть картинку Fp16 fp32 fp64 что это. Картинка про Fp16 fp32 fp64 что это. Фото Fp16 fp32 fp64 что это

Количество тензорных ядер было уменьшено по сравнению с чипами на архитектуре Turing, однако это компенсируется более высокой мощностью. Тензорные ядра активно применяются в DLSS и фирменной технологии RTX Voice, которая на основе ИИ удаляет посторонние шумы.

Fp16 fp32 fp64 что это. Смотреть фото Fp16 fp32 fp64 что это. Смотреть картинку Fp16 fp32 fp64 что это. Картинка про Fp16 fp32 fp64 что это. Фото Fp16 fp32 fp64 что это

Чтобы распределить планирование рабочих нагрузок с целыми числами и с плавающей запятой, пропускную способность кэша L1 пришлось удвоить: 128 байт/такт на Ampere по сравнению с 64 байтами на такт в Turing. Благодаря этому увеличилась и пропускная способность кеша: для RTX 3080 219 ГБ/сек против 116 ГБ/сек для RTX 2080 Super.

Если говорить конкретно о потоковых мультипроцессорах, то одним из главных нововведений стало изменение расположения блоков операций растеризации (ROP). Ранее эти блоки привязывались непосредственно к контроллеру памяти и кешу. В Ampere для ускорения растровых операций ROP был перемещен и теперь является частью графического кластера GPC.

Главные нововведения архитектуры Ampere

Графические чипы на архитектуре Ампер выполнены по новейшему техпроцессу 7 нм. Разработчикам удалось уместить на кристалле 54,2 миллиарда транзисторов.

Тензорные ядра третьего поколения. Ускоряют функции и обучение искусственного интеллекта, например, NVIDIA DLSS для сверхвысокого разрешения вплоть до 8K. Специально для задач с ИИ появился формат TensorFloat-32 (TF32). Он позволит повысить производительность в задачах глубокого обучения до 10 раз без необходимости изменять код.

В формате FP32 отводится один бит на знак, 8 — для записи порядка (предельного диапазона) и 23 бита определяют точность вычислений. Формат записи FP16 работает быстрее, но имеет меньше бит для записи порядка и точности вычислений — 5 и 10 бит соответственно.

Новый TF32 стал компромиссом между двумя вышеописанными — он сохранил диапазон от FP32, но при этом оставил точность формата FP16, которой обычно хватает для большинства задач глубокого обучения.

Fp16 fp32 fp64 что это. Смотреть фото Fp16 fp32 fp64 что это. Смотреть картинку Fp16 fp32 fp64 что это. Картинка про Fp16 fp32 fp64 что это. Фото Fp16 fp32 fp64 что это

На практике согласно замерам самой nVIDIA с различными типами данных новый профессиональный ускоритель А100 на архитектуре Ampere обеспечивает прирост до 7Х по сравнению с прошлым поколением укорителей V100.

Fp16 fp32 fp64 что это. Смотреть фото Fp16 fp32 fp64 что это. Смотреть картинку Fp16 fp32 fp64 что это. Картинка про Fp16 fp32 fp64 что это. Фото Fp16 fp32 fp64 что это

Двукратное увеличение производительности с FP32. Большинство графических рабочих нагрузок состоят из 32-битных операций с плавающей запятой (FP32). Мультипроцессор потоковой передачи (SM) в архитектуре Ampere GA10x был разработан для обработки данных с удвоенной скоростью.

В предыдущей архитектуре каждый SM блок имел по два канала для передачи информации, но только один из них мог работать с операциями формата FP32. Эта проблема и была решена в Ampere. Как следствие, в операциях с FP32 новейшая RTX 3090 обеспечивает прирост практически в 2 раза.

Однако утверждение актуально только в тех случаях, когда все инструкции имеют формат только FP32. На практике это бывает редко, и FP32 разбавляется инструкциями INT32. Именно поэтому нельзя говорить о полном приросте производительности в 2 раза для линейки RTX.

Память GDDR6X. Новейшие игры предъявляют все большие требования не только к графическому чипу, но и видеопамяти. Увеличение объема это лишь один путь, более эффективным является повышение пропускной способности.

Новейшая GDDR6X имеет пропускную способность в 936 Гбайт/с, а теоретический придел для этого типа памяти переходит границу в 1000 Гбайт/с.

GDDR6XGDDR6GDDR5XGDDR5
Пропускная способность на пин, Гбит/с2118114
Объем чипа, МБ102410241024512
Разрядность интерфейса, бит384384352384
Пропускная способность памяти, Гбайт/с1008864484336,6

GDDR6X обеспечила самый большой прирост производительности за последние 10 лет.

RTX IO. Все больше людей переходят на использование твердотельных накопителей, которые обеспечивают скорости чтения и памяти от 500 МБ/с. Наивысшую скорость предлагают твердотельные накопители M.2 PCIe Gen4, способные передавать данные на скорости до 7 ГБ/с. Однако главная проблема при распаковке — высокая нагрузка на ядра центрального процессора. Даже с M.2 SSD операции вывода-вывода способны нагружать до 24 ядер ЦП.

Fp16 fp32 fp64 что это. Смотреть фото Fp16 fp32 fp64 что это. Смотреть картинку Fp16 fp32 fp64 что это. Картинка про Fp16 fp32 fp64 что это. Фото Fp16 fp32 fp64 что это

Решением и стала RTX IO — набор технологий, который подключает к задачам распаковки вычислительную мощность GPU. В связке в последними NVMe SSD такой подход снимает нагрузку с процессора, благодаря чему повышается общая производительность системы.

Fp16 fp32 fp64 что это. Смотреть фото Fp16 fp32 fp64 что это. Смотреть картинку Fp16 fp32 fp64 что это. Картинка про Fp16 fp32 fp64 что это. Фото Fp16 fp32 fp64 что это

Поддержка разъемов DisplayPort 1.4a и HDMI 2.1 с DSC 1.2a. Геймерам открывается возможность играть на дисплеях с разрешениями 4K (120 Гц) и 8K (60 Гц).

NVLink — третье поколение. Для специфических задач одной видеокарты будет недостаточно, из-за чего появляется необходимость соединить пару ускорителей. Новое поколение NVlink предлагает скорость обмена в любую сторону для одного канал на уровне в 14,06 ГБ/с. При использовании всех четырех каналов суммарная пропускная способность составляет 56,25 ГБ/с. С помощью NVLink можно без труда объединить пару топовых RTX 3090.

PCI Express 4.0. Обеспечивает удвоенную пропускную способность в сравнении с предыдущей версией. Пиковый показатель составляет 64 ГБ/с.

DLSS 8K. Разрешение в 8К во времена Turing было лишь недостижимой мечтой. Однако с появлением тензорных ядер нового поколения и других усовершенствований видеокарты на архитектуре Ampere вполне могут справиться с этой задачей и во многом благодаря технологии DLSS. Масштабирование сверхразрешения позволяет обеспечить стабильные 60 кадров в секунду в большинстве последних игр.

Fp16 fp32 fp64 что это. Смотреть фото Fp16 fp32 fp64 что это. Смотреть картинку Fp16 fp32 fp64 что это. Картинка про Fp16 fp32 fp64 что это. Фото Fp16 fp32 fp64 что это

Новейший NVDEC — аппаратно-ускоренное декодирование. Для снижения нагрузки с процессора и графического движка разработчики придумали данную технологию. В Ampere используется уже пятое поколение NVDEC. С ее помощью декодирование видео выполняется намного быстрее, благодаря чему видеокарты могут использоваться не только для просмотра видео, но и даже для транскодирования. Включена поддержка основных популярных кодеков, нескольких типов глубины цвета, а также поддержка разрешений до 8К.

Fp16 fp32 fp64 что это. Смотреть фото Fp16 fp32 fp64 что это. Смотреть картинку Fp16 fp32 fp64 что это. Картинка про Fp16 fp32 fp64 что это. Фото Fp16 fp32 fp64 что это

Архитектура Ampere в сравнении с Turing обеспечила общий прирост производительности до двух раз при программируемом затенении, трассировке лучей и обучении искусственного интеллекта. Преимущества также распространяются на приложения для вычислений и трассировки лучей, за счет чего в играх становится возможной фотореалистичная графика с высоким FPS.

Источник

Что такое тензорные ядра: вычисления со смешанной точностью

Fp16 fp32 fp64 что это. Смотреть фото Fp16 fp32 fp64 что это. Смотреть картинку Fp16 fp32 fp64 что это. Картинка про Fp16 fp32 fp64 что это. Фото Fp16 fp32 fp64 что это

В течение последних трёх лет Nvidia создавала графические чипы, в которых помимо обычных ядер, используемых для шейдеров, устанавливались дополнительные. Эти ядра, называемые тензорными, уже есть в тысячах настольных PC, ноутбуков, рабочих станций и дата-центров по всему миру. Но что же они делают и для чего применяются? Нужны ли они вообще в графических картах?

Сегодня мы объясним, что такое тензор, и как тензорные ядра используются в мире графики и глубокого обучения.

Краткий урок математики

Чтобы понять, чем же заняты тензорные ядра и для чего их можно использовать, нам сначала разобраться, что такое тензоры. Все микропроцессоры, какую бы задачу они ни выполняли, производят математические операции над числами (сложение, умножение и т.д.).

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

Fp16 fp32 fp64 что это. Смотреть фото Fp16 fp32 fp64 что это. Смотреть картинку Fp16 fp32 fp64 что это. Картинка про Fp16 fp32 fp64 что это. Фото Fp16 fp32 fp64 что это

Простейший тип тензора имеет нулевую размерность и состоит из единственного значения; иначе он называется скалярной величиной. При увеличении количества размерностей мы сталкиваемся с другими распространёнными математическими структурами:

Одна из самых важных математических операций, выполняемых над матрицами — это умножение (или произведение). Давайте взглянем на то, как перемножаются друг на друга две матрицы, имеющие по четыре строки и столбца данных:

Fp16 fp32 fp64 что это. Смотреть фото Fp16 fp32 fp64 что это. Смотреть картинку Fp16 fp32 fp64 что это. Картинка про Fp16 fp32 fp64 что это. Фото Fp16 fp32 fp64 что это

Окончательным результатом умножения всегда будет то же количество строк, что и в первой матрице, и то же количество столбцов, что и во второй. Как же перемножить эти два массива? Вот так:

Fp16 fp32 fp64 что это. Смотреть фото Fp16 fp32 fp64 что это. Смотреть картинку Fp16 fp32 fp64 что это. Картинка про Fp16 fp32 fp64 что это. Фото Fp16 fp32 fp64 что это

На пальцах это посчитать не удастся

Как вы видите, вычисление «простого» произведения матриц состоит из целой кучи небольших умножений и сложений. Так как любой современный центральных процессор может выполнять обе эти операции, простейшие тензоры способен выполнять каждый настольный компьютер, ноутбук или планшет.

Однако показанный выше пример содержит 64 умножений и 48 сложений; каждое небольшое произведение даёт значение, которое нужно где то хранить, прежде чем его можно будет сложить с другими тремя небольшими произведениями, чтобы позже можно было сохранить окончательное значение тензора. Поэтому, несмотря на математическую простоту умножений матриц, они затратны вычислительно — необходимо использовать множество регистров, а кэш должен уметь справляться с кучей операций считывания и записи.

Fp16 fp32 fp64 что это. Смотреть фото Fp16 fp32 fp64 что это. Смотреть картинку Fp16 fp32 fp64 что это. Картинка про Fp16 fp32 fp64 что это. Фото Fp16 fp32 fp64 что это

Архитектура Intel Sandy Bridge, в которой впервые появились расширения AVX

На протяжении многих лет в процессорах AMD и Intel появлялись различные расширения (MMX, SSE, а теперь и AVX — все они являются SIMD, single instruction multiple data), позволяющие процессору одновременно обрабатывать множество чисел с плавающей запятой; это как раз то, что требуется для перемножения матриц.

Но существует особый тип процессоров, который специально спроектирован для обработки операций SIMD: графические процессоры (graphics processing unit, GPU).

Умнее, чем обычный калькулятор?

В мире графики одновременно необходимо передавать и обрабатывать огромные объёмы информации в виде векторов. Благодаря своей способности параллельной обработки GPU идеально подходят для обработки тензоров; все современные графические процессоры поддерживают функциональность под названием GEMM (General Matrix Multiplication).

Это «склеенная» операция, при которой перемножаются две матрицы, а результат затем накапливается с другой матрицей. Существуют важные ограничения на формат матриц и все они связаны с количеством строк и столбцов каждой матрицы.

Fp16 fp32 fp64 что это. Смотреть фото Fp16 fp32 fp64 что это. Смотреть картинку Fp16 fp32 fp64 что это. Картинка про Fp16 fp32 fp64 что это. Фото Fp16 fp32 fp64 что это

Требования GEMM к строкам и столбцам: матрица A(m x k), матрица B(k x n), матрица C(m x n)

Алгоритмы, используемые для выполнения операций с матрицами, обычно лучше всего работают, когда матрицы квадратные (например, массив 10 x 10 будет работать лучше, чем 50 x 2) и довольно небольшие по размеру. Но они всё равно будут работать лучше, если обрабатываются на оборудовании, которое предназначено исключительно для таких операций.

В декабре 2017 года Nvidia выпустила графическую карту с GPU, имеющим новую архитектуру Volta. Она была нацелена на профессиональные рынки, поэтому этот чип не использовался в моделях GeForce. Уникальным он был потому, что стал первым графическим процессором, имеющим ядра только для выполнения тензорных вычислений.

Fp16 fp32 fp64 что это. Смотреть фото Fp16 fp32 fp64 что это. Смотреть картинку Fp16 fp32 fp64 что это. Картинка про Fp16 fp32 fp64 что это. Фото Fp16 fp32 fp64 что это

Графическая карта Nvidia Titan V, на которой установлен чип GV100 Volta. Да на ней можно запустить Crysis

Тензорные ядра Nvidia были предназначены для выполнения по 64 GEMM за тактовый цикл с матрицами 4 x 4, содержащими значения FP16 (числа с плавающей запятой размером 16 бит) или умножение FP16 со сложением FP32. Такие тензоры очень малы по размеру, поэтому при обработке настоящих множеств данных ядра обрабатывают небольшие части больших матриц, выстраивая окончательный ответ.

Менее года спустя Nvidia выпустила архитектуру Turing. На этот раз тензорные ядра были установлены и в модели GeForce потребительского уровня. Система была улучшена для поддержки других форматов данных, например, INT8 (8-битное целочисленное значение), но во всём остальном они работали так же, как в Volta.

Fp16 fp32 fp64 что это. Смотреть фото Fp16 fp32 fp64 что это. Смотреть картинку Fp16 fp32 fp64 что это. Картинка про Fp16 fp32 fp64 что это. Фото Fp16 fp32 fp64 что это

В начале этого года архитектура Ampere дебютировала в графическом процессоре дата-центра A100, и на этот раз Nvidia повысила производительность (256 GEMM за цикл вместо 64), добавила новые форматы данных и возможность очень быстрой обработки разреженных тензоров (sparse tensor) (матриц со множеством нулей).

Программисты могут получить доступ к тензорным ядрам чипов Volta, Turing и Ampere очень просто: код всего лишь должен использовать флаг, сообщающий API и драйверам, что нужно применять тензорные ядра, тип данных должен поддерживаться ядрами, а размерности матриц должны быть кратными 8. При выполнении всех этих условий всем остальным займётся оборудование.

Всё это здорово, но насколько тензорные ядра лучше в обработке GEMM, чем обычные ядра GPU?

Когда появилась Volta, сайт Anandtech провёл математические тесты трёх карт Nvidia: новой Volta, самой мощной из линейки Pascal и старой карты Maxwell.

Fp16 fp32 fp64 что это. Смотреть фото Fp16 fp32 fp64 что это. Смотреть картинку Fp16 fp32 fp64 что это. Картинка про Fp16 fp32 fp64 что это. Фото Fp16 fp32 fp64 что это

Понятие точности (precision) относится к количеству бит, использованных для чисел с плавающей запятой в матрицах: двойная (double) обозначает 64, одиночная (single) — 32, и так далее. По горизонтальной оси отложено максимальное количество операций с плавающей запятой, выполняемое за секунду, или сокращённо FLOPs (помните, что одна GEMM — это 3 FLOP).

Просто взгляните на результаты при использовании тензорных ядер вместо так называемых ядер CUDA! Очевидно, что они потрясающе справляются с подобной работой, но что же мы можем делать при помощи тензорных ядер?

Математика, делающая всё лучше

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

Ещё одна область, в которой любят применять тензоры — это машинное обучение, особенно её подраздел «глубокое обучение». Его смысл сводится к обработке огромных наборов данных в гигантских массивах, называемых нейронными сетями. Соединениям между различными значениями данных задаётся определённый вес — число, выражающее важность конкретного соединения.

Fp16 fp32 fp64 что это. Смотреть фото Fp16 fp32 fp64 что это. Смотреть картинку Fp16 fp32 fp64 что это. Картинка про Fp16 fp32 fp64 что это. Фото Fp16 fp32 fp64 что это

Поэтому когда нам нужно разобраться, как взаимодействуют все эти сотни, если не тысячи соединений, нужно умножить каждый элемент данных в сети на все возможные веса соединений. Другими словами, перемножить две матрицы, а это классическая тензорная математика!

Fp16 fp32 fp64 что это. Смотреть фото Fp16 fp32 fp64 что это. Смотреть картинку Fp16 fp32 fp64 что это. Картинка про Fp16 fp32 fp64 что это. Фото Fp16 fp32 fp64 что это

Чипы Google TPU 3.0, закрытые системой водяного охлаждения

Именно поэтому во всех суперкомпьютерах глубокого обучения используются GPU, и почти всегда это Nvidia. Однако некоторые компании даже разработали собственные процессоры из тензорных ядер. Google, например, в 2016 году объявила о разработке своего первого TPU (tensor processing unit), но эти чипы настолько специализированные, что не могут выполнять ничего, кроме операций с матрицами.

Тензорные ядра в потребительских GPU (GeForce RTX)

Но что если я куплю графическую карту Nvidia GeForce RTX, не являясь ни астрофизиком, решающим задачи римановых многообразий, ни специалистом, экспериментирующим с глубинами свёрточных нейронных сетей. Как я могу использовать тензорные ядра?

Чаще всего они не применяются для обычного рендеринга, кодирования или декодирования видео, поэтому может показаться, что вы потратили деньги на бесполезную функцию. Однако Nvidia встроила тензорные ядра в свои потребительские продукты в 2018 году (Turing GeForce RTX), внедрив при этом DLSS — Deep Learning Super Sampling.

Fp16 fp32 fp64 что это. Смотреть фото Fp16 fp32 fp64 что это. Смотреть картинку Fp16 fp32 fp64 что это. Картинка про Fp16 fp32 fp64 что это. Фото Fp16 fp32 fp64 что это

Принцип прост: рендерим кадр в довольно низком разрешении, а после завершения повышаем разрешение конечного результата так, чтобы он совпадал с «родными» размерами экрана монитора (например, рендерим в 1080p, а затем изменяем размер до 1400p). Благодаря этому повышается производительность, ведь обрабатывается меньшее количество пикселей, а на экране всё равно получается красивое изображение.

Консоли имели такую функцию уже многие годы, и многие современные игры для PC тоже обеспечивают эту возможность. В Assassin’s Creed: Odyssey компании Ubisoft можно уменьшить разрешение рендеринга до всего 50% от разрешения монитора. К сожалению, результаты выглядят не так красиво. Вот как игра выглядит в 4K с максимальными настройками графики:

Fp16 fp32 fp64 что это. Смотреть фото Fp16 fp32 fp64 что это. Смотреть картинку Fp16 fp32 fp64 что это. Картинка про Fp16 fp32 fp64 что это. Фото Fp16 fp32 fp64 что это

В высоких разрешениях текстуры выглядят красивее, потому что сохраняют в себе больше деталей. Однако для вывода этих пикселей на экран требуется много обработки. Теперь взгляните на то, что происходит при установке рендеринга на 1080p (25% от предыдущего количества пикселей), с использованием шейдеров в конце для растягивания картинки до 4K.

Fp16 fp32 fp64 что это. Смотреть фото Fp16 fp32 fp64 что это. Смотреть картинку Fp16 fp32 fp64 что это. Картинка про Fp16 fp32 fp64 что это. Фото Fp16 fp32 fp64 что это

Из-за сжатия jpeg разница может быть заметной не сразу, но видно, что броня персонажа и скала вдали выглядят размытыми. Давайте приблизим часть изображения для более детального изучения:

Fp16 fp32 fp64 что это. Смотреть фото Fp16 fp32 fp64 что это. Смотреть картинку Fp16 fp32 fp64 что это. Картинка про Fp16 fp32 fp64 что это. Фото Fp16 fp32 fp64 что это

Изображение слева отрендерено в 4K; изображение справа — это 1080p, растянутые до 4K. Разница гораздо заметнее в движении, потому что смягчение всех деталей быстро превращается в размытую кашу. Частично чёткость можно восстановить благодаря эффекту резкости драйверов графической карты, но лучше бы нам вообще не приходилось этим не заниматься.

Именно здесь в ход идёт DLSS — в первой версии этой технологии Nvidia анализировались несколько выбранных игр; они запускались в высоких разрешениях, низких разрешениях, со сглаживанием и без него. Во всех этих режимах был сгенерирован набор изображений, загруженный затем в суперкомпьютеры компании, которые использовали нейронную сеть, чтобы определить, каким образом лучше всего превратить изображение в разрешении 1080p в идеальную картинку в более высоком разрешении.

Fp16 fp32 fp64 что это. Смотреть фото Fp16 fp32 fp64 что это. Смотреть картинку Fp16 fp32 fp64 что это. Картинка про Fp16 fp32 fp64 что это. Фото Fp16 fp32 fp64 что это

Нужно сказать, что DLSS 1.0 не был идеальным: детали часто терялись и в некоторых местах возникало странное мерцание. К тому же он не использовал сами тензорные ядра графической карты (он выполнялся в сети Nvidia) и каждой игре с поддержкой DLSS для генерации алгоритма повышения масштаба требовалось отдельное исследование компанией Nvidia.

Fp16 fp32 fp64 что это. Смотреть фото Fp16 fp32 fp64 что это. Смотреть картинку Fp16 fp32 fp64 что это. Картинка про Fp16 fp32 fp64 что это. Фото Fp16 fp32 fp64 что это

Когда в начале 2020 года вышла версия 2.0, в неё были внесены серьёзные улучшения. Самым важным стало то, что суперкомпьютеры Nvidia теперь использовались только для создания общего алгоритма увеличения масштаба — в новой версии DLSS для обработки пикселей с помощью нейронной модели (тензорными ядрами GPU) используются данные из отрендеренного кадра.

Fp16 fp32 fp64 что это. Смотреть фото Fp16 fp32 fp64 что это. Смотреть картинку Fp16 fp32 fp64 что это. Картинка про Fp16 fp32 fp64 что это. Фото Fp16 fp32 fp64 что это

Нас впечатляют возможности DLSS 2.0, но пока его поддерживает очень мало игр — на момент написания статьи их было всего 12. Всё больше разработчиков хочет реализовать его в своих будущих играх, и на то есть причины.

Благодаря любому увеличению масштаба можно добиться серьёзного роста производительности, поэтому можно быть уверенными, что DLSS продолжит эволюционировать.

Fp16 fp32 fp64 что это. Смотреть фото Fp16 fp32 fp64 что это. Смотреть картинку Fp16 fp32 fp64 что это. Картинка про Fp16 fp32 fp64 что это. Фото Fp16 fp32 fp64 что это

Хотя визуальные результаты работы DLSS не всегда идеальны, освободив занятые рендерингом ресурсы, разработчики смогут добавить больше визуальных эффектов или обеспечить один уровень графики на более широком диапазоне платформ.

Например, DLSS часто рекламируют вместе с трассировкой лучей (ray tracing) в играх с «поддержкой RTX». Карты GeForce RTX содержат дополнительные вычислительные блоки, называемые RT-ядрами, это специализированные логические блоки для ускорения вычислений пересечения луча с треугольником и обхода иерархии ограничивающих объёмов (bounding volume hierarchy, BVH). Эти два процесса являются очень длительными процедурами, определяющими способ взаимодействия света с другими объектами сцены.

Как мы выяснили, ray tracing — очень трудоёмкий процесс, поэтому чтобы обеспечить в играх приемлемый уровень частоты кадров, разработчики должны ограничить количество лучей и выполняемых в сцене отражений. При выполнении этого процесса могут создаваться зернистые изображения, поэтому необходимо применять алгоритм устранения шумов, что повышает сложность обработки. Ожидается, что тензорные ядра повысят производительность этого процесса благодаря устранению шумов с использованием ИИ, однако это ещё предстоит реализовать: большинство современных приложений по-прежнему использует для этой задачи ядра CUDA. С другой стороны, благодаря тому, что DLSS 2.0 становится вполне практичной техникой повышения размера, тензорные ядра можно будет эффективно использовать для повышения частоты кадров после применения в сцене трассировки лучей.

Существуют и другие планы по использованию тензорных ядер карт GeForce RTX, например, улучшение анимаций персонажей или симуляция тканей. Но как и в случае с DLSS 1.0, пройдёт ещё немало времени, прежде чем появятся сотни игр, использующие специализированные матричные вычисления на GPU.

Многообещающее начало

Итак, ситуация такова — тензорные ядра, отличные аппаратные блоки, которые, однако, встречаются только в некоторых картах потребительского уровня. Изменится ли что-то в будущем? Так как Nvidia уже значительно улучшила производительность каждого тензорного ядра в своей архитектуре Ampere, есть большая вероятность того, что они будут устанавливаться и в модели нижнего и среднего ценового уровня.

Хотя таких ядер пока нет в GPU компаний AMD и Intel, возможно, в будущем мы их увидим. У AMD есть система повышения резкости или улучшения деталей в готовых кадрах ценой небольшого снижения производительности, поэтому компания, возможно, будет придерживаться этой системы, особенно учитывая то, что её не нужно интегрировать разработчикам, достаточно включить её в драйверах.

Существует также мнение, что пространство на кристаллах в графических чипах лучше было бы потратить на дополнительные шейдерные ядра — так поступила Nvidia при создании бюджетных версий своих чипов Turing. В таких продуктах, как GeForce GTX 1650, компания полностью отказалась от тензорных ядер и заменила их дополнительными FP16-шейдерами.

Но пока, если вы хотите обеспечить сверхбыструю обработку GEMM и воспользоваться всеми её преимуществами, то у вас есть два варианта: купить кучу огромных многоядерных CPU или просто один GPU с тензорными ядрами.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *