¿Por qué no podemos usar un sistema completamente basado en GPU en lugar de usarlo en combinación con una CPU, ya que solo puede proporcionar una mayor potencia informática que una CPU?

  1. Las GPU están diseñadas para procesar gráficos más rápido. Esto significa que están diseñados para el rendimiento. Realmente están optimizados para realizar ciertas operaciones mucho más rápido que las CPU y, en consecuencia, ciertas operaciones son mucho más lentas que las CPU.
  2. La GPU es mucho más lenta en velocidad de reloj que las CPU (a partir de ahora). Creo que un NVIDIA Fermi 580 funciona a ~ 700 Mhz. Su CPU promedio de almacenamiento en estos días es> 2 Ghz.
  3. Podría pensar que armar 100 GPU obviamente vencería a una CPU de 4 núcleos / 8 núcleos. Lamentablemente, las GPU solo son rápidas si todas las GPU se pueden utilizar al mismo tiempo. Dichos problemas que pueden dividirse en muchos subproblemas sin dependencias entre ellos se denominan problemas vergonzosamente paralelos.
  4. El movimiento del mouse, el tacto, el teclado, la programación y la administración de la memoria no son problemas embarazosamente paralelos. De hecho, muchas cosas que hacemos todos los días con nuestras PC no son vergonzosamente paralelas.

En este artículo, puede ver que problemas simples como la secuencia de Fibonacci, la multiplicación de matrices que se puede dividir en pedazos más pequeños sin muchos problemas son los que realmente pueden explotar completamente el paralelismo cuando agregamos más y más núcleos. Las cosas que hacemos todos los días, como ordenar, copiar la memoria, son malas cuando se trata de explotar el paralelismo.

Dicho esto, las GPU hacen lo que están diseñadas para hacer mejor, las CPU hacen lo que están diseñadas para hacer mejor.

Gpu se destaca al ejecutar una gran cantidad de hilos, todos haciendo el mismo tipo de cosas. Es decir, son excelentes para el procesamiento por lotes.

La CPU se destaca al ejecutar múltiples subprocesos de varios tipos con latencia insignificante. Esta capacidad es muy importante para el sistema operativo. El sistema operativo tiene que hacer muchas cosas diferentes, como programar diferentes trabajos, abrir archivos, administrar el tráfico de red, administrar entradas, etc. con latencia casi nula. Gpu no es bueno para estas cosas.
También en la CPU, el cambio de contexto es muy eficiente.
Básicamente ambos son buenos en cosas diferentes. El poder de cálculo sin procesar no es lo único. La baja latencia es más importante para la mayoría de nuestras necesidades, como la multitarea, etc. Además, las GPU de hoy no pueden ejecutar diferentes tipos de hilos como un editor de texto y un corrector ortográfico al mismo tiempo.

¡Bastante simple! Apenas hemos desarrollado un lenguaje de programación capaz de trabajar en arquitecturas paralelas. E incluso si se desarrolla, la GPU no sería adecuada para trabajos que no son necesariamente paralelos. Por ejemplo, procesadores de texto.

Ahora, tanto la CPU como la GPU tienen más de un núcleo. La diferencia es que la GPU tiene muchos núcleos en comparación con la CPU, ya que necesita controlar todas las áreas de la pantalla. Pero para hacer ese trabajo, los núcleos no necesitan ser potentes (ofertas en MHz y menores). Mientras que, por otro lado, la CPU también tiene más de un núcleo, pero todos son bastante potentes (ofertas en GHz).

En el caso de la CPU, no necesitamos tantos núcleos como la GPU. Conduciría al cálculo de muchos gastos generales, lo que no es bueno.