что такое гпу в видеокарте

Графическое ядро в процессоре: что это такое и зачем оно в компьютере?

что такое гпу в видеокарте. Смотреть фото что такое гпу в видеокарте. Смотреть картинку что такое гпу в видеокарте. Картинка про что такое гпу в видеокарте. Фото что такое гпу в видеокарте

GPU переводится как Graphics Processing Unit, по факту это отдельный небольшой компонент компьютера, который несет ответственность за обработку видеографики. GPU на компьютере — это отдельный небольшой микрочип, который может быть:

GPU в компьютере — что это такое?

Не нужно путать GPU в компьютере с видеокартой, потому что GPU — это небольшой микрочип для обрабатывания графики, а видеокарта — это уже полноценное отдельное устройство. GPU является частью видеокарты. Когда GPU в компьютере размещается как отдельный микрочип, тогда его именуют графическим процессором. А если GPU интегрирован в процессор или материнскую плату, то в этом случае его часто называют встроенным или интегрированным графическим ядром.

Графическое ядро в процессоре

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

С видеокартой как бы ясно — это отдельное устройство, которое можно купить в магазине и установить в свой ПК. Хорошая видеокарта стоит недешево. Она занимает отдельное место в материнской плате и греется при своей работе.

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

Для чего нужно такое «объединение»?

Такое «объединение» несет в себе 3 задачи:

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

Недостатки встроенного ГП в компьютере

Встроенный графический процессор обладает рядом собственных недостатков:

Заключение

Мы будем очень благодарны

если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.

Источник

GPU: что это в компьютере

Изучая технические характеристики компьютера, вы можете встретить такой термин как GPU. Данный термин обычно не объясняется простыми словами, поэтому пользователи редко понимают, что конкретно он означает. Иногда под GPU пользователи понимают видеокарту, хотя это не совсем верно. На самом деле GPU является частью видеокарты, а не самой видеокартой. В этом материале мы подробно расскажем о том, что такое GPU в компьютере, а также как узнать свой GPU и его температуру.

Что такое GPU в компьютере

Аббревиатура GPU расшифровывается как Graphics Processing Unit, что можно перевести как устройство для обработки графики. Фактически GPU именно этим и является это отдельный модуль компьютера, который отвечает за обработку графики. В компьютере GPU может быть выполнен как отдельный кремниевый чип, который распаян на материнской или собственной отдельной плате (видеокарте), либо как часть центрального процессора или чипсета (северный мост).

что такое гпу в видеокарте. Смотреть фото что такое гпу в видеокарте. Смотреть картинку что такое гпу в видеокарте. Картинка про что такое гпу в видеокарте. Фото что такое гпу в видеокарте

Как выглядит GPU в компьютере.

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

В некоторых случаях под термином GPU понимают видеокарту, что не совсем верно, поскольку GPU – это именно чип (графический процессор), который занимается обработкой графики, а видеокарта — это целое устройство ответственное за обработку графики. Видеокарта состоит из графического процессора, памяти, имеет собственную плату и BIOS.

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

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

Как узнать какой GPU в компьютере

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

Существует несколько способов узнать название видеокарты. Самый простой – это посмотреть в диспетчере устройств. Для этого нужно нажать комбинацию клавиш Windows-R и выполнить команду « mmc devmgmt.msc ». Также «Диспетчер устройств» можно открыть и другими способами.

что такое гпу в видеокарте. Смотреть фото что такое гпу в видеокарте. Смотреть картинку что такое гпу в видеокарте. Картинка про что такое гпу в видеокарте. Фото что такое гпу в видеокарте

В результате должно открыться окно «Диспетчера устройств». Здесь в разделе «Видеоадаптеры» будет указано название видеокарты.

что такое гпу в видеокарте. Смотреть фото что такое гпу в видеокарте. Смотреть картинку что такое гпу в видеокарте. Картинка про что такое гпу в видеокарте. Фото что такое гпу в видеокарте

