jueves, noviembre 16, 2017

Autor:

LCC Kevin Salmeron Vicente

Desarrollador Profesional CUDA / Open CL

 

El concepto de computo paralelo no es para nada nuevo, y ha formado parte de la industria de la computación desde ya algún tiempo . Con el paso de los años, el beneficio de la disminución de los costos de producción y apertura de los mercados, el hardware ha llegado a muchos lugares y usuarios a los que no se tenía acceso. Hablando específicamente del cómputo paralelo con GPU, este se ha masificado en los últimos años.

Todo comenzó cuando NVIDIA introdujo la arquitectura CUDA al mercado en 2006, pues habían descubierto que podían utilizar los GPUs para procesar algo más que información gráfica, embebiendo capacidades para procesar información vectorial, incluyendo mejoras en su arquitectura que habían heredado de las FPU de Ageia PhysX, misma que comprarían en un instante como parte de su estrategia, la cual con el paso del tiempo resulto ser muy bien planeada. Aunque el mercado de cómputo paralelo no existía, puesto que no había necesidades específicas las cuales satisficieran esta nueva tecnología, si sirvió como un gran campo de exploración para científicos, investigadores y desarrolladores.

Como es costumbre los fabricantes no tardaron en responder con su propuesta, ATi por su parte respondió con su tecnología a la cual llamo STREAM (si, y no la plataforma de distribución de títulos de gaming), desafortunadamente esta propuesta no tuvo la acogida por parte de los desarrolladores e investigadores y esto se debió en parte a la poca difusión aunado con malas estrategias para impulsar la adopción en la comunidad de desarrollo, así como las nulas alianzas de negocios que podían haber difundido la tecnología y hacer crecer su campo de acción.

 

 

 

Al final la tecnología de ATi murió y hoy en día solo es historia. Muy poco tiempo después apareció otro gigante de la tecnología con una propuesta bastante interesante, se trataba de Apple con su OpenCL que en 2009 no se podía saber muy bien cuál era el propósito de dicho framework más que acelerar aplicaciones específicas. En un rápido giro, AMD ya como dueño de las patentes de ATi, decidió darle el soporte a OpenCL puesto que había abandonado su proyecto propio para desarrollo de aplicaciones de procesamiento en GPU.

 

 

Con el crecimiento tan rápido de NVIDIA y su tecnología CUDA, más fabricantes decidieron adoptar el framework desarrollado por Apple y se volvieron parte del Khaos Group, mismo grupo que da soporte a proyectos abiertos como OpenGL.

Hoy en día, se trata de los frameworks más usados en cuanto a Cómputo paralelo por medio de GPU se refiere, pero además se han expandido. Hoy en día estas plataformas soportan el uso parcial en procesadores ARM y no solo en GPUs y procesadores x86.

Cuando escuchamos OpenCL y CUDA es probable que no nos suene tan familiar, o puede que rápidamente relacionemos alguna de las dos tecnologías con videojuegos. Pero estas tecnologías están presentes en los últimos avances más importantes para la industria de los últimos días.

 

 

Hoy se puede notar la fuerte presencia de OpenCL en el minado de criptomonedas desde 2010 que estas aparecieran casi al mismo tiempo que OpenCL .

El cómputo paralelo ha estado inherente a la evolución del cómputo moderno, una natural forma de avanzar y adaptar el hardware a la manera de programar y desarrollar software.

Sin duda es la solución a muchos problemas, aunque en algunas ocasiones la solución de estos  ha tenido que esperar a que el hardware evolucione un poco más, por ejemplo, el soporte a algoritmos recursivos que a pesar de la evolución del cómputo por GPU no había sido soportado hasta hace poco.

La industria hoy en día ha encontrado una excelente manera de hacer crecer el performance de las aplicaciones que hasta hace poco parecían demasiado pesadas, como por ejemplo el procesamiento digital de señales (DSP) que se ha logrado acelerar con el uso de co-procesamiento por medio del GPU.

El cómputo paralelo no es exclusivo de los GPU, pero sin duda hoy en día es el más popular, pues ha logrado ofrecer la mayor cantidad de potencia bruta de cálculo disponible para el usuario, inclusive por arriba del mismo CPU. Esto porque un GPU observa una arquitectura un poco más sencilla, lo que le permite tener una mayor cantidad de unidades lógico-aritméticas, que son las encargadas de realizar operaciones matemáticas básicas dentro de un microprocesador. El hecho de ser más sencillas ha permitido que los GPUs tengan una cantidad más grande de núcleos, por lo tanto una cantidad más grande de potencia de cálculo disponible, esto a costa de potencia en operaciones de lógica, que al paso del tiempo han cambiado con ayuda una visión más amplia por parte de los fabricantes.

 

 

