¿Por qué las personas usan GPU para computación de alto rendimiento en lugar de un chip más especializado?

105

Según tengo entendido, la gente comenzó a usar GPU para la informática general porque son una fuente adicional de potencia informática. Y aunque no son tan rápidos como CPU para cada operación, tienen muchos núcleos, por lo que pueden adaptarse mejor para el procesamiento en paralelo que una CPU. Esto tiene sentido si ya posee una computadora que tiene una GPU para el procesamiento de gráficos, pero no necesita los gráficos y le gustaría tener más potencia de cálculo. Pero también entiendo que las personas compran GPU específicamente para agregar potencia informática, sin intención de usarlas para procesar gráficos. Para mí, esto parece similar a la siguiente analogía:

Necesito cortar mi hierba, pero mi cortadora de césped está debilitada. Así que quito la jaula del ventilador de caja que guardo en mi habitación y afilo las aspas. Lo pego con cinta adhesiva a mi cortacésped y descubro que funciona razonablemente bien. Años más tarde, soy el oficial de compras de un gran negocio de cuidado del césped. Tengo un presupuesto considerable para gastar en implementos para cortar césped. En lugar de comprar cortadoras de césped, compro un montón de ventiladores de caja. De nuevo, funcionan bien, pero tengo que pagar por piezas adicionales (como la jaula) que no terminaré usando. (a los fines de esta analogía, debemos suponer que las cortadoras de césped y los ventiladores de caja cuestan aproximadamente lo mismo)

Entonces, ¿por qué no hay un mercado para un chip o un dispositivo que tenga la potencia de procesamiento de una GPU, pero no la sobrecarga de gráficos? Se me ocurren algunas explicaciones posibles. ¿Cuál de ellos, si alguno, es correcto?

  • Tal alternativa sería demasiado costosa de desarrollar cuando la GPU ya es una buena opción (las cortadoras de césped no existen, ¿por qué no usar este ventilador de caja perfectamente bueno?).
  • El hecho de que 'G' significa gráficos denota solo un uso previsto, y no significa realmente que se haga un esfuerzo para adaptar mejor el chip al procesamiento de gráficos que cualquier otro tipo de trabajo (las cortadoras de césped y los ventiladores de caja son lo mismo cuando te pones a ello; no se necesitan modificaciones para que una funcione como la otra).
  • Las GPU modernas llevan el mismo nombre que sus antiguas predecesoras, pero en estos días las de gama alta no están diseñadas para procesar específicamente gráficos (los ventiladores de caja modernos están diseñados para funcionar principalmente como cortacéspedes, incluso si los anteriores no lo fueran).
  • Es fácil traducir prácticamente cualquier problema al lenguaje de procesamiento de gráficos (el césped puede cortarse soplando aire sobre él muy rápido).

EDITAR:

Mi pregunta ha sido respondida, pero en base a algunos de los comentarios y respuestas, siento que debo aclarar mi pregunta. No estoy preguntando por qué no todos compran sus propios cálculos. Claramente eso sería demasiado costoso la mayor parte del tiempo.

Simplemente observé que parece haber una demanda de dispositivos que puedan realizar rápidamente cálculos paralelos. Me preguntaba por qué parece que el dispositivo óptimo es la Unidad de procesamiento de gráficos, en lugar de un dispositivo diseñado para este propósito.

