Процессоры SISD, графические процессоры SIMD.
SISD является аббревиатурой от одной инструкции, отдельных данных. Процессоры хороши в выполнении последовательных операций: возьмите это, сделайте это, переместите его туда, возьмите еще один, добавьте их обоих вместе, запишите на устройство, прочитайте ответ и так далее. Они выполняют в основном простые операции, которые принимают одно или два значения и возвращают одно значение.
SIMD - это одна инструкция, несколько данных: одна и та же операция выполняется одновременно для нескольких наборов данных. Например, взять 128 значений X 1 -X 128, взять 128 значений Y 1 -Y 128, умножить соответствующие значения попарно и вернуть 128 результатов. Процессор SISD должен будет выполнить 128 инструкций (+ чтение / запись в память), поскольку он может умножать только два числа одновременно. Процессор SIMD делает это за несколько шагов или, может быть, даже за один, если в его регистр помещается только 128 номеров.
SISD-процессоры хорошо работают для повседневных вычислений, потому что они в основном последовательные, но есть некоторые задачи, которые требуют перебора больших объемов данных аналогичным образом - например, обработка графики, рендеринг видео, взлом паролей, майнинг биткойнов и т.д. Графические процессоры обеспечивают массовое распараллеливание вычисления, при условии, что все данные должны быть обработаны одинаково.
Хорошо, это чистая теория. В реальном мире обычные процессоры предлагают несколько SIMD-инструкций (SSE), поэтому на обычном процессоре можно более эффективно выполнять несколько операций с данными. В то же время не все ALU в графических процессорах должны работать над одним и тем же, поскольку они сгруппированы в партии (см . Ответ Мокубая). Таким образом, процессоры не являются чисто SISD, а графические процессоры - не просто SIMD.
Когда полезно использовать GPU для вычислений? Когда ваши вычисления действительно, очень массово распараллеливаются. Вы должны учитывать, что запись ввода в память графического процессора требует времени, а чтение результатов также занимает некоторое время. Вы можете получить наибольший прирост производительности, если сможете создать конвейер обработки, который выполняет много вычислений перед тем, как покинуть GPU.