Но, вариант с диспетчером устройств не самый надежный. Если вы не установили драйверы для видеокарты, то система может ее не опознать и в диспетчере устройств не будет информации о ее названии. В таком случае лучше обратиться к сторонним программам. Например, можно установить программу GPU-Z, которая покажет всю возможную информацию об установленной видеокарте. Например, в GPU-Z название видеокарты можно узнать в строке «Name» в самом верху окна программы. На скриншоте внизу показано название видеокарты, это NVIDIA GTX GeForce 950.

что такое гпу в видеокарте. Смотреть фото что такое гпу в видеокарте. Смотреть картинку что такое гпу в видеокарте. Картинка про что такое гпу в видеокарте. Фото что такое гпу в видеокарте

Также в GPU-Z можно узнать название самого GPU (графического процессора). Например, на скриншоте внизу показано, что видеокарта NVIDIA GTX GeForce 950 построена на базе графического процессора GM206.

что такое гпу в видеокарте. Смотреть фото что такое гпу в видеокарте. Смотреть картинку что такое гпу в видеокарте. Картинка про что такое гпу в видеокарте. Фото что такое гпу в видеокарте

Температура GPU

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

Узнать температуру GPU можно с помощью специальных программ. Например, можно использовать GPU-Z, которую мы уже вспоминали. Если в программе GPU-Z перейти на вкладку «Sensors», то можно получить информацию о текучем состоянии видеокарты. Здесь будет указана частота GPU, его загрузка, температура и другие параметры.

что такое гпу в видеокарте. Смотреть фото что такое гпу в видеокарте. Смотреть картинку что такое гпу в видеокарте. Картинка про что такое гпу в видеокарте. Фото что такое гпу в видеокарте

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

что такое гпу в видеокарте. Смотреть фото что такое гпу в видеокарте. Смотреть картинку что такое гпу в видеокарте. Картинка про что такое гпу в видеокарте. Фото что такое гпу в видеокарте

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

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

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

Создатель сайта comp-security.net, автор более 2000 статей о ремонте компьютеров, работе с программами, настройке операционных систем.

Задайте вопрос в комментариях под статьей или на странице «Задать вопрос» и вы обязательно получите ответ.

Источник

Что такое графический процессор (GPU)?

что такое гпу в видеокарте. Смотреть фото что такое гпу в видеокарте. Смотреть картинку что такое гпу в видеокарте. Картинка про что такое гпу в видеокарте. Фото что такое гпу в видеокарте

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

Зная о принципах их работы, вы сможете легко понять, имеет ли рассматриваемый компьютер подходящие характеристики, еще до совершения покупки!

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

Что такое GPU?

что такое гпу в видеокарте. Смотреть фото что такое гпу в видеокарте. Смотреть картинку что такое гпу в видеокарте. Картинка про что такое гпу в видеокарте. Фото что такое гпу в видеокарте

GPU расшифровывается как Graphics Processing Unit, то есть графический процессор. Это тип процессора, который отвечает за рендеринг графики (создание изображений, которые вы видите на экране).

Графический процессор очень важен для любых вычислительных задач, в частности таких, как 3D-рендеринг и игры.

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

Графический процессор и видеокарта – одно и то же?

что такое гпу в видеокарте. Смотреть фото что такое гпу в видеокарте. Смотреть картинку что такое гпу в видеокарте. Картинка про что такое гпу в видеокарте. Фото что такое гпу в видеокарте

В разговорной речи графический процессор часто используется в качестве синонима к видеокарте. Но технически это не совсем правильно.

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

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

А что такое интегрированный графический процессор?

что такое гпу в видеокарте. Смотреть фото что такое гпу в видеокарте. Смотреть картинку что такое гпу в видеокарте. Картинка про что такое гпу в видеокарте. Фото что такое гпу в видеокарте

iGPU – это интегрированный графический процессор. Иными словами, это GPU, встроенный в центральный процессор.

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

Интегрированный графический процессор отлично подходит для обычных повседневных задач (например, просмотр веб-страниц и работа с текстом). Но если вам нужен мощный компьютер для игр или редактирования видео, то нужно рассмотреть покупку устройства с дискретным графическим процессором, или же dGPU.