Alex S
fuente
66
Porque están especializados para este tipo de cosas; es básicamente el mismo tipo de matemática. Y nVidia ha creado y vendido placas solo para GPU para que las personas realicen este tipo de procesamiento de números masivamente paralelos.
Heptita
77
Tenga en cuenta que tenemos "unidades" especializadas agregadas a las fichas. AES se realiza en hardware (creo) en las CPU. AVX también se implementa en hardware. Sin embargo, ¿dónde te detienes? El fabricante de chips no sabe lo que necesita y la mayoría de las personas no tienen las capacidades (tecnológicas o financieras) para tener sus propios chips diseñados para tareas muy específicas. Las tarjetas gráficas son, como ya se dijo, un tipo de arquitectura especializada, que se presta bien a ciertas tareas. No son buenos para todo, pero para ciertas tareas específicas y, por lo tanto, se usan allí.
DetlevCM
44
Una analogía más precisa reemplazaría los ventiladores de caja con cosechadoras agrícolas de 100 metros de ancho.
MooseBoys
66
Mi PC ya tiene una GPU lista para usar, diseñar y producir un chip dedicado me costaría un par de millones.
PlasmaHH
19
Prueba otra analogía. Supongamos que tenemos ventiladores de caja y rotores de helicóptero. En nuestro mundo hipotético, las aplicaciones para los ventiladores de caja necesitaban ventiladores progresivamente más grandes que funcionaran a velocidades más altas, hasta que terminamos con ventiladores de caja de paletas de fibra de carbono de 20 m, y la producción en masa los hizo baratos. Entonces alguien se dio cuenta de que un ventilador de caja de 20 m es esencialmente un rotor de helicóptero con una jaula alrededor. Realmente es así de similar.
Graham

Respuestas:

109

Es realmente una combinación de todas tus explicaciones. Más barato y más fácil, ya existe, y el diseño se ha alejado de los gráficos puros.


Una GPU moderna se puede ver principalmente como procesadores de flujo con algún hardware gráfico adicional (y algunos aceleradores de función fija, por ejemplo, para codificar y decodificar video). La programación GPGPU en estos días utiliza API específicamente diseñadas para este propósito (OpenCL, Nvidia CUDA, AMD APP).

Durante la última década o dos, las GPU han evolucionado de una tubería de función fija (casi solo gráficos) a una tubería programable (los sombreadores le permiten escribir instrucciones personalizadas) a API más modernas como OpenCL que proporcionan acceso directo a los núcleos de sombreadores sin el tubería gráfica que lo acompaña.

Los bits de gráficos restantes son menores. Son una parte tan pequeña del costo de la tarjeta que no es significativamente más barato dejarlas fuera, e incurrir en el costo de un diseño adicional. Por lo tanto, esto generalmente no se hace, no hay un equivalente orientado a la computación de la mayoría de las GPU, excepto en los niveles más altos, y son bastante caros.

Las GPU normales de "juegos" se usan muy comúnmente porque las economías de escala y la relativa simplicidad las hacen baratas y fáciles de comenzar. Es un camino bastante fácil desde la programación de gráficos hasta la aceleración de otros programas con GPGPU. También es fácil actualizar el hardware ya que hay productos más nuevos y más rápidos disponibles, a diferencia de las otras opciones.


Básicamente, las opciones se reducen a:

  • CPU de uso general, ideal para ramificación y código secuencial
  • GPU normal de "juego"
  • GPU orientada a la computación, por ejemplo, Nvidia Tesla y Radeon Instinct A menudo no son compatibles con la salida de gráficos, por lo que la GPU es un nombre poco apropiado. Sin embargo, utilizan núcleos de GPU similares a los de las GPU normales y el código OpenCL / CUDA / APP es más o menos directamente portátil.
  • FPGA, que utilizan un modelo de programación muy diferente y tienden a ser muy costosos. Aquí es donde existe una barrera de entrada significativa. Tampoco son necesariamente más rápidos que una GPU, dependiendo de la carga de trabajo.
  • ASIC, circuitos diseñados a medida (hardware). Esto es muy muy costoso y solo vale la pena con una escala extrema (estamos hablando de miles de unidades, como mínimo), y donde está seguro de que el programa nunca tendrá que cambiar. Raramente son factibles en el mundo real. También tendrá que rediseñar y probar todo cada vez que la tecnología avance: no puede simplemente cambiar un nuevo procesador como puede hacerlo con CPU y GPU.
