Подтвердить что ты не робот

Углубленный анализ разницы между CPU и GPU

Я искал основные различия между процессором и графическим процессором, точнее тонкой линией, отделяющей CPU и gpu. Например, почему бы не использовать несколько процессоров вместо gpu и наоборот. Почему gpu "быстрее" в хрустких вычислениях, чем процессор. Каковы некоторые типы вещей, которые один из них может делать, а другой не может делать или делать эффективно и почему. Пожалуйста, не отвечайте на такие ответы, как "Центральный процессор" и "Блок обработки графики". Я ищу подробный технический ответ.

4b9b3361

Ответ 1

Графические процессоры - это в основном массивные параллельные компьютеры. Они хорошо работают на проблемах, которые могут использовать крупномасштабную декомпозицию данных, и они предлагают ускорение заказов по этим проблемам.

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

У них также есть и другие недостатки. Во-первых, у вас должен быть один, на который нельзя положиться, если вы не контролируете аппаратное обеспечение. Также есть накладные расходы при передаче данных из основной памяти в память GPU и обратно.

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

Ответ 2

Сначала посмотрите эту демонстрацию:

http://www.nvidia.com/object/nvision08_gpu_v_cpu.html

Это было весело!

Итак, что важно здесь, что "ЦП" можно контролировать, чтобы выполнять в основном любые вычисления по команде; Для вычислений, которые не связаны друг с другом или где каждое вычисление сильно зависит от его соседей (а не только одного и того же оператора), вам обычно нужен полный процессор. Например, компиляция большого проекта C/С++. Компилятор должен прочитать каждый токен каждого исходного файла последовательно, прежде чем он сможет понять смысл следующего; Просто потому, что есть много исходных файлов для обработки, все они имеют разную структуру, и поэтому одни и те же вычисления не применяются accros исходных файлов.

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


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

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

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