You are currently browsing the tag archive for the ‘GPU’ tag.

Después de muchísimo tiempo sin escribir, vuelvo con este post que resume todo el trabajo que hemos realizado durante este último año.

En julio del año pasado nos enteramos de un artículo publicado por X. Yang and R. Mittal, de la Johns Hopkins University, en el que aceleraban de manera espectacular el algoritmo de Jacobi y lo utilizaban para resolver ecuaciones en derivadas parciales de tipo elíptico.

A pesar del relativo eco mediático que tuvo, y aunque aceleraba muchísimo Jacobi, seguía sin ser competitivo con los métodos utilizados actualmente para solucionar este tipo de ecuaciones. Sin embargo, como prometía en cuanto a su sencillez desde el punto de vista tanto de implementación como de paralelización, decidimos trabajar un tiempo sobre el mismo.

Finalmente, en junio presentamos unos proceedings en el CEDYA 2015 (pag. 733) y hace tres semanas enviamos un paper a JCP, donde presentamos una serie de mejoras realizadas que permiten, tal y como allí comentamos, que el SRJ sea prácticamente competitivos en ejecución secuencial con los algoritmos utilizados actualmente.

Por un lado, su inmediata implementación (todos tenemos un Jacobi implementado de nuestro curso de métodos numéricos, y es trivial convertirlo en un SRJ 🙂 ) hace pensar que mucha gente que no tenga y necesite un resolvedor elíptico eficiente sin invertir mucho esfuerzo en su implementación quiera utilizarlo. Por otro, su trivial paralelización, por ejemplo en entornos GPU, nos hace pensar en su extraordinario potencial en el ámbito de la supercomputación.

En la página de nuestro grupo de investigación tenemos disponibles todos los esquemas SRJ presentados en el paper.

¡Disfrutenlo!

En arquitectura de computadores, la taxonomía de Flynn clasifica a las mismas en función del número de instrucciones que se pueden ejecutar de forma concurrente y el número de datos por instrucción.

Una de las posibilidades es la arquitectura  SIMD (Single Instruction Multiple Data), que explota el paralelismo a nivel de datos, puesto que cada instruccion se puede ejecutar simultaneamente sobre un conjunto amplio de datos.

Las GPU (Graphics Processing Unit) son procesadores desarrollados para el procesamiento gráico que implementan una arquitectura vectorial. Si queremos utilizar de esta potencia para nuestros programas paralelos, disponemos de  CUDA y OpenCL.

CUDA (Compute Unified Device Architecturees) es el sofware que ofrece NVIDIA para explotar la potencia de las GPUs en las aplicaciones programadas por el usuario.

OpenCL (Open Computing Language) es la alternativa libre a CUDA. No solo pretende trabajar con GPUs sino también con CPUs. La arquitectura OpenCL se muestra en el siguiente gráfico:

agosto 2017
L M X J V S D
« Jul    
 123456
78910111213
14151617181920
21222324252627
28293031