Что такое дискретный графический процессор?

что такое гпу в видеокарте. Смотреть фото что такое гпу в видеокарте. Смотреть картинку что такое гпу в видеокарте. Картинка про что такое гпу в видеокарте. Фото что такое гпу в видеокарте

dGPU – дискретный графический процессор. Он ставится отдельно от основного процессора и имеет свою выделенную память, которая не передается ЦП.

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

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

Как узнать, какой графический процессор установлен в моем компьютере?

что такое гпу в видеокарте. Смотреть фото что такое гпу в видеокарте. Смотреть картинку что такое гпу в видеокарте. Картинка про что такое гпу в видеокарте. Фото что такое гпу в видеокарте

Получить информацию о графическом процессоре на своем компьютере можно в настройках устройства.

Если у вас Windows 10, нужно перейти в «Диспетчер устройств», затем выбрать пункт «Видеоадаптеры», где вы и увидите полный список графических процессоров, установленных на компьютере.

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

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

Итоги

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

Еще раз пройдемся по основным тезисам:

Источник

Вычисления на GPU – зачем, когда и как. Плюс немного тестов

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

что такое гпу в видеокарте. Смотреть фото что такое гпу в видеокарте. Смотреть картинку что такое гпу в видеокарте. Картинка про что такое гпу в видеокарте. Фото что такое гпу в видеокарте

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

Зачем что-то считать на GPU?

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

Ниже на графике изображены рост этих самых флопсов с течением времени для процессоров и для видеокарт.

что такое гпу в видеокарте. Смотреть фото что такое гпу в видеокарте. Смотреть картинку что такое гпу в видеокарте. Картинка про что такое гпу в видеокарте. Фото что такое гпу в видеокарте

(Данные собраны из открытых источников, нет данных за 2019-20 годы, т.к. там не все так красиво, но GPU все-таки выигрывают)

Что ж, заманчиво, не правда ли? Перекладываем все вычисления с CPU на GPU и получаем в восемь раз лучшую производительность!

Но, конечно же, не все так просто. Нельзя просто так взять и переложить все на GPU, о том почему, мы поговорим дальше.

Архитектура GPU и ее сравнение с CPU

Привожу многим знакомую картинку с архитектурой CPU и основными элементами:

что такое гпу в видеокарте. Смотреть фото что такое гпу в видеокарте. Смотреть картинку что такое гпу в видеокарте. Картинка про что такое гпу в видеокарте. Фото что такое гпу в видеокарте

Что здесь особенного? Одно ядро и куча вспомогательных блоков.

А теперь давайте посмотрим на архитектуру GPU:

что такое гпу в видеокарте. Смотреть фото что такое гпу в видеокарте. Смотреть картинку что такое гпу в видеокарте. Картинка про что такое гпу в видеокарте. Фото что такое гпу в видеокарте

У видеокарты множество вычислительных ядер, обычно несколько тысяч, но они объединены в блоки, для видеокарт NVIDIA обычно по 32, и имеют общие элементы, в т.ч. и регистры. Архитектура ядра GPU и логических элементов существенно проще, чем на CPU, а именно, нет префетчеров, бранч-предикторов и много чего еще.

Что же, это ключевые моменты отличия в архитектуре CPU и GPU, и, собственно, они и накладывают ограничения или, наоборот, открывают возможности к тому, что мы можем эффективно считать на GPU.

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

Ограничения и возможности при работе с GPU

Какие ограничения накладывает такая архитектура на выполняемые алгоритмы:

Приведение классических алгоритмов к SIMD-представлению

Трансформация

У нас есть два массива, A и B, и мы хотим к каждому элементу массива A добавить элемент из массива B. Ниже приведен пример на C, хотя, надеюсь, он будет понятен и тем, кто не владеет этим языком:

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

А теперь посмотрим, как такой код будет выглядеть для GPU:

