Nada es gratis. Las GPGPU son SIMD. Las instrucciones SIMD en GPGPU tienden a ser más amplias que las instrucciones SIMD en CPU. Las GPGPU tienden a ser multihilo de grano fino (y tienen muchos más contextos de hardware que las CPU). Las GPGPU están optimizadas para la transmisión . Tienden a dedicar un mayor porcentaje de área a unidades de coma flotante, un menor porcentaje de área a caché y un menor porcentaje de área a rendimiento de enteros.
Hagamos una comparación. El núcleo i7-5960x de Intel tiene 8 núcleos, cada uno con SIMD de 4 de ancho (doble precisión), que funciona a 3 GHz (turbo de 3.5 GHz), un caché L3 de 20 M, consume 356 mm ^ 2 y 140 W y cuesta $ 1000. Entonces 8 * 4 * 3 * 4 = 384 GFlops de doble precisión. (El 4x adicional se debe a que puede hacer dos sumas múltiples multiplicadas por carril vectorial por ciclo). Puede realizar 768 GFlops de precisión simple. Eso es aproximadamente 1.08 DP GFlops / mm ^ 2 y 2.75 DP GFlops / Watt. También hay aproximadamente 57.5 KB / mm ^ 2 de caché en chip.
La GeForce GTX Titan Black de NVidia tiene 15 SMX, cada una con SIMD de doble precisión de 32 de ancho, funcionando a 890MHz (turbo de 980MHz), 3.5M de caché L1 + L2, consume 561mm ^ 2, 250W y cuesta $ 1000. Entonces 15 * 32 * .89 * 4 = 1709 GFlops de doble precisión. (El mismo 4x de dos sumas múltiples multiplicadas por carril vectorial por ciclo). Puede hacer 5126 GFlops de precisión simple. Eso es aproximadamente 3.05 DP GFlops / mm ^ 2 y 6.8 DP GFlops / Watt. Entonces, 3 veces la densidad de coma flotante DP por unidad de área y 3 veces la eficiencia de energía de coma flotante DP. ¿Y la compensación? 6.4 KB / mm ^ 2 de caché en chip. Aproximadamente 9 veces menos denso que la CPU.
Entonces, la principal diferencia es que la GPU ha elegido un equilibrio de área que favorece fuertemente el punto flotante (y especialmente el punto flotante de precisión simple) sobre el caché. Incluso ignorando el hecho de que necesita copiar cosas de un lado a otro entre la CPU y la GPU para hacer E / S, lo bien que va a hacer la GPU en comparación con la CPU depende del programa que esté ejecutando.
Si tiene un programa de punto flotante paralelo de datos con muy poca divergencia de control (todos los carriles vectoriales están haciendo lo mismo al mismo tiempo) y su programa está transmitiendo (no puede beneficiarse del almacenamiento en caché), entonces la GPU estará a punto 3 veces más eficiente por unidad de área o por vatio. Pero si tiene una cantidad significativa de control divergente, un trabajo no paralelo a datos que hacer, o podría beneficiarse de grandes estructuras de datos de lectura muchas veces, la CPU probablemente lo hará mejor.