Hoy en día, el mundo del GPU computing se reduce solo a 3 fabricantes principales, luchando un cerrado mano a mano, por su parte AMD se ha enfocado de una manera impresionante al usuario y se ha aprovechado de que su tecnología barata en combinación de un framework abierto como OpenCL han estado vigentes para que las aplicaciones como el cryptomining eleven sus ventas de forma impresionante, así como la increíble aceptación por parte de los desarrolladores que han tenido a bien incluir a NVIDIA en aplicaciones de alta demanda de rendimiento, a diferencia Intel se ha mantenido en un nivel algo furtivo, manteniéndose con un perfil más bien bajo puesto que no se ha enfocado en hacerse crecer como un competidor del mercado de consumo en cuanto a Co-procesamiento.

 

 

Evidentemente el GPU computing ha logrado penetrar mucho en el aceleramiento de aplicaciones, pero hoy en día sigue siendo una tecnología emergente, y su paradigma no es de los más usados, debido a que aunque su acogida por el sector académico va en ascenso. En muchos países en vías de desarrollo no es muy conocido, pero sin duda es una gran área de oportunidad que los fabricantes deberían aprovechar para sembrar este prometedor paradigma.

 

Nota: Las opiniones y conclusiones expresadas en el siguiente artículo son de exclusiva responsabilidad del autor y no necesariamente reflejan la opinión de HardwareMX ni de ninguno de sus colaboradores, toda la información aquí usada es de dominio público y no se encuentra legalmente privilegiada. Las marcas y tecnologías aquí mencionadas son propiedad de sus respectivos dueños y no se representa de ninguna manera parcial o formal una alianza comercial con ninguna de ellas.

Tags: , , , , , , , , , ,

Related Article

2 Comments

A. David Garza Marín septiembre 4, 2017 at 9:40 pm

Quizá sería bueno mencionar que el cómputo paralelo NO inició con nVidia en el año 2006. El Cómputo paralelo tiene una historia mucho más longeva que ésa (el concepto, de hecho, se remonta incluso hasta 1842). Por el contexto, veo que a lo que te refieres es al uso de las GPGPU para el cómputo paralelo, aunque eso tampoco proviene de nVidia, sino que proviene de ejercicios que se empezaron a elaborar en la academia desde finales de la década de los años 90 con la llegada de procesadores gráficos con Shaders programables y el soporte a punto flotante. De hecho, antes que CUDA vinieron APIs como Sh/RapidMind, Brook y Accelerator, mismas a las que le siguió, con el tiempo, CUDA. Hay otros estándares en el mercado (como RenderScript, propio de Android), pero en la PC ciertamente dos de los otras grandes implementaciones son OpenCL (de Khronos Group) y DirectCompute (de Microsoft). OpenCL se ha convertido en el estándar de facto (por su carácter abierto), y DirectCompute es muy utilizado en las propias aplicaciones de Microsoft. Por lo demás, me parece un realmente buen aporte. 🙂

    Kevin Salmeron Vicente septiembre 7, 2017 at 5:38 pm

    Hola David,

    Muchas gracias por tus comentarios, son realmente muy valiosos para nosotros.

    Entrando en materia estás en lo correcto, el computo paralelo data de fechas bastante anteriores al 2006, conceptualmente como refieres es tan vieja como el mismo computo moderno. Como siempre, gracias a los ejercicios desarrollados en los laboratorios con diferentes tecnologías, las cuales no necesariamente llegaron a comercializarse, pero si sentaron un precedente fundamental para que el computo paralelo llegara a evolucionar a lo que es el día de hoy.

    Mi razón principal de referir a las 2 principales competidoras del mercado del GPGPU es ya que son las más utilizadas en los sistemas operativos populares en el mercado, ya que tanto CUDA como OpenCL están disponibles tanto en ( Mac OSX, Linux, Windows…etc.). Siendo así los que más terreno en el mercado poseen, superando a DirectCompute y renderScript por mucho. Además cabe resaltar que son las más adoptadas en la industria por muchas empresas con diferentes propósitos como una muy viable alternativa para acelerar sus productos.

    Muchas gracias por dedicarnos un tiempo para compartirnos tu opinión y tu tan valiosa experiencia la cual nos sirve mucho para mejorar.

    Un saludo.

    Kevin Salmerón Vicente

A %d blogueros les gusta esto:
Ir a la barra de herramientas