А вот здесь уже интересно, появилась переменная threadIdx, которую мы вроде бы нигде не объявляли. Да, нам предоставляет ее система. Представьте, что в предыдущем примере массив состоит из трех элементов, и вы хотите его запустить в трех параллельных потоках. Для этого вам бы понадобилось добавить еще один параметр – индекс или номер потока. Вот это и делает за нас видеокарта, правда она передает индекс как статическую переменную и может работать сразу с несколькими измерениями – x, y, z.

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

В итоге что мы имеем: множество параллельно работающих потоков, выполняющих один и тот же код, но с разными индексами, а соответственно, и данными, т.е. тот самый SIMD.

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

Агрегация

Давайте теперь посмотрим, как будет выглядеть агрегация, приведенная к SIMD представлению:

что такое гпу в видеокарте. Смотреть фото что такое гпу в видеокарте. Смотреть картинку что такое гпу в видеокарте. Картинка про что такое гпу в видеокарте. Фото что такое гпу в видеокарте

У нас есть массив из n элементов. На первом этапе мы запускаем n/2 потоков и каждый поток складывает по два элемента, т.е. за одну итерацию мы складываем между собой половину элементов в массиве. А дальше в цикле повторяем все тоже самое для вновь получившегося массива, пока не сагрегируем два последних элемента. Как видите, чем меньше размер массива, тем меньше параллельных потоков мы можем запустить, т.е. на GPU имеет смысл агрегировать массивы достаточно большого размера. Такой алгоритм можно применять для вычисления суммы элементов (кстати, не забывайте о возможном переполнении типа данных, с которым вы работаете), поиска максимума, минимума или просто поиска.

Сортировка

А вот с сортировкой уже все выглядит намного сложнее.

Два наиболее популярных алгоритма сортировки на GPU это:

Но идея в том, что даже такой нелинейный алгоритм, как сортировка, можно привести к SIMD-виду.

А теперь, прежде чем посмотреть на реальные цифры, которые можно получить от GPU, давайте разберемся, как же все-таки программировать под это чудо техники?

C чего начать

Наиболее распространены две технологии, которые можно использовать для программирования под GPU:

Использовать OpenCL можно из C/C++, есть биндинги к другим языкам.

По OpenCL мне больше всего понравилась книга «OpenCL in Action». В ней же описаны разные алгоритмы на GPU, в т.ч. Bitonic-sort и Radix-sort.

CUDA – это проприетарная технология и SDK от компании NVIDIA. Писать можно на C/C++ или использовать биндинги к другим языкам.

Сравнивать OpenCL и CUDA несколько не корректно, т.к. одно — стандарт, второе — целое SDK. Тем не менее многие выбирают CUDA для разработки под видеокарты несмотря на то, что технология проприетарная, хоть и бесплатная и работает только на картах NVIDIA. Тому есть несколько причин:

Наиболее полноценной книгой по CUDA, на которую я наткнулся, была «Professional CUDA C Programming», хоть уже и немного устарела, тем не менее в ней рассматривается много технических нюансов программирования для карт NVIDIA.

А что, если я не хочу тратить пару месяцев на чтение этих книг, написание собственной программы для видеокарты тестирование и отладку, а потом выяснить, что это все не для меня?

Как я уже сказал, есть большое количество библиотек, которые скрывают сложности разработки под GPU: XGBoost, cuBLAS, TensorFlow, PyTorch и другие, мы рассмотрим библиотеку thrust, так как она менее специализирована, чем другие вышеприведенные библиотеки, но при этом в ней реализованы базовые алгоритмы, например, сортировка, поиск, агрегация, и с большой вероятностью она может быть применима в ваших задачах.

Thrust – это С++ библиотека, которая ставит своей целью «подменить» стандартные STL алгоритмы на алгоритмы выполняемые на GPU. Например, сортировка массива чисел с помощью этой библиотеки на видеокарте будет выглядеть так:

(не забываем, что пример нужно компилировать компилятором от NVIDIA)

