¿Por qué Mike Pound mide la capacidad computacional de su computadora con sus tarjetas gráficas y no con sus procesadores?

17

Estaba viendo hace poco un gran video de Computerphile sobre contraseñas en el que Mike Pound se jacta de que la supercomputadora de su compañía tiene 4 tarjetas gráficas (Titan X, para ser exactos).

Como entusiasta de la simulación numérica, sueño con construir un escritorio únicamente para el trabajo de simulación. ¿Por qué Mike Pound mide la capacidad computacional de su computadora con sus tarjetas gráficas y no con sus procesadores? Si estuviera construyendo una computadora, ¿qué artículo debería importarme más?

Ra31513
fuente
11
No creo que sea necesariamente una pregunta de Gorilla vs. Shark ... Hay una pregunta simple: "¿Por qué Mike Pound mide la capacidad computacional de su computadora con sus tarjetas gráficas y no con sus procesadores?" que puede responderse y su respuesta tiene un valor constructivo para futuros lectores.
Maybe_Factor
66
@gnat: ni siquiera cerca. Por supuesto, la pregunta, en su forma actual, no se trata realmente de ingeniería de software. Pero supongo que podría interpretarse como una pregunta sobre la ingeniería del sistema, donde system = "combinación de hardware + software".
Doc Brown
10
Una computadora con 4 tarjetas gráficas no equivale a una supercomputadora (y tampoco lo hace un grupo de 10 Raspberry Pis).
Matti Virkkunen
10
Esa es solo una configuración de PC muy costosa, no una supercomputadora ...
Bakuriu
3
¿No es la respuesta simple a "¿Por qué Mike Pound mide la capacidad computacional de su computadora con sus tarjetas gráficas" porque el contexto es el descifrado de contraseñas? Si el espacio del problema es otra cosa, lo que debe preocuparse podría ser algo completamente diferente.
JimmyJames

Respuestas:

32

Mike Pound obviamente valora la capacidad computacional de las tarjetas gráficas por encima de la capacidad computacional de las CPU.

¿Por qué? Una tarjeta gráfica está compuesta básicamente por MUCHOS procesadores simplificados que se ejecutan en paralelo. Para algunos trabajos de simulación, gran parte del cálculo puede paralelizarse fácilmente y procesarse en paralelo en los miles de núcleos disponibles en las tarjetas gráficas, lo que reduce el tiempo total de procesamiento.

¿Qué artículo debería importarme más? Realmente depende de la carga de trabajo que le interese y de cómo esa carga de trabajo puede / es paralelizada para su uso en una tarjeta gráfica. Si su carga de trabajo es un conjunto vergonzosamente paralelo de cálculos simples, y el software está escrito para aprovechar las tarjetas gráficas disponibles, entonces más tarjetas gráficas tendrán un impacto en el rendimiento mucho mayor que más CPU (dólar por dólar).

Quizás_Factor
fuente
55
Sumando algunos números. Digamos que su computadora principal sería un Servidor AMD Epyc, 64 núcleos, 128 con Hyperthreading. Digamos también que una tarjeta gráfica "core" es solo un 10% más rápida. ONE TitanX todavía tiene 3072 núcleos cuda, aproximadamente 12000 para la configuración. ¿Captar la idea? Si puede ejecutar el problema en la tarjeta gráfica, no es "más rápido", es como comparar la velocidad de un carro de caballos con un automóvil de fórmula 1.
TomTom
3
+1 para 'conjunto vergonzosamente paralelo de cálculos simples', Muy bien escrito. Corto y al grano.
Michael Viktor Starberg
11
@TomTom: En realidad, mi comparación preferida es comparar un automóvil de fórmula 1 (su CPU) con un tren bala. Claro, el tren y el auto tienen aproximadamente la misma velocidad. Pero el tren puede mover a 1000 personas de A a B más rápido que el automóvil de fórmula 1.
slebetman
2
@slebetman, el punto es que la CPU suele ser mucho más rápida en el rendimiento de un solo núcleo (no aproximadamente la misma velocidad). Tal vez podamos comprometernos y comparar un avión supersónico con una locomotora de vapor.
Darren Ringer
2
Si tengo que elegir una analogía basada en el vehículo, diría que la CPU es como un avión de combate (es mucho más rápido para el transporte punto a punto y tiene muchos trucos bajo la manga que otros vehículos no pueden, pero solo pueden llevar una carga muy pequeña) mientras que la GPU es como un buque de carga (puede transportar significativamente más carga en paralelo, pero tiene un tiempo de respuesta mucho más lento).
Lie Ryan
5

Revisa https://developer.nvidia.com/cuda-zone (y google cuda nvidia para obtener más información). La arquitectura cuda y las tarjetas gráficas de alta gama son bastante utilizadas para las supercomputadoras de escritorio. Por lo general, puede armar una caja de varios Tflop por menos de $ 10K (usd) utilizando componentes de caja blanca listos para usar.

Entonces...

Como entusiasta de la simulación numérica, sueño con construir un escritorio únicamente para el trabajo de simulación.

... cuda es, con mucho, el mejor juego de la ciudad para ti. Tal vez intente preguntar de nuevo en /scicomp// u otro sitio web de stackexchange, más directamente involucrado con este tipo de cosas.

(Por cierto, supongo que se siente cómodo con la idea de que estamos hablando de programación masivamente paralela aquí, por lo que es posible que deba familiarizarse con ese paradigma para el diseño de algoritmos).

John Forkosh
fuente
Y volvemos a Ordos como siempre.
Michael Viktor Starberg
2
@MichaelViktorStarberg ¿Soy el único que no comprende la referencia de Ordos?
MarnixKlooster ReinstateMonica
Me temo que eres ...: /
Ismael Miguel
44
@MarnixKlooster: tuve que buscar en Google "Ordos". No estoy seguro de qué tiene que ver una "ciudad fantasma" en China con supercomputadoras o teraflops.
Robert Harvey
@MarnixKlooster De hecho no lo eres.
jpmc26
2

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.
Matthew Gauthier
fuente