NVIDIA объяснила, почему в видеокартах GeForce RTX 30 так много CUDA-ядер

Анонс видеокарт 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.

Источник



Что такое ядра CUDA и как они улучшают компьютерные игры?

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

Это все изменится. Мы расскажем вам об основах ядер CvA от Nvidia и о том, как они помогают вашему ПК лучше воспроизводить графику.

Что такое ядра CUDA?

Ядра CUDA звучат круто, но они, к сожалению, не имеют ничего общего с барракудой. CUDA расшифровывается как «Compute Unified Device Architecture», которая мало что объясняет, что конкретно делают ядра CUDA. Эти высокотехнологичные ядра фактически специализируются на параллельной обработке. Другими словами, они способны работать вместе, чтобы выполнить задачу.

Вы знакомы с тем, как работают процессоры?

Что такое процессор и что он делает?

Что такое процессор и что он делает?
Вычислительные сокращения сбивают с толку. Что такое процессор в любом случае? И нужен ли мне четырехъядерный или двухъядерный процессор? Как насчет AMD или Intel? Мы здесь, чтобы помочь объяснить разницу!
Прочитайте больше

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

Ядра CUDA работают так же, как и ядра ЦП (за исключением того, что они находятся внутри графических процессоров). Хотя вы обычно можете подсчитать количество ядер ЦП на обеих руках, количество ядер CUDA в графическом процессоре может исчисляться сотнями или тысячами. Как правило, вы не увидите GPU только с одним ядром CUDA — у GPU обычно их сотни и более.

Поскольку ядра CUDA намного меньше, чем ядра ЦП, вы можете разместить больше из них внутри графического процессора. Кроме того, графические карты, как правило, имеют большую площадь по сравнению с процессорами, что делает их достаточно просторными для размещения тысяч ядер CUDA.

Почему CUDA Core имеет значение в играх?

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

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

Ядра CUDA только выполняют задачи, связанные с графикой, и именно здесь ядра CUDA выделяются из ядер ЦП. В то время как ядра ЦП работают для выполнения различных несвязанных задач, ядрам CUDA приходится беспокоиться только о графике.

Что касается вашего игрового опыта, ядра CUDA помогают сделать вашу игру реалистичной, предоставляя графику с высоким разрешением, которая создает реалистичный 3D-эффект. Вы также заметите, что ваши игры выглядят более детально и имеют улучшенное освещение и затенение.

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

В чем разница между ядрами CUDA и потоковыми процессорами?

Если вы поклонник AMD, то, вероятно, вы знаете о потоковых процессорах AMD. Большинство людей знают потоковые процессоры как версию ядер CUDA от AMD, что по большей части верно.

Потоковые процессоры имеют то же назначение, что и ядра CUDA, но оба ядра работают по-разному. Ядра CUDA и потоковые процессоры определенно не равны друг другу — 100 ядер CUDA не эквивалентны 100 потоковым процессорам.

Похожее:  Драйвера на видеокарты AMD Radeon HD 8500 Series

Итак, что же отличает потоковые процессоры от ядер CUDA? В основном это связано с тем, как построен графический процессор. Структура графических процессоров AMD и Nvidia сильно различается, и это приводит к тому, что ядра работают по-разному.

Сколько ядер CUDA вам действительно нужно?

Чем больше у вас ядер CUDA, тем лучше будет ваш игровой опыт. Однако, если вы ищете доступную видеокарту

6 лучших бюджетных видеокарт для дешевых игр

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

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

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

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

Чтобы получить точное сравнение между двумя картами, вы должны взглянуть на тесты производительности

10 лучших бесплатных тестовых программ для Windows

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

Заменят ли когда-нибудь графические процессоры?

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

С начала 2000-х годов Nvidia работает над созданием графического процессора для общих вычислений. В 2003 году исследователи из Стэнфордского университета создали модель программирования под названием Brook, которая позволит Nvidia еще на шаг приблизиться к созданию универсального графического процессора. В то время некоторые люди думали, что внедрение Brook положит конец процессорам (как вы можете видеть, этого еще не произошло).

Лидер исследовательской группы, Ян Бак, в конце концов присоединился к Nvidia, начав рассказ о ядре CUDA. Nvidia выпустила CUDA в 2006 году, и с тех пор она доминирует в сфере глубокого обучения

