Почему мы все еще используем процессоры вместо графических процессоров?


373

Мне кажется, что в наши дни много вычислений делается на GPU. Очевидно, что графика выполняется там, но с использованием CUDA и тому подобного, AI, алгоритмов хеширования (например, биткойнов) и других также выполняются на GPU. Почему мы не можем просто избавиться от процессора и использовать его самостоятельно? Что делает GPU намного быстрее, чем процессор?


3
как мне узнать, какие ответы содержат правильную информацию? Должен ли я ждать, пока другие не дадут ответа? Я думаю, что я был слишком поспешным, чтобы принять ответ: O
ell

14
Есть несколько недавних ответов @ell сейчас, которые не содержат «дезинформацию». Они постепенно поднимаются на вершину с ростом голосов благодаря эффективному рыночному механизму прекрасно разработанного StackExchange ;-) Я бы посоветовал подождать немного дольше, прежде чем принять ответ. Похоже, вы очень осторожно делаете именно это. Кстати, это хороший вопрос. Может показаться очевидным, но это не так. Спасибо, что спросили!
Элли Кессельман

124
Вроде как спрашивать: «Если Боинг 747 быстрее и экономичнее, почему мы до сих пор ездим на автомобилях»?
vartec

7
Нет, потому что это не RISC против CISC. Это одна из других основ информатики, слегка замаскированная. Это «Почему мы переносим работу с центрального процессора на процессоры ввода-вывода?» ,
JdeBP

5
@vartec: Я думаю, что немного лучшая аналогия может быть между автобусами и такси. Если есть сорок человек, которые хотят отправиться из одного места в одно и то же место, автобус будет гораздо эффективнее. Если есть сорок человек, желаемое происхождение и места назначения которых разбросаны, даже одно такси может быть таким же хорошим, как автобус, и за стоимость автобуса можно было бы иметь несколько такси.
суперкат

Ответы:


388

Ответ TL; DR: у графических процессоров гораздо больше процессорных ядер, чем у процессоров, но поскольку каждое ядро ​​графического процессора работает значительно медленнее, чем ядро ​​процессора, и не обладает функциями, необходимыми для современных операционных систем, они не подходят для выполнения большей части обработки в повседневной жизни. вычисления. Они больше всего подходят для вычислительных операций, таких как обработка видео и физическое моделирование.


GPGPU - все еще относительно новая концепция. Графические процессоры изначально использовались только для визуализации графики; По мере развития технологии большое количество ядер в графических процессорах по сравнению с процессорами использовалось для разработки вычислительных возможностей для графических процессоров, чтобы они могли обрабатывать множество параллельных потоков данных одновременно, независимо от того, какими могут быть эти данные. Хотя графические процессоры могут иметь сотни или даже тысячи потоковых процессоров, каждый из них работает медленнее, чем ядро ​​процессора, и обладает меньшим количеством функций (даже если они завершены по Тьюрингу и могут быть запрограммированы для запуска любой программы, которую может запустить процессор). Функции, отсутствующие в графических процессорах, включают прерывания и виртуальную память, которые необходимы для реализации современной операционной системы.

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

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

Современные графические процессоры способны выполнять векторные операции и арифметику с плавающей запятой, а новейшие карты способны манипулировать числами с плавающей запятой двойной точности. Фреймворки, такие как CUDA и OpenCL, позволяют писать программы для графических процессоров, а природа графических процессоров делает их наиболее подходящими для высокопараллелизируемых операций, например, в научных вычислениях, где серия специализированных вычислительных карт на графических процессорах может быть жизнеспособной заменой для небольших вычислительный кластер, как в NVIDIA Tesla Personal Supercomputers . Потребители с современными графическими процессорами, которые имеют опыт работы с Folding @ home, могут использовать их для взаимодействия с клиентами графических процессоров , которые могут выполнять моделирование свертывания белка на очень высокой скорости и вносить больше работы в проект (обязательно прочитайте часто задаваемые вопросыво-первых, особенно те, которые связаны с графическими процессорами). Графические процессоры также могут обеспечить лучшее физическое моделирование в видеоиграх с использованием PhysX, ускорить кодирование и декодирование видео и выполнять другие задачи, требующие больших вычислительных ресурсов. Именно эти типы задач наиболее подходят для выполнения графических процессоров.

