Una Unidad de Procesamiento Gráfico (GPU) es un procesador de propósito especial, optimizado para los cálculos comúnmente (y repetidamente) requeridos para los gráficos por ordenador, particularmente las operaciones SIMD.
Una Unidad Central de Procesamiento (CPU) es un procesador de propósito general – en principio puede hacer cualquier cálculo, pero no necesariamente de una manera óptima para cualquier cálculo dado. Se puede realizar el procesamiento de gráficos en una CPU, pero es probable que el resultado no sea ni de lejos tan rápido como el de una GPU correctamente programada.
Las razones por las que hoy en día se tiene al menos una de cada en el sistema informático típico son:
- Los ordenadores que interactúan directamente con las personas (es decir no los servidores) suelen utilizar ampliamente los gráficos por ordenador para hacerlo, y los cálculos implicados son numerosos y deben hacerse en tiempo real;
- al tener al menos uno de cada, se gana computación paralela y mayor rendimiento del sistema informático: mientras su GPU está haciendo cálculos para los gráficos, su CPU puede estar haciendo otros cálculos no gráficos al mismo tiempo.
- La Ley de Moore nos ha proporcionado tal riqueza en el área y la capacidad de los chips de silicio a precios tan bajos que hoy en día resulta barato añadir procesadores de propósito especial de varios tipos en casi todas las arquitecturas de los sistemas informáticos, a menudo múltiples, para lograr un mayor rendimiento y desempeño al realizar más cálculos diferentes en paralelo (al mismo tiempo).
El truco está en programarlos para que funcionen bien juntos.
Cabe destacar que, a partir de 2014, la GPU típica tiene un motor SIMD más amplio que la CPU típica y, por lo tanto, si tus cálculos no gráficos se ajustan a ese tipo de modelo de cálculo paralelo pero, por lo demás, sobrepasan el motor o motores vectoriales de la CPU (p. ej, AVX, Streaming SIMD Extensions (SSE)), se aconseja codificar la aplicación con Compute Unified Device Architecture (CUDA) y/u OpenCL y utilizar las GPU para aumentar la aplicación. Esto se conoce más genéricamente como computación de propósito general en la GPU, una subdisciplina relativamente nueva de la computación de alto rendimiento.