Mover
fuente
16
Los ASIC también tienen sentido cuando la informática literalmente se paga sola (cripto minería)
fanático del trinquete el
44
En realidad, los FPGA a menudo son peores que los GPU. El problema es que los FPGA son muy flexibles; pueden implementar muchas operaciones diferentes. Sin embargo, el cálculo es generalmente una forma de matemática y, de hecho, el volumen es solo dos operaciones: suma y multiplicación (la resta y la división son variantes de lo anterior). Las GPU son muy, muy buenas en esas dos operaciones, mucho más que las FPGA.
MSalters
19
Necesita aclarar más sobre los FPGA. La idea de que hay un "paso adelante" es un poco engañosa. Son más un paso de lado.
Yakk
66
Como ejemplo del último, Google tiene sus propias "unidades de procesamiento de tensor" para el aprendizaje automático. Hasta qué punto están personalizados no está claro, pero se describen como ASIC.
mbrig
44
@MSalters Uno de los principales puntos de venta de FPGAs sobre GPUs es el rendimiento / Watt, que se está volviendo más importante a medida que los centros de datos comienzan a chocar contra la pared de potencia (los FPGA son generalmente más eficientes). En cuanto a las matemáticas, los FPGA son comparables a las GPU en aritmética de punto fijo y entero, y solo se retrasan en matemáticas de punto flotante.
wilcroft
32

Mi analogía favorita:

  • CPU : un genio de Polymath. Puede hacer una o dos cosas a la vez, pero esas cosas pueden ser muy complejas.
  • GPU : una tonelada de trabajadores poco calificados. Cada uno de ellos no puede resolver problemas muy grandes, pero en masa se puede hacer mucho. A su pregunta, sí, hay algunos gráficos por encima, pero creo que es marginal.
  • ASIC / FPGA : una empresa. Puede contratar una tonelada de trabajadores poco calificados o un par de genios, o una combinación de trabajadores y genios poco calificados.

Lo que use depende de la sensibilidad a los costos, el grado en que una tarea es paralelizable y otros factores. Debido a cómo se ha desarrollado el mercado, las GPU son la mejor opción para la mayoría de las aplicaciones altamente paralelas y las CPU son la mejor opción cuando la energía y el costo unitario son las principales preocupaciones.

Directamente a su pregunta: ¿por qué una GPU sobre un ASIC / FPGA? Generalmente costo. Incluso con los precios inflados de la GPU de hoy, sigue siendo (generalmente) más barato usar una GPU que diseñar un ASIC para satisfacer sus necesidades. Como señala @ user912264, hay tareas específicas que pueden ser útiles para los ASIC / FPGA. Si tiene una tarea única y se beneficiará de la escala, puede valer la pena diseñar un ASIC / FPGA. De hecho, puede diseñar / comprar / licenciar diseños de FPGA específicamente para este propósito. Esto se hace para alimentar los píxeles en televisores de alta definición, por ejemplo.

BobtheMagicMoose
fuente
77
Los comentarios no son para responder de todos modos, y esto me parece una respuesta razonable.
Raimund Krämer
1
@BobtheMogicMoose Pero podría ser un orden de magnitud más rápido usar un FPGA personalizado diseñado para análisis genómico que tener el código equivalente en una GPU. Cuando pagas a los científicos para que esperen los resultados, el FPGA más rápido se amortiza muy rápido.
doneal24
Los FPGA también son mucho más accesibles para el desarrollador común: Microsoft, por ejemplo, tiene una solución de inteligencia artificial en la nube que utiliza FPGA (Project BrainWave). AWS también tiene algunas ofertas. Cualquiera puede alquilar algunos FPGA personalizados para tareas especializadas sin tener que construirlo ellos mismos, lo que no es factible para muchos casos de uso incluso hace unos años.
brichins
Sí, creo que incluso hay kits de pasatiempo FPGA que son comparables a un arduino raspberry-pi. Todavía pienso que programar FPGAs es mucho más costoso que arquitecturas más desarrolladas.
BobtheMagicMoose
10

Tu analogía es mala. En la analogía, cuando compra equipos para un gran negocio de cuidado del césped, asume que hay buenas cortadoras de césped disponibles. Este no es el caso en el mundo de la informática: las GPU son la mejor herramienta disponible.

