Las CPU son SISD , GPUs son SIMD .
SISD es un acrónimo de Instrucción única, Datos únicos. Las CPU son buenas para realizar operaciones secuenciales: toma esto, hazlo, muévelo allí, toma otro, agrégalos juntos, escribe en un dispositivo, lee la respuesta, etc. Ejecutan principalmente operaciones simples que toman uno o dos valores y devuelven un valor.
SIMD es Instrucción única, Datos múltiples: la misma operación se ejecuta en múltiples conjuntos de datos simultáneamente. Por ejemplo toma 128 valores X 1 -X 128 , toma 128 valores Y 1 -Y 128 , multiplica los valores correspondientes en pares y devuelve 128 resultados. Un procesador SISD tendría que ejecutar 128 instrucciones (+ lecturas / escrituras en memoria) porque solo puede multiplicar dos números a la vez. El procesador SIMD hace esto en pocos pasos o tal vez incluso en uno solo si solo 128 números caben en su registro.
Las CPU de SISD funcionan bien para la computación cotidiana porque son en su mayoría secuenciales, pero hay algunas tareas que requieren procesar grandes cantidades de datos de manera similar, por ejemplo, procesamiento de gráficos, renderizado de video, contraseñas de craqueo, bitcoins de minería, etc. Las GPU permiten una paralelización masiva de computación, siempre que todos los datos deben ser procesados de la misma manera.
Bueno, eso es pura teoría. En el mundo real, las CPU regulares ofrecen algunas instrucciones SIMD ( SSE ), por lo que algunas cosas de datos múltiples se pueden hacer de manera más eficiente en una CPU normal. Al mismo tiempo, no todas las ALU en las GPU tienen que trabajar en la misma cosa porque se agrupan en lotes (ver La respuesta de mokubai ). Así que las CPU no son puramente SISD y las GPU no son puramente SIMD.
¿Cuándo es beneficioso usar GPU para cálculos? Cuando tus cálculos son realmente, realmente masivamente paralelizables. Debe tener en cuenta que la escritura de entrada en la memoria de la GPU lleva tiempo y la lectura de los resultados también lleva algún tiempo. Puede obtener el mayor aumento de rendimiento cuando puede construir una tubería de procesamiento que haga muchos cálculos antes de abandonar la GPU.