TL;DR ответ: GPU имеют гораздо больше процессорных ядер, чем CPU, но поскольку каждое ядро GPU работает значительно медленнее, чем ядро CPU, и не имеет функций, необходимых для современных операционных систем, они не подходят для выполнения большей части вычислений в повседневных вычислениях. Они больше всего подходят для таких вычислительных операций, как обработка видео и моделирование физики.
- *
GPGPU - это все еще относительно новая концепция. Изначально GPU использовались только для рендеринга графики; по мере развития технологий, большое количество ядер в GPU по сравнению с CPU было использовано путем развития вычислительных возможностей GPU, чтобы они могли обрабатывать множество параллельных потоков данных одновременно, независимо от того, какими могут быть эти данные. Хотя GPU могут иметь сотни и даже тысячи потоковых процессоров, каждый из них работает медленнее, чем ядро CPU, и обладает меньшим количеством функций (даже если они Turing complete и могут быть запрограммированы на выполнение любой программы, которую может запустить CPU). Функции, отсутствующие в GPU, включают прерывания и виртуальную память, которые необходимы для реализации современной операционной системы.
Другими словами, CPU и GPU имеют значительно различную архитектуру, что делает их лучше подходящими для различных задач. GPU может обрабатывать большие объемы данных во многих потоках, выполняя относительно простые операции над ними, но он плохо подходит для тяжелой или сложной обработки одного или нескольких потоков данных. CPU намного быстрее в расчете на одно ядро (с точки зрения инструкций в секунду) и может выполнять сложные операции над одним или несколькими потоками данных проще, но не может эффективно обрабатывать много потоков одновременно.
В результате GPU не подходят для решения задач, которые не получают значительной выгоды от распараллеливания или не могут быть распараллелены, включая многие распространенные потребительские приложения, такие как текстовые процессоры. Более того, GPU используют принципиально другую архитектуру; для работы нужно было бы запрограммировать приложение специально для GPU, а для программирования GPU требуются значительно отличающиеся методики. Эти различные техники включают новые языки программирования, модификации существующих языков и новые парадигмы программирования, которые лучше подходят для выражения вычислений как параллельной операции, выполняемой многими потоковыми процессорами. Более подробную информацию о технологиях, необходимых для программирования GPU, можно найти в статьях Википедии о потоковой обработке и параллельных вычислениях .
Современные GPU способны выполнять векторные операции и арифметику с плавающей запятой, а новейшие карты способны манипулировать числами с плавающей запятой с двойной точностью. Такие каркасы, как CUDA и OpenCL, позволяют писать программы для GPU, а природа GPU делает их наиболее подходящими для высокопараллельных операций, например, в научных вычислениях, где серия специализированных вычислительных карт на GPU может стать жизнеспособной заменой небольшому вычислительному кластеру, как в Персональные суперкомпьютеры NVIDIA Tesla . Потребители современных GPU, имеющие опыт работы с Folding@home, могут использовать их для работы с GPU-клиентами , которые могут выполнять симуляцию фолдинга белков на очень высоких скоростях и вносить больший вклад в проект (обязательно прочитайте сначала FAQs , особенно те, которые связаны с GPU). Графические процессоры также позволяют улучшить симуляцию физики в видеоиграх с помощью PhysX, ускорить кодирование и декодирование видео, а также выполнять другие ресурсоемкие задачи. Именно для выполнения таких задач наиболее подходят GPU.
AMD является пионером в разработке процессора под названием Accelerated Processing Unit (APU) , который сочетает в себе обычные x86 CPU ядра с графическими процессорами. Такой подход обеспечивает графическую производительность, значительно превосходящую графические решения, интегрированные в материнскую плату (хотя и не уступающую более дорогим дискретным GPU), и позволяет создать компактную, недорогую систему с хорошей мультимедийной производительностью без необходимости использования отдельного GPU. Новейшие процессоры Intel также предлагают встроенную графику на кристалле, хотя конкурентоспособная интегрированная производительность GPU в настоящее время ограничена несколькими чипами с Intel Iris Pro Graphics. По мере развития технологий мы увидим все большую степень конвергенции этих разрозненных частей. AMD видит будущее, где CPU и GPU - одно целое, способное плавно работать вместе над одной и той же задачей .
Тем не менее, многие задачи, выполняемые операционными системами и приложениями ПК, все еще лучше подходят для CPU, и требуется много работы, чтобы ускорить программу с помощью GPU. Так как так много существующего программного обеспечения использует архитектуру x86, и так как GPU требуют различных техник программирования и упускают несколько важных функций, необходимых для операционных систем, общий переход с CPU на GPU для повседневных вычислений очень сложен.