Los costos de I + D y las posibles ganancias de rendimiento para un chip especializado probablemente sean demasiado altos para justificar la fabricación de uno.

Dicho esto, soy consciente de que Nvidia lanzó algunas GPU específicamente para computación de propósito general, no tenían salidas de video, un poco como vender ventiladores de caja con las jaulas ya retiradas.

jstbnfdsrtah
fuente
9

Por supuesto, puede usar chips especializados, ya sea para la eficiencia energética o la velocidad de cálculo. Déjame contarte la historia de la minería de Bitcoin:

  • Bitcoin es nuevo, los geeks minan con sus CPU.
  • Bitcoin es algo nuevo, los geeks inteligentes minan con sus GPU.
  • Bitcoin es ahora (un poco) famoso, la gente compra FPGA.
  • Bitcoin ahora es famoso (2013), incluso los novatos compran ASIC ("Circuitos integrados de aplicaciones específicas") para extraer de manera eficiente.
  • Bloquee las caídas de recompensas (periódicamente), incluso los ASIC antiguos ya no son rentables.

Entonces, no, no hay razones para usar una GPU en lugar de una "calculadora gigante" especializada. Cuanto mayores son los incentivos económicos, más se especializa el hardware. Sin embargo, son bastante difíciles de diseñar e imposibles de fabricar si no está produciendo miles a la vez. Si no es viable diseñar chips, puede comprar uno de esos en el Walmart más cercano.

TL; DR Por supuesto, puedes usar chips más especializados.

MCCCS
fuente
1
"Por supuesto, puedes usar chips más especializados", pero hay chips especializados para bitcoin (SHA-256), luego para litecoin (scrypt) y eso es todo. No existe hardware informático de alto rendimiento para otros problemas. (Es decir, con un rendimiento superior a las GPU de gama alta actuales)
Agent_L
8

Lo que describe en su analogía es exactamente lo que sucedió. Justo cuando agarró su ventilador y afiló las cuchillas para tratar de usarlo como un cortacésped, un grupo de investigadores se dio cuenta de "¡Oye, tenemos una unidad de procesamiento multi-núcleo bastante agradable aquí, intentemos usarla para cálculos de uso general! ".

El resultado fue bueno y la pelota comenzó a rodar. La GPU pasó de ser un dispositivo de solo gráficos para admitir la computación de propósito general para ayudar en las situaciones más exigentes.

Porque, de todos modos, la operación más exigente desde el punto de vista informático que esperamos de las computadoras son los gráficos. Es suficiente echar un vistazo a los impresionantes avances de cómo se ven los juegos hoy en comparación con cómo lo hicieron hace unos años. Esto significa que se ha invertido mucho esfuerzo y dinero en el desarrollo de las GPU, y el hecho de que también podrían usarse para acelerar una cierta clase de computación de propósito general (es decir, extremadamente paralela) acaba de aumentar su popularidad.

En conclusión, la primera explicación que ofrece es la más precisa:

  • Tal alternativa sería demasiado costosa de desarrollar cuando la GPU ya es una buena opción.

Las GPU ya estaban allí, están disponibles para todos y funcionaron.

Mario Chapa
fuente
55
Tengo que estar en desacuerdo acerca de que "la operación más exigente desde el punto de vista computacional" son los gráficos, dependiendo, por supuesto, de exactamente quién es "nosotros". Para usuarios generales, sí, pero en la comunidad de ciencia e ingeniería, hay muchas cosas más exigentes que los gráficos. Después de todo, los gráficos aceptables (como para los juegos) se pueden hacer con una sola combinación de PC y GPU de rango medio. Los problemas importantes a menudo combinan cientos o miles de tales unidades para obtener un rendimiento en el rango de petaflop, y luego los problemas aún pueden llevar días o semanas de tiempo de cálculo.
jamesqf
La operación más exigente computacionalmente que espero de mi computadora es técnicamente gráficos, pero los cálculos de estructura desde el movimiento no son lo que la mayoría de las personas (o diseñadores de GPU) piensan cuando escuchan la palabra "gráficos".
Mark
5

