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

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

351 голос | спросил ell 10 J000000Sunday11 2011, 17:31:41

15 ответов


370

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


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

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

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

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

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

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

ответил bwDraco 10 J000000Sunday11 2011, 18:00:49
244
  

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

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

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

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

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

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

ответил Lie Ryan 11 J000000Monday11 2011, 00:22:09
74

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

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

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

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

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

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

ответил Billy ONeal 11 J000000Monday11 2011, 01:17:30
36

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

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

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

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

ответил John Robertson 11 J000000Monday11 2011, 19:39:21
23

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

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

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

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

ответил Phoshi 10 J000000Sunday11 2011, 21:51:46
14

Вы действительно спрашиваете почему мы не используем архитектуры с графическим процессором в CPU?

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

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

ответил jkj 10 J000000Sunday11 2011, 21:57:36
11

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

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

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

  • Блоки выполнения GPU не поддерживают аппаратные прерывания так же, как это делают CPU.

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

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

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

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

ответил LawrenceC 10 J000000Sunday11 2011, 19:55:56
6

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

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

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

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

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

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

  

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

     

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

ответил Silverfire 12 J000000Tuesday11 2011, 08:36:14
5

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

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

ответил Andrew Neely 15 J000000Friday11 2011, 15:44:05
4

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

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

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

ответил dmckee 10 J000000Sunday11 2011, 18:57:18
2

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

ответил Petruza 11 J000000Monday11 2011, 01:35:07
2

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

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

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

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

ответил jokoon 17 J000000Sunday11 2011, 20:44:16
2

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

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

ответил user984260 7 J0000006Europe/Moscow 2015, 14:53:13
1

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

ответил Yura Zaletskyy 16 12015vEurope/Moscow11bEurope/MoscowMon, 16 Nov 2015 18:42:30 +0300 2015, 18:42:30
1

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

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

ответил Uğur Gümüşhan 1 J000000Friday16 2016, 14:46:23

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132