Nvidia Turing GPU

Паонкин А. В.,
ВМК МГУ,
Москва, 2018


1. Введение

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

NVIDIA GPUs  следуют  программной архитектуре SIMT (Single-Instruction, Multiple-Thread). NVIDIA GPU состоят из нескольких Streaming Multiprocessors(SMs), способных выполнять сотни потоков (threads) одновременно. Мультипроцессор создает, управляет, ставит в очередь и выполняет потоки группами по 32. Такие группы называются варпами (warps). Каждый поток в варпе начинает исполнение с одинакового программного адреса, но у них свои состояния регистров, счетчики адрессов и поэтому поток может осуществлять ветвление. Варп выполняет одну инструкцию за раз, поэтому максимальная эффективность достигается на участках кода без ветвления. Иначе каждая ветка исполняется по очереди, но всё же параллельно.
    
GPU позволяют достичь на некоторых задачах впечатляющих результатов, но существуют и принципиальные ограничения, не позволяющие этой технологии стать универсальной. Приведем лишь некоторые из них:

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

2. Nvidia Turing

Nvidia Turing -- последняя на данный момент микроархитектура, разработанная компанией NVIDIA. Предыдущая архитектура Volta фокусировалась на ИИ и высокопроизводительных вычислениях, но большинство поддерживаемых архитектурой функций не были нужны в игровой индустрии. Например, отдельные блоки для арифметики с плавающей точкой. Turing же больше направлен на широкое потребление, чем на HPC. В семействе можно выделить несколько ключевых изменений: появление новых вычислительных блоков: тензорных и RT ядер, новая память и архитектура SM.

Рис. 1: TU102 -- GPU архитектуры Turing

Старший GPU TU102 в данной архитектуре содержит  6 Graphics Processing Clusters (GPC). Каждый кластер  содержит блок растеризации и 6 TPC (Texture Processing Clusters), каждый TPC в свою очередь содержит 2 Streaming multiprocessors.  В одном SM насчитывается 64 CUDA ядра. И теперь целочисленные операции (INT32) и операции с плавающей запятой (FP32) выполняются параллельно. Профилирование многих приложений на GPU показывает, что в среднем 36 целочисленных операций приходится на 100 с плавающей точкой. Каждый потоковый мультипроцессор также содержит 8 тензорных ядер для матричных вычислений,  регистровые файлы размером 256 KB, 4 текстурных юнита(texture units), 96 KB L1/разделяемой памяти. Трассировка лучей выполняется с помощью новых  специальных ядер (RT Cores).

Итак, TU102 GPU содержит:

  • 4,608 CUDA ядер
  • 72 RT ядер
  • 576 тензорных ядер
  • 288 текстурных юнитов
  • 12 32-bit контроллеров памяти GDDR6

TU102 GPU включает 96 Rendering output units и 6144 KB L2 кэша.

Turing SM разбит на четыре блока, каждый с 16 FP32, 16 INT32 и 2 Тензорными ядрами, одним планировщиком(warp scheduler) и одним dispatch unit. Каждый блок включает новый L0 кэш инструкций и регистровый файл размером 64 KB. Четыре блока делят 96 KB кэша данных L1 /разделяемой памяти. Раньше кэшу данных отводилось 64 KB, разделяемой памяти -- 32 KB, теперь же распределение происходит динаминически(64/32 или 32/64) и зависит от вычислительной нагрузки.

Рис. 2: Turing TU102/TU104/TU106 Streaming Multiprocessor (SM)

Тензорные ядра -- специальные вычислительные блоки для тензорных / матричных операций, являющимися ключевыми в области Глубокого Обучения. Дизайн тензорных ядер был улучшен по сравнению с архитектурой Volta GPUs. Самое главное изменение: добавлены новые режимы работы(INT8 и INT4).

Turing -- первая GPU архитектура, поддерживающая память GDDR6. GDDR6 достигает  скорости 14 Gb/s и на 20\% энергоэффективнее по сравнению с памятью GDDR5X, используемой в Pascal GPUs.

3. Сравнение Turing с Pascal и Volta

Рис. 3: Сравнение Turing RTX 2080 и Pascal GTX 1080

Сравнение архитектур
GPU Architecture Pascal Volta Turing
GPU Manufacturer Nvidia Nvidia Nvidia
Fabrication Process 14nm / 16nm 12nm 12nm
CUDA Cores Yes Yes Yes
Tensor Cores NA Yes Yes
RT Cores NA NA Yes
Memory support DDR4, GDDR5, GDDR5X, HBM2 HBM2 GDDR6
VR Ready Yes Yes Yes
VirtualLink (USB Type-C) NA NA Yes
Multi-GPU support Yes (in high end cards), SLI and NVLink NVLink 2 NVLink 2 / NVLink SLI
Graphics Cards GeForce 10 series, Nvidia Titan X, Nvidia Titan Xp, Quadro P series workstation graphics cards, Quadro GP100 Nvidia Titan V, Quadro GV100 Quadro RTX 8000, Quadro RTX 6000, Quadro RTX 5000 / RTX series graphics cards
Applications Gaming, Workstation Artificial Intelligence (AI), Workstation, Datacenter Artificial Intelligence (AI), Workstation, Gaming

 

GTX 1080Ti vs RTX 2080 vs RTX 2080Ti vs Titan V производительность на TensorFlow (Изображение в секунду)

GPU FP32 FP16
GTX 1080 Ti 207 NA
RTX 2080 207 332
RTX 2080 Ti 280 437
Titan V 299 547

4. Средства программирования

Наиболее известными инструментами создания программ, исполняемых на Turing GPU, являются расширения языков C и C++: OpenCL, CUDA, OpenACC. Первая библиотека полезна для создания программ, способных выполняться на различных конфигурациях из графических и центральных процессоров, а также FPGA. CUDA предназначен исключительно для Nvidia GPU, но предоставляет больше функций и традиционно быстрее программ, написанных на OpenCL, при исполнении на архитектурах NVIDIA. Программная архитектура OpenCL похожа на архитектуру CUDA, что позволяет переписать программу с одной платформы на другую.

 

Источники

  1. https://wccftech.com/review/nvidia-geforce-rtx-2080-ti-and-rtx-2080-review/2/
  2. https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html
  3. https://www.nvidia.com/content/dam/en-zz/Solutions/design-visualization/technologies/turing-architecture/NVIDIA-Turing-Architecture-Whitepaper.pdf
  4. https://habr.com/post/117021/
  5. https://www.ixbt.com/news/2018/08/22/nvidia-turing-pascal.html
  6. https://www.pugetsystems.com/labs/hpc/NVIDIA-RTX-2080-Ti-vs-2080-vs-1080-Ti-vs-Titan-V-TensorFlow-Performance-with-CUDA-10-0-1247/