Específicamente, las GPU no son "núcleos" en el sentido de "paralelismo de tareas". En su mayor parte, es en forma de "paralelismo de datos". SIMD es "instrucción única de datos múltiples". Lo que esto significa es que no harías esto:

for parallel i in range(0,1024): c[i] = a[i] * b[i]

Esto significaría que tiene 1024 punteros de instrucción que realizan tareas separadas que progresan a diferentes velocidades. SIMD, o "computación vectorial" realizará instrucciones en todos los arreglos de una vez, más o menos así:

c = a * b

Los "bucles" están en las instrucciones "*" y "=", en lugar de estar fuera de las instrucciones. Lo anterior haría esto para todos los 1024 elementos al mismo tiempo, en el mismo puntero de instrucción para todos ellos. Es como tener tres grandes registros para a, by c. El código SIMD es extremadamente limitado y solo funciona bien para problemas que no son excesivamente "ramificados".

En casos realistas, estos valores SIMD no son tan grandes como 1024 elementos. Imagine una variable que es una pandilla de int32 unidas. Puede pensar en multiplicar y asignar como una instrucción de máquina real.

int32_x64 c; int32_x64 b; int32_x64 a; c = b * a;

Las GPU reales son más complicadas que SIMD, pero esa es la esencia de ellas. Es por eso que no puedes simplemente lanzar un algoritmo de CPU aleatorio en una GPU y esperar una aceleración. Cuanta más instrucción ramifique el algoritmo, menos apropiado será para una GPU.

Robar
fuente
5

Las otras respuestas aquí son bastante buenas. También arrojaré mis 2 centavos.

Una razón por la que las CPU se han vuelto tan generalizadas es porque son flexibles. Puede reprogramarlos para una variedad infinita de tareas. En estos días, es más barato y más rápido para las compañías que producen productos colocar una pequeña CPU o microcontrolador en algo y programar su funcionalidad que desarrollar circuitos personalizados para hacer la misma tarea.

Al usar el mismo dispositivo que otros, puede aprovechar las soluciones conocidas a los problemas al usar ese mismo dispositivo (o similar). Y a medida que la plataforma madura, sus soluciones evolucionan y se vuelven muy maduras y optimizadas. La gente que codifica en estos dispositivos también adquiere experiencia y se vuelve muy buena en su oficio.

Si creara un nuevo tipo de dispositivo desde cero, una alternativa a una GPU, les tomaría años incluso a los primeros usuarios adoptar un buen conocimiento de cómo usarlo. Si conecta un ASIC a su CPU, ¿cómo optimiza el cálculo de descarga en ese dispositivo?

La comunidad de arquitectura de computadoras ha estado entusiasmada con esta idea durante varios años (obviamente, ha sido popular antes, pero recientemente ha visto un renacimiento). Estos 'aceleradores' (su término) tienen diversos grados de reprogramabilidad. El problema es, ¿cuán estrechamente define el alcance del problema que su acelerador puede abordar? Incluso he hablado con algunas personas que estaban trabajando creando un acelerador usando circuitos analógicos con amplificadores operacionales para calcular ecuaciones diferenciales. Gran idea, pero alcance extremadamente estrecho.

Después de que tenga un acelerador que funcione, las fuerzas económicas decidirán su destino. La inercia del mercado es una fuerza increíble. Incluso si algo es una gran idea, ¿es económicamente factible refactorizar sus soluciones de trabajo para usar este nuevo dispositivo? Tal vez tal vez no.

Las GPU son realmente horribles para ciertos tipos de problemas, por lo que muchas personas / empresas están trabajando en otros tipos de dispositivos. Pero las GPU ya están tan arraigadas, ¿sus dispositivos llegarán a ser económicamente viables? Supongo que ya veremos.

Editar: Ampliando un poco mi respuesta, ahora que estoy fuera del autobús.