AMD является пионером в разработке процессоров, называемых ускоренным процессором (APU), который сочетает в себе обычные процессорные ядра x86 с графическими процессорами. Этот подход обеспечивает графическую производительность, значительно превосходящую встроенные в материнскую плату графические решения (хотя и не подходит для более дорогих дискретных графических процессоров), и позволяет создать компактную недорогую систему с хорошей производительностью мультимедиа без необходимости использования отдельного графического процессора. Новейшие процессоры Intel также предлагают встроенную встроенную графику, хотя конкурентоспособная производительность интегрированных графических процессоров в настоящее время ограничена несколькими чипами с Intel Iris Pro Graphics. Поскольку технология продолжает развиваться, мы увидим растущую степень сближения этих некогда отдельных частей. AMD предусматриваетбудущее, в котором процессор и графический процессор - одно целое, способное беспрепятственно работать вместе над одной и той же задачей .

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


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

Стоит отметить, что Intel работает над архитектурой Larrabee (слишком долго), которая представляет собой чип с огромным количеством ядер x86.
Крис С

Отличный ответ для обсуждения аппаратных причин и обсуждения APU и того, как они это изменят. Тем не менее, @Soren дает очень хорошую точку зрения на стороне программного обеспечения. На самом деле, это сочетание аппаратных проблем, проблем с программным обеспечением и того факта, что процессоры работают, и когда известно, что что-то работает, трудно заставить людей заменить это.
Nich Del

3
«У нас нет хороших языков программирования основного потока, чтобы иметь дело с параллельными архитектурами, подобными этой». - Haskell, OCaml, Scheme, F #, Erlang и почти любой другой язык функционального программирования очень хорошо справляются с многопоточностью. Все те, что я упомянул, являются мейнстримом.
BlueRaja - Дэнни Пфлугхофт

1
@BlueRaja - нам известны эти языки, ваше определение основного потока должно отличаться от моего :-)
Сорен

252

Что делает GPU намного быстрее, чем процессор?

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

Графический процессор представляет собой специализированный процессор, разработанный таким образом, чтобы одна команда работала с большим блоком данных (SIMD / Single Instruction Multiple Data), причем все они применяли одну и ту же операцию. Работа с блоками данных, безусловно, более эффективна, чем работа с одной ячейкой за раз, поскольку при декодировании инструкций значительно сокращаются издержки, однако работа с большими блоками означает, что имеется больше параллельных рабочих блоков, поэтому в ней используется гораздо больше транзисторов. реализовать одну инструкцию GPU (вызывая ограничение физического размера, используя больше энергии и выделяя больше тепла).

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

Причина, по которой мы все еще используем CPU, не в том, что x86 является королем архитектуры CPU, а Windows написана для x86, а причина, по которой мы все еще используем CPU, в том, что тип задач, которые должна выполнять ОС, то есть принятие решений, работает более эффективно на архитектуре процессора. Операционная система должна смотреть на сотни различных типов данных и принимать различные решения, которые все зависят друг от друга; Такая работа не может быть легко распараллелена, по крайней мере, в архитектуру SIMD.

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


23
Это, вероятно, лучший ответ здесь. Важно понимать фундаментальные различия между двумя парадигмами. Для графических процессоров, чтобы обогнать процессоры, учитывая сегодняшние рабочие нагрузки, фактически означает, что графический процессор должен превратиться в центральный процессор. И поэтому вопрос является ответом.
Surfasb

2
+1 за то, что это лучший ответ. И этот, и принятый ответ верны, но этот объясняет это гораздо яснее.

Я удивлен, что никто в этой теме не упомянул о накладных расходах при отправке данных в графический процессор - ограниченная пропускная способность по шинам PCI-Express делает некоторые параллельные операции на графическом процессоре значительно медленнее, чем они выполнялись на процессоре. Можно видеть один простой случай, когда изменение размера БПФ оказало значительное влияние на производительность графического процессора и центрального процессора из-за накладных расходов, связанных с отправкой данных, настройкой контекста и чтением результатов: stackoverflow.com/a/8687732/303612 Меньшие операции могут выполняться в кэш-памяти на процессорах, а пропускная способность памяти значительно превосходит текущую архитектуру PCI-E
доктор Эндрю Бернетт-Томпсон,

1
@ Dr.AndrewBurnett-Thompson: это потому, что это не имеет отношения к вопросу. В настоящее время GPU считается вспомогательным процессором, поэтому перемещение данных с / на GPU необходимо и дорого. Если мы будем рассматривать GPU как первоклассный процессор, не будет необходимости маршалировать данные между основной памятью и памятью GPU.
Ли Райан

1
Не оптимистично, это не нулевая пропускная способность. Если процессор с архитектурой GPU запускает все шоу, ничего перемещать не нужно, память GPU является основной памятью. Во-первых, нет затрат на передачу, о которых нужно говорить, потому что нет передач. Между прочим, это не гипотетически, APU AMD использует HSA (архитектуру гетерогенной системы) с унифицированной основной памятью, которая позволяет копировать ноль между CPU и GPU.
Ли Райан