Как видите, thrust::sort очень похож на аналогичный алгоритм из STL. Эта библиотека скрывает много сложностей, в особенности разработку подпрограммы (точнее ядра), которая будет выполняться на видеокарте, но при этом лишает гибкости. Например, если мы хотим отсортировать несколько гигабайт данных, логично было бы отправить кусок данных на карту запустить сортировку, и пока выполняется сортировка, дослать еще данные на карту. Такой подход называется latency hiding и позволяет более эффективно использовать ресурсы серверной карты, но, к сожалению, когда мы используем высокоуровневые библиотеки, такие возможности остаются скрытыми. Но для прототипирования и замера производительности как раз таки подходят, в особенности с thrust можно замерить, какой оверхед дает пересылка данных.

Я написал небольшой бенчмарк с использованием этой библиотеки, который выполняет несколько популярных алгоритмов с разным объемом данных на GPU, давайте посмотрим, какие результаты получились.

Результаты выполнения алгоритмов на GPU

Для тестирования GPU я взял инстанс в AWS с видеокартой Tesla k80, это далеко не самая мощная серверная карта на сегодняшний день (самая мощная Tesla v100), но наиболее доступная и имеет на борту:

Трансформация

что такое гпу в видеокарте. Смотреть фото что такое гпу в видеокарте. Смотреть картинку что такое гпу в видеокарте. Картинка про что такое гпу в видеокарте. Фото что такое гпу в видеокарте

Время выполнения трансформации на GPU и CPU в мс

Как видите, обычная трансформация элементов массива выполняется по времени примерно одинаково, как на GPU, так и на CPU. А все почему? Потому что оверхед на пересылку данных на карту и обратно съедает весь performance boost (про оверхед мы поговорим отдельно), да и вычислений на карте выполняется относительно немного. К тому же не стоит забывать, что процессоры также поддерживают SIMD инструкции, и компиляторы в простых случаях могут эффективно их задействовать.

Давайте теперь посмотрим, насколько эффективно выполняется агрегация на GPU.

Агрегация

что такое гпу в видеокарте. Смотреть фото что такое гпу в видеокарте. Смотреть картинку что такое гпу в видеокарте. Картинка про что такое гпу в видеокарте. Фото что такое гпу в видеокарте

Время выполнения агрегации на GPU и CPU в мс

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

Перейдем к самому интересному примеру – сортировке.

Сортировка

что такое гпу в видеокарте. Смотреть фото что такое гпу в видеокарте. Смотреть картинку что такое гпу в видеокарте. Картинка про что такое гпу в видеокарте. Фото что такое гпу в видеокарте

Время выполнения сортировки на GPU и CPU в мс

Несмотря на то, что мы пересылаем на видеокарту и обратно весь массив данных, сортировка на GPU 800 MB данных выполняется примерно в 25 раз быстрее, чем на процессоре.

Оверхед на пересылку данных

Как видно из примера с трансформацией, не всегда очевидно, будет ли GPU эффективен даже в тех задачах, которые хорошо параллелятся. Причиной тому — оверхед на пересылку данных из оперативной памяти компьютера в память видеокарты (в игровых консолях, кстати, память расшарена между CPU и GPU, и нет необходимости пересылать данные). Одна из характеристик видеокарты это — memory bandwidth или пропускная способность памяти, которая определяет теоретическую пропускную способность карты. Для Tesla k80 это 480 GB/s, для Tesla v100 это уже 900 GB/s. Также на пропускную способность будет влиять версия PCI Express и имплементация того, как вы будете передавать данные на карту, например, это можно делать в несколько параллельных потоков.

Давайте посмотрим на практические результаты, которые удалось получить для видеокарты Tesla k80 в облаке Amazon:

что такое гпу в видеокарте. Смотреть фото что такое гпу в видеокарте. Смотреть картинку что такое гпу в видеокарте. Картинка про что такое гпу в видеокарте. Фото что такое гпу в видеокарте

Время пересылки данных на GPU, сортировки и пересылки данных обратно в RAM в мс

HtoD – передаем данные на видеокарту

GPU Execution – сортировка на видеокарте