Un caso de estudio de precaución es el proyecto Intel Larrabee. Comenzó como un dispositivo de procesamiento paralelo que podía hacer gráficos en software; no tenía hardware gráfico especializado. Hablé con alguien que trabajó en el proyecto, y una de las principales razones por las que dijeron que falló y se canceló (además de la horrible política interna) fue que simplemente no pudieron lograr que el compilador produjera un buen código para él. Por supuesto, produjo código de trabajo, pero si el objetivo de su producto es el máximo rendimiento, es mejor que tenga un compilador que produzca un código bastante óptimo. Esto recuerda mi comentario anterior sobre la falta de una gran experiencia tanto en hardware como en software para que su nuevo dispositivo sea un gran problema.

Algunos elementos del diseño de Larrabee se convirtieron en Xeon Phi / Intel MIC. Este producto realmente llegó al mercado. Estaba completamente enfocado en paralelizar cálculos científicos y otros cálculos de tipo HPC. Parece que ahora es un fracaso comercial. Otra persona con la que hablé en Intel implicaba que simplemente no eran competitivos en precio / rendimiento con las GPU.

La gente ha intentado integrar la síntesis lógica para FPGA en compiladores, para que pueda generar automáticamente código para sus aceleradores FPGA. No funcionan tan bien.

Un lugar que parece ser un suelo realmente fértil para los aceleradores, u otras alternativas a las GPU, es la nube. La economía de escala que existe en estas grandes empresas como Google, Amazon y Microsoft hace que valga la pena invertir en esquemas de computación alternativos. Alguien ya mencionó las unidades de procesamiento de tensor de Google. Microsoft tiene FPGA y otras cosas en toda su infraestructura de Bing y Azure. La misma historia con Amazon. Tiene sentido si la balanza puede compensar su inversión en tiempo, dinero y lágrimas de ingeniería.

En resumen, la especialización está en desacuerdo con muchas otras cosas (economía, madurez de la plataforma, experiencia en ingeniería, etc.). La especialización puede mejorar significativamente su rendimiento, pero reduce el alcance al que se aplica su dispositivo. Mi respuesta se centró en muchos de los aspectos negativos, pero la especialización también tiene muchos beneficios. Absolutamente debe ser perseguido e investigado, y como mencioné, muchos grupos lo están haciendo de manera bastante agresiva.

Lo sentimos, edite nuevamente: creo que su premisa inicial es incorrecta. Creo que fue menos un caso de buscar fuentes adicionales de potencia informática, y más un caso de personas que reconocen una oportunidad. La programación de gráficos es un álgebra muy lineal, y la GPU se diseñó para realizar de manera eficiente operaciones comunes como la matriz de multiplicación, operaciones de vectores, etc. Operaciones que también son muy comunes a la computación científica.

El interés en las GPU comenzó justo cuando la gente llegó a reconocer que las promesas dadas por el proyecto EPIC de Intel / HP fueron exageradas (finales de los 90 y principios de los 2000). No hubo una solución general a la paralelización del compilador. Entonces, en lugar de decir "dónde encontramos más potencia de procesamiento, oh, podríamos probar la GPU", creo que fue más "tenemos algo que es bueno en los cálculos paralelos, ¿podemos hacer que esto sea más generalmente programable". Muchas de las personas involucradas pertenecían a la comunidad informática científica, que ya tenía un código Fortran paralelo que podían ejecutar en máquinas Cray o Tera (Tera MTA tenía 128 hilos de hardware). Quizás hubo movimiento desde ambas direcciones, pero solo he escuchado menciones de los orígenes de GPGPU desde esta dirección.

NerdPirate
fuente
Por "aceleradores", ¿te refieres a hardware personalizado o super clústeres de nodos informáticos de baja potencia? ¿Puede elaborar proporcionando referencia a algún ejemplo de hardware acelerador?
manav mn
Lo siento, pensé que lo dejé claro por el contexto. Accelerator es solo un término general para un coprocesador o una tarjeta de descarga. El punto flotante estaba originalmente en un coprocesador y no en la CPU principal, y habría sido considerado un acelerador. GPU, DSP, Xeon Phi, FPGA cuando están en una tarjeta PCIe o algo similar, la ecuación diferencial analógica que mencioné, hay dispositivos que ayudan en la virtualización, hay investigaciones actuales sobre aceleradores de redes neuronales. Esos son todos ejemplos de aceleradores.
NerdPirate
4

