Страница 2: Архитектура Ampere для GeForce GPU
GA102 GPU на видеокарте GeForce RTX 3080 базируется на архитектуре Ampere, которая отличается от версии для дата-центров в GA100 GPU.
Streaming Multiprocessor (SM) в архитектуре Ampere почти полностью лишился вычислительных блоков FP64, которые в составе GA100 GPU весьма важны для высокопроизводительных вычислений HPC, чего нельзя сказать о потребительском сегменте. Вычисления с двойной точностью выполняются в 1/60 производительности от вычислений FP32.
Зато число вычислительных блоков FP32 было удвоено. Вместо 64 блоков FP32 на SM теперь доступны 128, а также 64 блока INT32. Параллельно поддерживается выполнение двух путей данных. Первый путь состоит из 16 блоков FP32. Так что здесь можно выполнять 16 вычислений FP32 за такт. Второй путь состоит из 16 блоков FP32 и 16 INT32. Каждая четверть SM может выполнять либо 32 операции FP32, либо 16 операций FP32 и 16 INT32 за такт. Для SM целиком это означает 128 операций FP32 или 64 операции FP32 и 64 INT32 за такт.
GA102 GPU содержит семь кластеров GPC (Graphics Processing Clusters) с 12 SM в каждом. Но вне все SM активны на GeForce RTX 3090 и GeForce RTX 3080. GA102 GPU теоретически может оснащаться 10.752 блоками FP32 (7 GPCs x 12 SMs x 128 блоков FP32). Но в случае GeForce RTX 3090 отключены два SM, поэтому придется довольствоваться "всего" 10.496 блоками FP32. Таким образом NVIDIA удерживает высокую долю выхода годных кристаллов.
В случае GeForce RTX 3080 полностью отключен один GPC, кроме того на GA102 GPU из оставшихся шести GPC только четыре содержат полные 12 SM. Два GPC ограничены десятью SM. Что дает 8.704 блоков FP32 на 68 SM.
NVIDIA называет блоки FP32 ядрами a CUDA, так что можно говорить о 8.704 ядрах CUDA в случае GeForce RTX 3080. Но по сути они равны числу блоков FP32 в SM. Кроме того, отметим 4.352 блока INT32.
Каждый SM содержит по четыре ядра Tensor третьего поколения. Число ядер Tensor на SM было уполовинено, но они должны быть, как минимум, в два раза более производительны. Ядер RT на SM по-прежнему по одному, но во втором поколении ядер RT произошли некоторые улучшения.
Кроме изменений SM произошли оптимизации в структуре конвейеров растровых операций (ROP) и связи между ROP и контроллерами памяти. Вплоть до поколения Turing ROP всегда подключались к интерфейсу памяти. Использовалось восемь ROP на каждый 32-битный контроллер памяти. И если число контроллеров памяти, соответственно, объем памяти менялись, то же самое было верно и для ROP. В случае архитектуры Ampere ROP расположены в GPC. В каждом GPC есть два раздела ROP, по восемь конвейеров растровых операций каждый.
В результате расчет числа 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.
Кэши L1 и L2
В зависимости от стадии расширения, размеры кэшей L2 меняются. В случае GeForce RTX 3080 они составляют 5.120 кбайт, для GeForce RTX 3070 - 4.096 кбайт, у GeForce RTX 3090 - 6.144 кбайт. Для сравнения, у TU102 GPU кэш составлял 6.144 кбайт.
NVIDIA увеличила кэш данных L1 с архитектурой Ampere с 96 кбайт до 128 кбайт. Пропускная способность кэша L1 была вновь удвоена. NVIDIA уже пошла на такой шаг при переходе с Pascal на Turing. Файл регистров остался прежним с 16.384 32-битными записями. То же самое касается блоков загрузки/выгрузки (Load/Store).
Наконец, мы можем привести полную диаграмму GA102 GPU, который используется на видеокарте GeForce RTX 3090.
Второе поколение ядер RT
Второе поколение ядер RT способно выполнять в два раза больше расчетов пересечений, чем первое. Поскольку NVIDIA не изменила число ядер RT на SM, теоретическое масштабирование производительности RT двукратное. Конечно, если у видеокарты будет больше SM, то и производительность будет выше.
Проблема с расчетом пересечений при трассировке лучей возникает в случае движущихся объектов, а также с наложенным эффектом размыванием движения Motion Blur. В случае Turing GPU или их ядер RT здесь могло возникнуть "узкое место" по производительности трассировки лучей. Второе поколение ядер RT имеет параллельные блоки, которые отвечают за интерполяцию с эффектом Motion Blur. Пересечения рассчитываются упреждающе на основе алгоритмов, в результате трассировка лучей выполняется только там, где нужно.
Третье поколение ядер Tensor
Как и предполагалось, NVIDIA продолжила усиливать ядра Tensor третьего поколения. Кроме вычислений INT16 и FP16 они теперь могут выполнять вычисления FP32 и FP64. Что важно, прежде всего, для сегмента HPC, где требуются вычисления с высокой точностью. В случае же GeForce GPU в приоритете остаются вычисления с меньшей точностью.
Ядра Tensor архитектуры Turing могут выполнять 64 операции FP16 Fused Multiply-Add (FMA) на ядро Tensor. В случае Ampere и полностью заполненных матриц (Dense) мы получаем 128 операций на GA102 GPU и даже 256 на GA100 GPU. В случае разреженных матриц (Sparse) производительность составляет 256 FP16 FMA для GA102 GPU и 512 для GA100 GPU. Ядра Tensor архитектуры Turing не поддерживают разреженные матрицы.
Что увеличивает вычислительную производительность ядер Tensor не менее чем в два раза. Сильнее всего здесь должна выиграть производительность DLSS, но теоретически получат прирост и приложения искусственного интеллекта.