75

Отсутствие графических процессоров:

  1. Виртуальная память (!!!)
  2. Средства адресации устройств, отличных от памяти (например, клавиатуры, принтеры, дополнительное хранилище и т. Д.)
  3. Прерывания

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

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

РЕДАКТИРОВАТЬ : Обратите внимание, что этот ответ был написан в 2011 году - технология графических процессоров постоянно меняется. Вещи могут быть очень разными в зависимости от того, когда вы читаете это: P

* Некоторые графические процессоры не медленны в арифметике с двойной точностью, например, линии NVidia Quadro или Tesla (поколение Fermi или новее) или линия AMD FirePro (поколение GCN или новее). Но это не в машинах большинства потребителей.


@Cicada: У вас есть ссылка на это? В любом случае, даже если это так, даже новейшее оборудование в этом случае не будет работать хорошо. (например, не будет иметь слишком много преимуществ по сравнению с процессором - и недостаток энергопотребления)
Billy ONeal

3
Да, устройства Fermi, как вы сказали (с CUDA 4.0 и sm_20), поддерживают косвенные переходы (и, следовательно, виртуальные методы C ++, наследование и т. Д.).
Злой салат

544 GigaFLOPS от двухлетнего GPU за 300 $ медленнее?
Бен Фойгт

2
@Ben: Вы получаете такую ​​производительность только в параллельных приложениях. Общие последовательные операции - это совершенно другая игра в мяч. (Это только при том, что все 1600 ядер на этом чипе работают параллельно, выполняя по существу одну и ту же инструкцию снова и снова ... и даже это теоретический, а не фактический результат)
Billy ONeal,

@ Билли: Но это медлительность в конкретном классе алгоритмов, а не медлительность в арифметике с двойной точностью (как вы и утверждали). (И процессоры, как правило, тоже не достигают производительности в тестах)
Бен Фойгт

37

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

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

Для некоторых действий клоны довольно хороши, например, подметать пол - каждый может подмести его часть.

Для некоторых действий клоны воняют, например, пишут еженедельный отчет - все клоны, кроме одного, простаивают, а один клон пишет отчет (в противном случае вы просто получаете 100 копий одного и того же отчета).


4
Могу ли я даже ... оба?
Кевин Панко

22
@Kevin: Да, но вам понадобится компьютер с как центральным процессором и графическим процессором! Если бы только была такая вещь!
Иоахим Зауэр

3
Отличная аналогия. Запомню это.
Майо

23

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

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

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

Небольшое замечание: если бы можно было утилизировать процессор и иметь только графический процессор, не думаете ли вы, что мы его переименуем? :)


Я думаю, что большинство современных процессоров рассчитаны на 2, 4 или 8 вещей одновременно.
danielcg

@ danielcg25: И большинство современных графических процессоров рассчитаны на одновременную работу 256, 512, 1024 штук (GTX 680 имеет 1536 ядер CUDA). Каждое отдельное ядро ​​ЦП концептуально является отдельной сущностью, но это не относится к графическому процессору.
Фоши

@ danielcg25: Я знаю, но комментарий с фундаментальным (хотя и преднамеренным) неправильным пониманием ответа может быть вредным, если кто-то читает его, не зная темы. «Быть ​​задницей» в этом смысле не очень ценится на SE, поскольку снижает отношение сигнал / шум.
Фоши

Я просто предоставил некоторую информацию. Сегодня большинство компьютеров способны обрабатывать 2-8 вещей одновременно. Некоторые процессоры могут сделать даже больше, чем это. Это все еще не близко к графическим процессорам, которые делают сотни вещей одновременно.
danielcg

@ danielcg25: Это другой вид обработки, о котором идет речь. Каждое ядро ​​ЦП эффективно отделено, работает со своими частями данных и своими собственными процессами. Каждое ядро ​​ЦП выполняет отдельную задачу, отличную друг от друга, и они не линейно масштабируются вверх - окто-ядро не в два раза полезнее, чем четырехъядерное, не в два раза полезнее, чем двухъядерное. С другой стороны, ядра графических процессоров выполняют одну и ту же задачу для разных частей данных и выполняют линейное масштабирование. Очевидно, что существуют многоядерные процессоры, но это не одно и то же .
Фоши

14

Вы действительно спрашиваете, почему мы не используем GPU-подобные архитектуры в CPU?

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

На самом деле мы используем разные (более графические) архитектуры ЦП. Например, процессоры Niagara довольно многозадачны. SPARC T3 будет работать 512 одновременных потоков.


Почему отрицательный голос?
JKJ

