Página principal » cómo » ¿Por qué seguimos utilizando CPU en lugar de GPU?

    ¿Por qué seguimos utilizando CPU en lugar de GPU?

    Las GPU se utilizan cada vez más para tareas no gráficas como cálculos de riesgo, cálculos de dinámica de fluidos y análisis sísmico. ¿Qué nos impide adoptar dispositivos controlados por GPU??

    La sesión de Preguntas y Respuestas de hoy nos llega por cortesía de SuperUser, una subdivisión de Stack Exchange, una agrupación impulsada por la comunidad de sitios web de preguntas y respuestas.

    La pregunta

    El lector superusuario Ell se mantiene actualizado con las noticias de tecnología y tiene curiosidad por saber por qué no estamos utilizando más sistemas basados ​​en GPU:

    Me parece que en estos días se realizan muchos cálculos en la GPU. Obviamente, los gráficos se realizan allí, pero utilizando CUDA y similares, la IA, los algoritmos de hash (creo que los Bitcoins) y otros también se realizan en la GPU. ¿Por qué no podemos simplemente deshacernos de la CPU y usar la GPU solo? Lo que hace que la GPU sea mucho más rápida que la CPU?

    ¿Por qué de hecho? Lo que hace que la CPU sea única?

    La respuesta

    DragonLord, colaborador de Superusuarios, ofrece una visión general de las diferencias entre GPU y CPU:

    TL; respuesta DR: Las GPU tienen muchos más núcleos de procesador que CPU, pero debido a que cada núcleo de GPU se ejecuta significativamente más lento que un núcleo de CPU y no tienen las características necesarias para los sistemas operativos modernos, no son adecuados para realizar la mayor parte del procesamiento en la informática diaria. Son los más adecuados para operaciones de computación intensiva como el procesamiento de video y simulaciones físicas..

    La respuesta detallada: GPGPU es todavía un concepto relativamente nuevo. Las GPU se utilizaron inicialmente para renderizar gráficos solamente; a medida que la tecnología avanzaba, la gran cantidad de núcleos en las GPU en relación con las CPU se explotó desarrollando capacidades computacionales para las GPU para que puedan procesar muchas corrientes de datos paralelas simultáneamente, sin importar cuáles sean esos datos. Si bien las GPU pueden tener cientos o incluso miles de procesadores de flujo, cada uno funciona más lento que el núcleo de la CPU y tiene menos funciones (incluso si están completas y se pueden programar para ejecutar cualquier programa que una CPU pueda ejecutar). Las características que faltan en las GPU incluyen interrupciones y memoria virtual, que se requieren para implementar un sistema operativo moderno.

    En otras palabras, las CPU y las GPU tienen arquitecturas significativamente diferentes que las hacen más adecuadas para diferentes tareas. Una GPU puede manejar grandes cantidades de datos en muchos flujos, realizando operaciones relativamente simples en ellos, pero no es adecuada para el procesamiento pesado o complejo en uno o pocos flujos de datos. Una CPU es mucho más rápida por núcleo (en términos de instrucciones por segundo) y puede realizar operaciones complejas en una o varias corrientes de datos con más facilidad, pero no puede manejar muchas corrientes de manera eficiente.

    Como resultado, las GPU no son adecuadas para manejar tareas que no se benefician de manera significativa o no pueden ser puestas en paralelo, incluidas muchas aplicaciones comunes para el consumidor, como los procesadores de texto. Además, las GPU utilizan una arquitectura fundamentalmente diferente; uno tendría que programar una aplicación específicamente para una GPU para que funcione, y se requieren técnicas significativamente diferentes para programar las GPU. Estas diferentes técnicas incluyen nuevos lenguajes de programación, modificaciones a los lenguajes existentes y nuevos paradigmas de programación que son más adecuados para expresar una computación como una operación paralela que deben realizar muchos procesadores de flujo. Para obtener más información sobre las técnicas necesarias para programar GPU, consulte los artículos de Wikipedia sobre el procesamiento continuo y la computación paralela..

    Las GPU modernas son capaces de realizar operaciones vectoriales y aritmética de punto flotante, con las últimas tarjetas capaces de manipular números de punto flotante de doble precisión. Los marcos como CUDA y OpenCL permiten escribir programas para GPU, y la naturaleza de las GPU las hace más adecuadas para operaciones altamente paralelizables, como en computación científica, donde una serie de tarjetas de cómputo de GPU especializadas pueden ser un reemplazo viable para una pequeña compute cluster como en NVIDIA Tesla Personal Supercomputers. Los consumidores con GPU modernas que tienen experiencia con Folding @ home pueden usarlos para contribuir con clientes de GPU, que pueden realizar simulaciones de plegamiento de proteínas a velocidades muy altas y contribuir más al proyecto (asegúrese de leer primero las preguntas frecuentes, especialmente las relacionadas con GPUs). Las GPU también pueden habilitar una mejor simulación física en los videojuegos con PhysX, acelerar la codificación y decodificación de video y realizar otras tareas que requieren un uso intensivo de la informática. Es este tipo de tareas que las GPU son las más adecuadas para realizar.

    AMD es pionero en el diseño de un procesador llamado Unidad de Procesamiento Acelerado (APU) que combina núcleos de CPU x86 convencionales con GPU. Esto podría permitir que los componentes de CPU y GPU trabajen juntos y mejorar el rendimiento en sistemas con espacio limitado para componentes separados. A medida que la tecnología siga avanzando, veremos un grado creciente de convergencia de estas partes antes separadas. Sin embargo, muchas tareas realizadas por los sistemas operativos y las aplicaciones de PC aún son más adecuadas para las CPU, y se necesita mucho trabajo para acelerar un programa usando una GPU. Debido a que tanto software existente utiliza la arquitectura x86, y como las GPU requieren diferentes técnicas de programación y carecen de varias características importantes necesarias para los sistemas operativos, una transición general de la CPU a la GPU para la computación diaria es extremadamente difícil.


    ¿Tienes algo que agregar a la explicación? Apague el sonido en los comentarios. ¿Quieres leer más respuestas de otros usuarios de Stack Exchange con experiencia en tecnología? Echa un vistazo a la discusión completa aquí.