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

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

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

    Сегодняшняя сессия Вопросов и Ответов приходит к нам благодаря SuperUser - подразделению Stack Exchange, групповой группе веб-сайтов вопросов и ответов..

    Вопрос

    Читатель SuperUser Ell следит за техническими новостями и интересуется, почему мы не используем больше систем на базе GPU:

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

    Почему так? Что делает процессор уникальным?

    Ответ

    Участник SuperUser DragonLord предлагает хорошо поддерживаемый обзор различий между GPU и CPU:

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

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

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

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

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

    AMD является пионером в разработке процессоров под названием Accelerated Processing Unit (APU), которая сочетает в себе обычные процессорные ядра x86 с графическими процессорами. Это может позволить компонентам CPU и GPU работать вместе и повысить производительность в системах с ограниченным пространством для отдельных компонентов. Поскольку технология продолжает развиваться, мы увидим растущую степень сближения этих когда-то отдельных частей. Однако многие задачи, выполняемые операционными системами и приложениями ПК, все еще лучше подходят для процессоров, и для ускорения программы с использованием графического процессора требуется много работы. Поскольку в существующем программном обеспечении используется архитектура x86, а для графических процессоров требуются различные методы программирования и отсутствуют некоторые важные функции, необходимые для операционных систем, общий переход с CPU на GPU для повседневных вычислений чрезвычайно затруднен..


    Есть что добавить к объяснению? Звук выключен в комментариях. Хотите узнать больше ответов от других технически подкованных пользователей Stack Exchange? Ознакомьтесь с полным обсуждением здесь.