ingrese la descripción de la imagen aquí

Un ASIC (silicio personalizado) es muy rápido, pero es muy costoso de diseñar y fabricar. Los ASIC solían tener un propósito específico, y la CPU era un enfoque que permitía que las computadoras fueran "programadas" para que las tareas informáticas pudieran ser realizadas por software. Los primeros CPU dieron a las personas la capacidad de aprovechar el poder de ASIC sin el costo masivo al programar el chip en el campo. Este enfoque tuvo TAN éxito que dio lugar a la computadora (muy) rápida que está utilizando en este momento.

Entonces, ¿por qué las GPU?

A mediados de los 90, 3DFX se dio cuenta de que las tareas de renderizado 3D eran tan específicas que un ASIC personalizado funcionaría MUCHO mejor que una CPU. Crearon un coprocesador de computadora que descargó las tareas de representación 3D de la CPU a este coprocesador, al que denominaron "GPU". La competencia y la demanda del mercado llevaron la innovación en este espacio a un punto en el que las GPU realizaban cálculos MUCHO más rápido que las CPU, por lo que surgió la pregunta: "¿Por qué no puedo usar la GPU para reducir mis números en lugar de la CPU?" Los fabricantes de GPU vieron una demanda y una forma de ganar más dinero, por lo que comenzaron a alterar sus plataformas para permitir a los desarrolladores usar su hardware. Pero el hardware del hardware era tan específico para el propósito que había, y todavía hay, limitaciones en lo que puede pedirle a la GPU que haga. No voy a entrar en detalles sobre por qué aquí.

Entonces, ¿por qué no había más silicio específico para un propósito? ¿Por qué SOLO gráficos?

Dos razones: 1) Precio. Las GPU tenían un buen mercado y podían justificarlo, pero incluso en aquel entonces, era un gran riesgo. Nadie sabía realmente si 3DFX podía obtener una ganancia (resulta que no podían, y desapareció). Incluso ahora, con el tamaño del mercado de GPU, en realidad solo hay 3 competidores. 2) Las CPU realmente satisfacían la necesidad de "silicio personalizado" con extensiones de instrucciones. Piense en MMX: este fue en realidad el intento de Intel de acelerar los gráficos en la CPU justo cuando 3DFX estaba ganando velocidad. Desde entonces, el conjunto de instrucciones x86 ha crecido hasta ser bastante masivo con todas estas extensiones personalizadas. Muchas de estas extensiones tenían sentido en ese momento (como MMX), pero ahora son en gran medida de peso muerto en el procesador. Sin embargo, no puede eliminarlos, porque luego rompe el software existente. Eso' s en realidad uno de los puntos de venta para ARM: ARM es un conjunto de instrucciones simplificado. No hay tantas extensiones de instrucciones, pero esto hace que el silicio sea más pequeño y más barato de fabricar.

Me parece que podrías ganar mucho dinero si pudieras reducir el costo del silicio personalizado. ¿Nadie está trabajando en esto?

Existe una tecnología llamada FPGA: matriz de compuerta programable de campo, que existe desde los primeros días de la informática. Es esencialmente un microchip que puede diseñar "en el campo" utilizando software. Es una tecnología muy buena, pero toda la estructura necesaria para hacer que el chip sea programable ocupa MUCHO silicio y hace que los chips funcionen a velocidades de reloj mucho más bajas. Los FPGA PUEDEN ser más rápidos que los de la CPU, si tiene suficiente silicio en el chip Y puede paralelizar efectivamente la tarea. Pero están limitados en la cantidad de lógica que puedes poner en ellos. Todos los FPGA, excepto los más caros, fueron más lentos que los GPU para la minería de bitcoins temprana, pero sus homólogos de ASIC efectivamente terminaron la rentabilidad de la minería de GPU. Otras criptomonedas han utilizado algoritmos específicos que no se pueden paralelizar, por lo que FPGA y ASIC '

