Ni tanto. Una GPU tiene cientos de nucleos. Ya salieron en este año procesadores moviles de 4 nucleos.
Tener varios nucleos es muy util, en parte, ayuda a ahorrar bateria. El problema ENORME no es tener los nucleos, es tener como programarlos!
Las herramientas/lenguajes actuales están muy crudos en ese aspecto (al igual que los OS) ya que están amarrados al concepto de thread/hilos.
Adicionalmente, existe el problema de que no es facil de paralelizar algoritmos/datos, y existen cosas que NO se pueden paralelizar.
Para poder llegar a eso, en parte:
- Hay que abandonar los lenguajes sincronicos
- Trabajar con tipos de datos inmutables
- Dejar a un lado la OO
- Poner a trabajar con la programacion funcional
- Abandonar los hilos
- Tener un sistema de "scheduling" que mezcle paralelizacion + rebalanceo + sequencialidad de forma inteligente
- Y cambio de herramientas (o mejoras. En especial depuracion: Como rayos vamos a depurar un proceso andando en 48 cores???)
Para los que quieren un abrebocas de lo que es trabajar en este tipo de ambientes, un paseito por
http://www.erlang.org/