Глубокое обучение против машинного обучения против искусственного интеллекта: как они идут вместе?

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

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

Обновление вашей видеокарты

Использование видеокарты, оснащенной ядрами CUDA, даст вашему ПК преимущество в общей производительности, а также в играх. Больше ядер CUDA означает более четкую и реалистичную графику. Только не забудьте учесть и другие особенности видеокарты.

Если все элементы работают вместе для достижения наилучшей производительности, вы будете знать, что сделали правильный выбор.

Не знаете, с чего начать поиск следующей видеокарты? Наше руководство по покупке видеокарт

Лучшие видеокарты для любого бюджета

Лучшие видеокарты для любого бюджета
Найти высокопроизводительный бюджетный графический процессор может быть непросто. Мы собрали лучшие видеокарты для любого бюджета.
Прочитайте больше

поможет вам сделать осознанную покупку, которая соответствует вашему бюджету.

Как пиратская игра престолов и другие шоу могут принести вам вредоносное ПО

Источник

Вычисления на графических процессорах

Технология CUDA (англ. Compute Unified Device Architecture) — программно-аппаратная архитектура, позволяющая производить вычисления с использованием графических процессоров NVIDIA, поддерживающих технологию GPGPU (произвольных вычислений на видеокартах). Архитектура CUDA впервые появились на рынке с выходом чипа NVIDIA восьмого поколения — G80 и присутствует во всех последующих сериях графических чипов, которые используются в семействах ускорителей GeForce, ION, Quadro и Tesla.

CUDA SDK позволяет программистам реализовывать на специальном упрощённом диалекте языка программирования Си алгоритмы, выполнимые на графических процессорах NVIDIA и включать специальные функции в текст программы на Cи. CUDA даёт разработчику возможность по своему усмотрению организовывать доступ к набору инструкций графического ускорителя и управлять его памятью, организовывать на нём сложные параллельные вычисления.

История

В 2003 г. Intel и AMD участвовали в совместной гонке за самый мощный процессор. За несколько лет в результате этой гонки тактовые частоты существенно выросли, особенно после выхода Intel Pentium 4.

После прироста тактовых частот (между 2001 и 2003 гг. тактовая частота Pentium 4 удвоилась с 1,5 до 3 ГГц), а пользователям пришлось довольствоваться десятыми долями гигагерц, которые вывели на рынок производители (с 2003 до 2005 гг.тактовые частоты увеличились 3 до 3,8 ГГц).

Архитектуры, оптимизированные под высокие тактовые частоты, та же Prescott, так же стали испытывать трудности, и не только производственные. Производители чипов столкнулись с проблемами преодоления законов физики. Некоторые аналитики даже предрекали, что закон Мура перестанет действовать. Но этого не произошло. Оригинальный смысл закона часто искажают, однако он касается числа транзисторов на поверхности кремниевого ядра. Долгое время повышение числа транзисторов в CPU сопровождалось соответствующим ростом производительности — что и привело к искажению смысла. Но затем ситуация усложнилась. Разработчики архитектуры CPU подошли к закону сокращения прироста: число транзисторов, которое требовалось добавить для нужного увеличения производительности, становилось всё большим, заводя в тупик.

Причина, по которой производителям GPU не столкнулись с этой проблемой очень простая: центральные процессоры разрабатываются для получения максимальной производительности на потоке инструкций, которые обрабатывают разные данные (как целые числа, так и числа с плавающей запятой), производят случайный доступ к памяти и т.д. До сих пор разработчики пытаются обеспечить больший параллелизм инструкций — то есть выполнять как можно большее число инструкций параллельно. Так, например, с Pentium появилось суперскалярное выполнение, когда при некоторых условиях можно было выполнять две инструкции за такт. Pentium Pro получил внеочередное выполнение инструкций, позволившее оптимизировать работу вычислительных блоков. Проблема заключается в том, что у параллельного выполнения последовательного потока инструкций есть очевидные ограничения, поэтому слепое повышение числа вычислительных блоков не даёт выигрыша, поскольку большую часть времени они всё равно будут простаивать.

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