DtoH – копирование данных из видеокарты в оперативную память

Первое, что можно отметить – считывать данные из видеокарты получается быстрее, чем записывать их туда.

Второе – при работе с видеокартой можно получить latency от 350 микросекунд, а этого уже может хватить для некоторых low latency приложений.

Ниже на графике приведен оверхед для большего объема данных:

что такое гпу в видеокарте. Смотреть фото что такое гпу в видеокарте. Смотреть картинку что такое гпу в видеокарте. Картинка про что такое гпу в видеокарте. Фото что такое гпу в видеокарте

Время пересылки данных на GPU, сортировки и пересылки данных обратно в RAM в мс

Серверное использование

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

что такое гпу в видеокарте. Смотреть фото что такое гпу в видеокарте. Смотреть картинку что такое гпу в видеокарте. Картинка про что такое гпу в видеокарте. Фото что такое гпу в видеокарте

Основные отличия серверной (NVIDIA) и игровой карты:

Многопоточность

После того как мы разобрались, как запустить простейший алгоритм на видеокарте и каких результатов можно ожидать, следующий логичный вопрос, а как будет себя вести видеокарта при обработке нескольких параллельных запросов. В качестве ответа у меня есть два графика выполнения вычислений на GPU и процессоре с 4-мя и 32-мя ядрами:

что такое гпу в видеокарте. Смотреть фото что такое гпу в видеокарте. Смотреть картинку что такое гпу в видеокарте. Картинка про что такое гпу в видеокарте. Фото что такое гпу в видеокарте

Время выполнения математических расчетов на GPU и CPU c матрицами размером 1000 x 60 в мс

На этом графике выполняются расчеты с матрицами размером 1000 x 60 элементов. Запускаются вычисления из нескольких программных потоков, для GPU дополнительно создается отдельный stream для каждого CPU-потока (используется тот самый Hyper-Q).

Как видно, процессор справляется с такой нагрузкой очень хорошо, при этом latency для одного запроса на GPU существенно растет с увеличением числа параллельных запросов.

что такое гпу в видеокарте. Смотреть фото что такое гпу в видеокарте. Смотреть картинку что такое гпу в видеокарте. Картинка про что такое гпу в видеокарте. Фото что такое гпу в видеокарте

Время выполнения математических расчетов на GPU и CPU c матрицами 10 000 x 60 в мс

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

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

Обсудим еще несколько вопросов, которые могут возникнуть у вас, если вы все-таки решили использовать GPU в своих проектах.

Ограничение ресурсов

Как мы уже говорили, два основных ресурса видеокарты – это вычислительные ядра и память.

К примеру, у нас несколько процессов или контейнеров, использующих видеокарту, и хотелось бы иметь возможность поделить видеокарту между ними. К сожалению, простого API для этого нет. NVIDIA предлагает технологию vGPU, но карту Tesla k80 я не нашел в списке поддерживаемых, и насколько мне удалось понять из описания, технология больше заточена на виртуальные дисплеи, чем на вычисления. Возможно, AMD предлагает что-то более подходящее.

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

Контейнеры и GPU

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

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

Другой более удобный способ – это Docker-контейнеры. Можно использовать и обычные контейнеры, но NVIDIA предлагает свои контейнеры NGC, с оптимизированными версиями различного софта, библиотек и драйверов. Для одного контейнера можно ограничить количество используемых GPU и их видимость для контейнера. Оверхед на использования контейнера около 3%.

Работа в кластере

Другой вопрос, что делать, если вы хотите выполнять одну задачу на нескольких GPU в рамках одного сервера или кластера?

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

Дополнительно хотелось бы отметить то, что, например, NVIDIA предлагает интерфейс прямого обмена данными между картами – NVLINK, который существенно быстрее чем PCI Express. И есть технология прямого доступа к памяти карты из других PCI Express устройств – GPUDirect RDMA, в т.ч. и сетевых.

Рекомендации

Если вы размышляете об использовании GPU в своих проектах, то GPU, скорее всего, вам подойдет если:

Источник

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

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