El limitador principal con FPGA es el tamaño de silicio: ¿cuánta lógica puede caber en el chip? El segundo es la velocidad del reloj, porque es difícil optimizar cosas como puntos calientes, fugas y conversaciones cruzadas en un FPGA. Los métodos de fabricación más nuevos han minimizado estos problemas, e Intel se ha asociado con Altera para proporcionar un FPGA que los ingenieros puedan utilizar para aprovechar los beneficios del "silicio personalizado" como coprocesador en un servidor. Entonces viene, en cierto sentido.

¿Alguna vez los FPGA serán reemplazados por CPU y GPU?

Probablemente no en el corto plazo. Las últimas CPU y GPU son MASIVAS y el silicio está altamente ajustado para un rendimiento térmico y eléctrico. No puede optimizar los FPGA de la misma manera que un ASIC personalizado. Salvo alguna tecnología innovadora, la CPU probablemente seguirá siendo el núcleo de su computadora con coprocesadores FPGA y GPU.

Robear
fuente
1
Muchas de estas extensiones tenían sentido en ese momento (como MMX), pero ahora son en gran medida de peso muerto en el procesador. El renderizado 3D está lejos de ser el único caso de uso para SIMD. La mayor parte del "peso" de MMX son las unidades de ejecución, y pueden compartirse con vectores más amplios como SSE2, AVX2 y AVX512. Esos son muy utilizados para la codificación de video de alta calidad en CPU y muchas otras tareas, incluida la informática de alto rendimiento. Pero también implementaciones de biblioteca de memchr, strlen y muchas otras cosas. por ejemplo, filtrar una matriz de más de 1 elemento a la vez
Peter Cordes
3

De hecho, hay una placa especializada para la informática de alta velocidad, por ejemplo, Xilinx tiene una lista de 178 placas PCI-e que utilizan sus FPGA, y aproximadamente un tercio de estas placas son "destructores de números" con uno o varios chips FPGA potentes y muchos placa de memoria DDR. También hay placas DSP de alto rendimiento ( ejemplo ) destinadas a tareas informáticas de alto rendimiento.

Supongo que la popularidad de las placas GPU se debe a su objetivo en un grupo de clientes más amplio. No tienes que invertir en hardware especial para jugar con Nvidia CUDA, por lo que para cuando tengas una tarea que requiera hardware especial, las GPU Nvidia tendrán una ventaja competitiva en que ya sabes cómo programarlas.

Dmitry Grigoryev
fuente
2

Creo que la respuesta a su pregunta depende de cómo definir el cómputo de alto rendimiento.

En general, el cálculo de alto rendimiento está relacionado con el tiempo de cálculo. En ese caso, me gusta compartir el enlace del clúster informático de alto rendimiento .

El enlace se especifica el motivo del uso de la GPU; El uso de tarjetas gráficas (o más bien sus GPU) para hacer cálculos para la computación grid es mucho más económico que usar CPU, a pesar de ser menos preciso.

Cloud Cho
fuente
2
Las GPGPU de gama alta tienen un buen rendimiento para doubleuna precisión de 64 bits , no solo una precisión de 32 bits float. (Algunas GPU regulares escatiman en HW para double). Todos los principales proveedores admiten matemáticas IEEE FP (creo que incluso con denormals). Por lo tanto, no hay pérdida de precisión a menos que desee cambiar la precisión por el rendimiento, por ejemplo, con FP de media precisión de 16 bits que tiene un rendimiento aún mejor en algún hardware (y, por supuesto, la mitad del ancho de banda de memoria). El código de alto rendimiento en las CPU a menudo también usa 32 bits float, para obtener el doble de elementos por vector SIMD y la mitad del ancho de banda de la memoria.
Peter Cordes
1
@PeterCordes He visto algo de trabajo en informática aproximada que incluso se reduce a coma flotante de ocho bits, aunque no creo que muchas GPU lo admitan en el hardware.
JAB