GPU отличается от CPU не только этим. Доступ к памяти в GPU очень связанный — если считывается тексель, то через несколько тактов будет считываться соседний тексель; когда записывается пиксель, то через несколько тактов будет записываться соседний. Разумно организуя память, можно получить производительность, близкую к теоретической пропускной способности. Это означает, что GPU, в отличие от CPU, не требуется огромного кэша, поскольку его роль заключается в ускорении операций текстурирования. Всё, что нужно, это несколько килобайт, содержащих несколько текселей, используемых в билинейных и трилинейных фильтрах.

Похожее:  Рекомендованные цены на видеокарты и их реальная цена

Первые расчёты на GPU

Самые первые попытки такого применения ограничивались использованием некоторых аппаратных функций, таких, как растеризация и Z-буферизация. Но в нынешнем веке, с появлением шейдеров, начали ускорять вычисления матриц. В 2003 г. на SIGGRAPH отдельная секция была выделена под вычисления на GPU, и она получила название GPGPU (General-Purpose computation on GPU) — универсальные вычисления на GPU).

Наиболее известен BrookGPU — компилятор потокового языка программирования Brook, созданный для выполнения неграфических вычислений на GPU. До его появления разработчики, использующие возможности видеочипов для вычислений, выбирали один из двух распространённых API: Direct3D или OpenGL. Это серьёзно ограничивало применение GPU, ведь в 3D графике используются шейдеры и текстуры, о которых специалисты по параллельному программированию знать не обязаны, они используют потоки и ядра. Brook смог помочь в облегчении их задачи. Эти потоковые расширения к языку C, разработанные в Стэндфордском университете, скрывали от программистов трёхмерный API, и представляли видеочип в виде параллельного сопроцессора. Компилятор обрабатывал файл .br с кодом C++ и расширениями, производя код, привязанный к библиотеке с поддержкой DirectX, OpenGL или x86.

Появление Brook вызвал интерес у NVIDIA и ATI и в дальнейшем, открыл целый новый его сектор — параллельные вычислители на основе видеочипов.

В дальнейшем, некоторые исследователи из проекта Brook перешли в команду разработчиков NVIDIA, чтобы представить программно-аппаратную стратегию параллельных вычислений, открыв новую долю рынка. И главным преимуществом этой инициативы NVIDIA стало то, что разработчики отлично знают все возможности своих GPU до мелочей, и в использовании графического API нет необходимости, а работать с аппаратным обеспечением можно напрямую при помощи драйвера. Результатом усилий этой команды стала NVIDIA CUDA.

Области применения параллельных расчётов на GPU

При переносе вычислений на GPU, во многих задачах достигается ускорение в 5-30 раз, по сравнению с быстрыми универсальными процессорами. Самые большие цифры (порядка 100-кратного ускорения и даже более!) достигаются на коде, который не очень хорошо подходит для расчётов при помощи блоков SSE, но вполне удобен для GPU.

Это лишь некоторые примеры ускорений синтетического кода на GPU против SSE-векторизованного кода на CPU (по данным NVIDIA):

• Флуоресцентная микроскопия: 12x.

• Молекулярная динамика (non-bonded force calc): 8-16x;

• Электростатика (прямое и многоуровневое суммирование Кулона): 40-120x и 7x.

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

Перечень основных приложений, в которых применяются вычисления на GPU: анализ и обработка изображений и сигналов, симуляция физики, вычислительная математика, вычислительная биология, финансовые расчёты, базы данных, динамика газов и жидкостей, криптография, адаптивная лучевая терапия, астрономия, обработка звука, биоинформатика, биологические симуляции, компьютерное зрение, анализ данных (data mining), цифровое кино и телевидение, электромагнитные симуляции, геоинформационные системы, военные применения, горное планирование, молекулярная динамика, магнитно-резонансная томография (MRI), нейросети, океанографические исследования, физика частиц, симуляция свёртывания молекул белка, квантовая химия, трассировка лучей, визуализация, радары, гидродинамическое моделирование (reservoir simulation), искусственный интеллект, анализ спутниковых данных, сейсмическая разведка, хирургия, ультразвук, видеоконференции.

Преимущества и ограничения CUDA

С точки зрения программиста, графический конвейер является набором стадий обработки. Блок геометрии генерирует треугольники, а блок растеризации — пиксели, отображаемые на мониторе. Традиционная модель программирования GPGPU выглядит следующим образом:

Чтобы перенести вычисления на GPU в рамках такой модели, нужен специальный подход. Даже поэлементное сложение двух векторов потребует отрисовки фигуры на экране или во внеэкранный буфер. Фигура растеризуется, цвет каждого пикселя вычисляется по заданной программе (пиксельному шейдеру). Программа считывает входные данные из текстур для каждого пикселя, складывает их и записывает в выходной буфер. И все эти многочисленные операции нужны для того, что в обычном языке программирования записывается одним оператором!

Поэтому, применение GPGPU для вычислений общего назначения имеет ограничение в виде слишком большой сложности обучения разработчиков. Да и других ограничений достаточно, ведь пиксельный шейдер — это всего лишь формула зависимости итогового цвета пикселя от его координаты, а язык пиксельных шейдеров — язык записи этих формул с Си-подобным синтаксисом. Ранние методы GPGPU являются хитрым трюком, позволяющим использовать мощность GPU, но без всякого удобства. Данные там представлены изображениями (текстурами), а алгоритм — процессом растеризации. Нужно особо отметить и весьма специфичную модель памяти и исполнения.

Программно-аппаратная архитектура для вычислений на GPU компании NVIDIA отличается от предыдущих моделей GPGPU тем, что позволяет писать программы для GPU на настоящем языке Си со стандартным синтаксисом, указателями и необходимостью в минимуме расширений для доступа к вычислительным ресурсам видеочипов. CUDA не зависит от графических API, и обладает некоторыми особенностями, предназначенными специально для вычислений общего назначения.

Преимущества CUDA перед традиционным подходом к GPGPU вычислениям

CUDA обеспечивает доступ к разделяемой между потоками памяти размером в 16 Кб на мультипроцессор, которая может быть использована для организации кэша с широкой полосой пропускания, по сравнению с текстурными выборками;

• более эффективная передача данных между системной и видеопамятью;

• отсутствие необходимости в графических API с избыточностью и накладными расходами;

• линейная адресация памяти, и gather и scatter, возможность записи по произвольным адресам;

• аппаратная поддержка целочисленных и битовых операций.

Основные ограничения CUDA:

• отсутствие поддержки рекурсии для выполняемых функций;

• минимальная ширина блока в 32 потока;

• закрытая архитектура CUDA, принадлежащая NVIDIA.

Слабыми местами программирования при помощи предыдущих методов GPGPU является то, что эти методы не используют блоки исполнения вершинных шейдеров в предыдущих неунифицированных архитектурах, данные хранятся в текстурах, а выводятся во внеэкранный буфер, а многопроходные алгоритмы используют пиксельные шейдерные блоки. В ограничения GPGPU можно включить: недостаточно эффективное использование аппаратных возможностей, ограничения полосой пропускания памяти, отсутствие операции scatter (только gather), обязательное использование графического API.

Основные преимущества CUDA по сравнению с предыдущими методами GPGPU вытекают из того, что эта архитектура спроектирована для эффективного использования неграфических вычислений на GPU и использует язык программирования C, не требуя переноса алгоритмов в удобный для концепции графического конвейера вид. CUDA предлагает новый путь вычислений на GPU, не использующий графические API, предлагающий произвольный доступ к памяти (scatter или gather). Такая архитектура лишена недостатков GPGPU и использует все исполнительные блоки, а также расширяет возможности за счёт целочисленной математики и операций битового сдвига.

CUDA открывает некоторые аппаратные возможности, недоступные из графических API, такие как разделяемая память. Это память небольшого объёма (16 килобайт на мультипроцессор), к которой имеют доступ блоки потоков. Она позволяет кэшировать наиболее часто используемые данные и может обеспечить более высокую скорость, по сравнению с использованием текстурных выборок для этой задачи. Что, в свою очередь, снижает чувствительность к пропускной способности параллельных алгоритмов во многих приложениях. Например, это полезно для линейной алгебры, быстрого преобразования Фурье и фильтров обработки изображений.

Удобнее в CUDA и доступ к памяти. Программный код в графических API выводит данные в виде 32-х значений с плавающей точкой одинарной точности (RGBA значения одновременно в восемь render target) в заранее предопределённые области, а CUDA поддерживает scatter запись — неограниченное число записей по любому адресу. Такие преимущества делают возможным выполнение на GPU некоторых алгоритмов, которые невозможно эффективно реализовать при помощи методов GPGPU, основанных на графических API.

