
Анонс видеокарт NVIDIA состоялся 1 сентября. Было представлено три модели игровых видеокарт GeForce: BFGPU RTX 3090, RTX 3080 и RTX 3070. Генеральный директор NVIDIA, Дженсен Хуанг (англ. Jen-Hsun Huang), рассказал сообществу о главных достоинствах новой архитектуры, а после онлайн-конференции появились подробные спецификации видеокарт, которые удивили многих.
10496, 8704 и 5888 CUDA-ядер!

Шокирующим стало количество CUDA-ядер, которое по непонятным причинам удвоилось. За несколько дней до анонса некоторые партнеры NVIDIA опубликовали характеристики своих графических решений, в которых подтверждалась ранняя информация о 5248 и 4352 CUDA-ядрах в графических чипах RTX 3090 и RTX 3080. Но в официальных характеристиках количество CUDA-ядер составляло 10496 и 8704. Несмотря на большое количество новостей от инсайдеров, лишь немногие вспомнили о том, что задолго до анонса озвучивал известный инсайдер @kopite7kimi и @KittyYYuko.
А что говорят инсайдеры?
В нескольких постах @kopite7kimi и @KittyYYuko сообщалось, что производительность видеокарт Ampere странным образом «искажена» по сравнению с видеокартами Turing — наблюдалось удвоение производительности в операциях с плавающей точкой, когда производительность по другим операциям была схожа с производительностью Turing. Эта информация и различие характеристик, представленных NVIDIA и ее партнерами, требовала детального изучения архитектуры, но официальной документации по видеокартам GeForce Ampere еще нет. О некоторых особенностях рассказали специалисты портала DigitalFoundry в своем обзоре, а затем и официальные представители NVIDIA объяснили в чем кроется подвох.
Вспомним Turing
Для начала вспомним об архитектуре Turing. В графических чипах Turing каждый потоковый мультипроцессор (Streaming Multiprocessor, SM) содержит четыре процессора, в которых располагаются CUDA-ядра. В архитектуре Turing каждый процессор располагает блоком для выполнения операций с плавающей точкой FP32 и блоком для выполнения целочисленных операций INT32. В каждом блоке насчитывается по 16 CUDA-ядер. Каждый блок имеет свой канал данных, что позволяет выполнять операции FP32 и INT32 одновременно. В общем итоге один мультипроцессор содержит 64 CUDA-ядра FP32 и 64 CUDA-ядра INT32, имея возможность выполнять 64 FP32 и 64 INT32 операции за такт.
Знакомимся с Ampere

В архитектуре Ampere для игровых видеокарт ситуация изменилась. Ясность внес Тони Тамаси (англ. Tony Tamasi), старший вице-президент по контенту и технологиям NVIDIA. Он сообщил на официальном канале NVIDIA в Reddit, что в новой архитектуре изменилась структура каналов данных и был добавлен дополнительный блок для выполнения операций FP32. В одном процессоре находится два канала данных, как и в Turing, но теперь в одном канале объединены 16 CUDA-ядер FP32 и 16 CUDA-ядер INT32, а другой канал по-прежнему содержит только 16 CUDA-ядер FP32. В результате новый дизайн позволяет в одном процессоре за один такт выполнять 32 операции FP32 или 16 FP32 и 16 INT32 операций. В одном потоковом мультипроцессоре за такт может выполняться 128 FP32 операций или 64 FP32 и 64 INT32 операции.
Так сколько CUDA-ядер?!
Расчет CUDA-ядер для спецификаций ведется только по CUDA-ядрам FP32, поэтому для определения общего числа CUDA-ядер GeForce RTX 3090 необходимо число потоковых мультипроцессоров, которое равно 82, умножить на 128 CUDA-ядер FP32 в одном мультипроцессоре. В результате получаем 10496 ядер.
В ближайшие дни станет доступна полная документация по графическим чипам Ampere для игровых видеокарт. Она раскроет все подробности новейшей архитектуры NVIDIA.