Si estaba construyendo una computadora, ¿qué artículo debería importarme más?
Desde un punto de vista práctico deberías probablemente prestar mucha atención a la placa base y la CPU dada la relativa dificultad de actualización en comparación con la GPU. Después de la compra es un momento horrible para descubrir que no tiene espacio para cuatro GPU o un procesador lo suficientemente rápido como para mantenerlos a todos ocupados.
También debe tener en cuenta que el rendimiento de la GPU se informa con mayor frecuencia en FLOP de precisión simple, y cae bastante para la doble precisión. Si necesita la precisión adicional en sus simulaciones, terminará muy por debajo de la velocidad anunciada.
A las carreras de ingeniería de software
Hay realmente dos preocupaciones principales desde el punto de vista del software, el cuello de botella de Von Neumann y el modelo de programación. La CPU tiene bastante buen acceso a la memoria principal, la GPU tiene una gran cantidad de memoria más rápida a bordo. No se desconoce que el tiempo en que los datos entran y salen de la GPU niega por completo cualquier ganancia de velocidad. En general, la CPU es un ganador para el cómputo moderado en grandes cantidades de datos, mientras que la GPU sobresale en el cómputo pesado en pequeñas cantidades. Todo lo cual nos lleva al modelo de programación.
A un alto nivel, el problema es el antiguo y honrado debate MIMD / SIMD. Los sistemas de instrucción múltiple / datos múltiples han sido los grandes ganadores en informática general y comercial. En este modelo, que incluye el SMP, existen múltiples procesadores que ejecutan cada uno su propio flujo de instrucción individual. Es el equivalente informático de una cocina francesa, donde se dirige a un pequeño número de cocineros expertos para completar tareas relativamente complicadas.
Los sistemas de instrucción única / datos múltiples, por otro lado, se parecen más a una gran sala llena de empleados encadenados a sus escritorios siguiendo las instrucciones de un controlador maestro. "¡Todos AGREGEN las líneas 3 y 5!" Fue utilizado en su forma pura en el ILLIAC y en algunos sistemas "mini-super", pero se perdió en el mercado. Las GPU actuales son un primo cercano, son más flexibles pero comparten la misma filosofía general.
Para resumir brevemente:
- Para cualquier operación, la CPU será más rápida, mientras que la GPU puede realizar muchas simultáneamente. La diferencia es más evidente con flotantes de 64 bits.
- Los núcleos de la CPU pueden operar en cualquier dirección de memoria, los datos para la GPU deben estar empaquetados en un área más pequeña. Solo ganas si estás haciendo suficientes cálculos para compensar el tiempo de transferencia.
- El código pesado en condicionales generalmente será más feliz en la CPU.