Похожее:  NVIDIA начала продажи видеокарты GeForce GTX 1060

Также, графические API в обязательном порядке хранят данные в текстурах, что требует предварительной упаковки больших массивов в текстуры, что усложняет алгоритм и заставляет использовать специальную адресацию. А CUDA позволяет читать данные по любому адресу. Ещё одним преимуществом CUDA является оптимизированный обмен данными между CPU и GPU. А для разработчиков, желающих получить доступ к низкому уровню (например, при написании другого языка программирования), CUDA предлагает возможность низкоуровневого программирования на ассемблере.

Недостатки CUDA

Один из немногочисленных недостатков CUDA — слабая переносимость. Эта архитектура работает только на видеочипах этой компании, да ещё и не на всех, а начиная с серии GeForce 8 и 9 и соответствующих Quadro, ION и Tesla. NVIDIA приводит цифру в 90 миллионов CUDA-совместимых видеочипов.

Альтернативы CUDA

Фреймворк для написания компьютерных программ, связанных с параллельными вычислениями на различных графических и центральных процессорах. В фреймворк OpenCL входят язык программирования, который базируется на стандарте C99, и интерфейс программирования приложений (API). OpenCL обеспечивает параллелизм на уровне инструкций и на уровне данных и является реализацией техники GPGPU. OpenCL является полностью открытым стандартом, его использование не облагается лицензионными отчислениями.

Цель OpenCL состоит в том, чтобы дополнить OpenGL и OpenAL, которые являются открытыми отраслевыми стандартами для трёхмерной компьютерной графики и звука, пользуясь возможностями GPU. OpenCL разрабатывается и поддерживается некоммерческим консорциумом Khronos Group, в который входят много крупных компаний, включая Apple, AMD, Intel, nVidia, Sun Microsystems, Sony Computer Entertainment и другие.

• CAL/IL(Compute Abstraction Layer/Intermediate Language)

ATI Stream Technology — это набор аппаратных и программных технологий, которые позволяют использовать графические процессоры AMD, совместно с центральным процессором, для ускорения многих приложений (не только графических).

Областями применения ATI Stream являются приложения, требовательные к вычислительному ресурсу, такие, как финансовый анализ или обработка сейсмических данных. Использование потокового процессора позволило увеличить скорость некоторых финансовых расчётов в 55 раз по сравнению с решением той же задачи силами только центрального процессора.

Технологию ATI Stream в NVIDIA не считают очень сильным конкурентом. CUDA и Stream — это две разные технологии, которые стоят на различных уровнях развития. Программирование для продуктов ATI намного сложнее — их язык скорее напоминает ассемблер. CUDA C, в свою очередь, гораздо более высокоуровневый язык. Писать на нём удобнее и проще. Для крупных компаний-разработчиков это очень важно. Если говорить о производительности, то можно заметить, что её пиковое значение в продуктах ATI выше, чем в решениях NVIDIA. Но опять всё сводится к тому, как эту мощность получить.

Интерфейс программирования приложений, который входит в состав DirectX — набора API от Microsoft, который предназначен для работы на IBM PC-совместимых компьютерах под управлением операционных систем семейства Microsoft Windows. DirectCompute предназначен для выполнения вычислений общего назначения на графических процессорах, являясь реализацией концепции GPGPU. Изначально DirectCompute был опубликован в составе DirectX 11, однако позже стал доступен и для DirectX 10 и DirectX 10.1.

NVDIA CUDA в российской научной среде.

По состоянию на декабрь 2009 г., программная модель CUDA преподается в 269 университетах мира. В России обучающие курсы по CUDA читаются в Московском, Санкт-Петербургском, Казанском, Новосибирском и Пермском государственных университетах, Международном университете природы общества и человека «Дубна», Объединённом институте ядерных исследований, Московском институте электронной техники, Ивановском государственном энергетическом университете, БГТУ им. В. Г. Шухова, МГТУ им. Баумана, РХТУ им. Менделеева, Российском научном центре «Курчатовский институт», Межрегиональном суперкомпьютерном центре РАН, Таганрогском технологическом институте (ТТИ ЮФУ).

Источник

Cuda ядра видеокарты что это

Анонс видеокарт 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.

Источник