Почему бы не использовать GPU в качестве процессора? - программирование
Подтвердить что ты не робот

Почему бы не использовать GPU в качестве процессора?

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

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

Итак, мой вопрос: Можем ли мы использовать графические процессоры вместо процессоров для ОС, приложений и т.д.

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

4b9b3361

Ответ 1

Графические процессоры предназначены для обработки графики (очевидно), которая по своей сути является преимуществом параллельной обработки (одновременно выполняющей несколько задач/вычислений). Это означает, что в отличие от современных процессоров, которые, как вы знаете, обычно имеют 2-8 ядер, графические процессоры имеют сотни ядер. Это означает, что они уникально подходят для обработки таких вещей, как трассировка лучей или что-то еще, что вы можете встретить в 3D-игре или другой графической работе.

Процессоры, с другой стороны, имеют относительно ограниченное количество ядер, потому что задачи, с которыми сталкивается ЦП, обычно не получают параллельной обработки почти столько же, сколько рендеринг 3D-сцены. Фактически, наличие слишком большого количества ядер в процессоре может фактически ухудшить производительность машины, из-за характера задач, которые обычно выполняет центральный процессор, и того факта, что многие программы не будут записаны, чтобы использовать преимущества множества ядер, Это означает, что для просмотра в Интернете или большинства других настольных задач процессор с несколькими мощными ядрами лучше подходит для работы, чем графический процессор со множеством и меньшими ядрами.

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

Ответ 2

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

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

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

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

Ответ 3

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

В GPU просто отсутствуют части и множество инструкций из наборов инструкций, которые нужны ОС, это вопрос сложности. Просто подумайте о функциях виртуализации (Intel VT-x или AMD AMD-v).

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

Подробнее об этом расширенном ответе суперпользователя здесь.

Ответ 4

Потому что никто не будет тратить на это деньги и время. За исключением некоторых энтузиастов, подобных этому: http://gerigeri.uw.hu/DawnOS/history.html Теперь Dawn работает на графических процессорах: с новым эмулятором, поддерживающим OpenCL, Dawn теперь загружается и работает на графических картах, графических картах и IGP (с OpenCL 1.0). Dawn - первая и единственная операционная система, которая полностью загружается и работает на графическом чипе.