3
Я думаю, последняя строка, так как это просто ложь. На самом деле, я могу думать только об одной основной операционной системе только для x86; и даже этот был портирован на процессоры alpha и ARM, но на данный момент коммерчески не предлагается.
Хавьер

Хорошо. Удален последний раздел, в котором, по моему мнению, поддержка основной операционной системы препятствовала переходу на новые архитектуры. Не может быть в рамках ответа.
JKJ

11

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

  • Я считаю, что каждое исполнительное устройство GPU («ядро») имеет очень ограниченное адресное пространство по сравнению с процессором.

  • Исполнительные блоки GPU не могут эффективно справляться с ветвлением.

  • Исполнительные блоки GPU не поддерживают аппаратные прерывания так же, как CPU.

Я всегда думал, что такими должны быть исполнительные блоки GPU, что-то вроде «SPE» для Playstation 3, они хотят получить блок данных, выполнить ряд последовательных операций над ним, а затем выплюнуть другой блок данные, промыть, повторить. У них не так много адресуемой памяти, как у основного «CPE», но идея состоит в том, чтобы посвятить каждый «SPE» определенной, последовательной задаче. Выход одного блока может питать вход другого блока.

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

Эти «блоки данных» могут быть частью потока, например, список вершин из таблицы состояний игры, данные MPEG с диска и т. Д.

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


Хорошая мысль об оптимизации предсказания ветвлений - я бы никогда не учел это, но вы правы.
Джимми Брек-МакКей

6

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

Был очень старый спор о том, лучше ли иметь много тупых ядер или небольшую группу очень умных ядер. Это легко восходит к 80-м годам.

Внутри процессора есть много возможных расчетов, которые можно сделать. Более умные ядра могут выполнять много разных вычислений одновременно (вроде как многоядерные, но не сложные, см. Параллелизм на уровне команд ). Интеллектуальное ядро ​​может выполнять несколько вычислений одновременно (сложение, вычитание, умножение, деление, операции с памятью), но только по одному за раз; из-за этого они физически больше (и, следовательно, намного дороже), чем более тупые ядра.

Тупое ядро ​​намного меньше, и поэтому к одному чипу можно добавить больше, но не в состоянии выполнить столько же одновременных вычислений. Существует хороший баланс между многими тупыми ядрами и несколькими умными ядрами.

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

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

Современные микропроцессоры - руководство за 90 минут

http://www.lighterra.com/papers/modernmicroprocessors/


пожалуйста, извините за плохую грамматику и в целом стиль написания ниже среднего, использованный выше, у меня не было моего кофе. Это довольно сложная концепция, и ссылка на нее - куда вам следует обратиться, если вы хотите понять больше. не мое плохое объяснение
Silverfire

1
Я исправил это для вас и добавил ссылку.
bwDraco

5

Я хотел бы затронуть один синтаксический момент: термины CPU и GPU являются функциональными именами, а не архитектурными.

Если бы компьютер использовал графический процессор в качестве основного процессора, он стал бы «центральным процессором» (ЦП) независимо от архитектуры и дизайна.


4

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

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

Большинство изящных приемов, которые использовались для того, чтобы заставить GPU выполнять свою работу очень быстро, были впервые разработаны людьми, пытающимися сделать процессоры более быстрыми и качественными. Оказывается, что Word, Excel, Netscape и многие другие вещи, для которых люди используют свои компьютеры, не только не в полной мере используют возможности, предлагаемые специализированными графическими чипами, но даже работают медленнее на этих архитектурах, потому что ветвление часто (очень дорого) и медленно) трубопровод очищает.


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

2

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


Да, один шаг вперед, два шага назад.
Рэндольф Ричардсон,

2

По простой причине: большинство приложений не являются многопоточными / векторизованными.

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

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

Однако с AMD Fusion это изменит то, как нам потребуется использовать вычислительную мощность: либо векторизованное, либо быстрое для одного потока.


2

Причина, по которой мы все еще используем процессоры, заключается в том, что как процессоры, так и графические процессоры имеют свои уникальные преимущества. См. Мой следующий документ, принятый в ACM Computing Surveys 2015, в котором содержится исчерпывающая и исчерпывающая дискуссия о переходе от «дискуссии о CPU к GPU» к «совместным вычислениям CPU-GPU».

Обзор методов гетерогенных вычислений CPU-GPU


1

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


1

gpus - хорошие потоковые процессоры. Вы можете думать об обработке потока как о последовательном умножении длинного массива чисел. Процессоры также имеют возможности потоковой обработки (это называется расширениями SIMD), но вы не можете реализовать всю логику программирования как потоковую обработку, и у компиляторов есть возможность создавать btyecode, который по возможности использует команды simd.

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.