Parallel programming. C ompute U nified D evice A rchitecture (Arquitectura de Dispositivos de Cómputo Unificado)

1 Parallel programming ...
Author: Eva María Cuenca Vega
0 downloads 0 Views

1 Parallel programming

2 C ompute U nified D evice A rchitecture (Arquitectura de Dispositivos de Cómputo Unificado)

3

4  GPGPU  Problema: Apis de ultima generación  Solución: coprocesador continuo.  2003: Brook logro que la GPU entendiese lenguaje de alto nivel y fuera 7x mas rápido que un código similar escrito directo con Apis.

5  Es una plataforma de computación en paralelo y modelo de programación inventado por NVIDIA. Permite un aumento dramático en el rendimiento de la computación aprovechando el poder de la unidad de procesamiento gráfico (GPU).

6  Permiten a los programadores usar una variación del lenguaje de programación C para codificar algoritmos en GPU de nVidia.  Por medio de wrappers se puede usar Python, Fortran y Java en vez de C/C++ y en el futuro también se añadirá FORTRAN, OpenGL y Direct3D.

7  Intenta explotar las ventajas de las GPU frente a las CPU de propósito general utilizando el paralelismo que ofrecen sus múltiples núcleos, que permiten el lanzamiento de un altísimo número de hilos simultáneos. Por ello, si una aplicación está diseñada utilizando numerosos hilos que realizan tareas independientes, una GPU podrá ofrecer un gran rendimiento en campos que podrían ir desde la biología computacional a la criptografía por ejemplo.

8  CUDA presenta ciertas ventajas sobre otros tipos de computación sobre GPU utilizando APIs gráficas.  Lecturas dispersas: se puede consultar cualquier posición de memoria.  Memoria compartida: CUDA pone a disposición del programador un área de memoria de 16KB (ó 48KB en la serie Fermi) que se compartirá entre threads. Dado su tamaño y rapidez puede ser utilizada como caché.  Lecturas más rápidas de y hacia la GPU.  Soporte para enteros y operadores a nivel de bit.

9  No se puede utilizar recursividad, punteros a funciones, variables estáticas dentro de funciones o funciones con número de parámetros variable  No está soportado el renderizado de texturas  En precisión simple no soporta números desnormalizados o NaNs  Puede existir un cuello de botella entre la CPU y la GPU por los anchos de banda de los buses y sus latencias.  Los threads, por razones de eficiencia, deben lanzarse en grupos de al menos 32, con miles de hilos en total.

10

11  1. Se copian los datos de la memoria principal a la memoria de la GPU  2. La CPU encarga el proceso a la GPU  3. La GPU lo ejecuta en paralelo en cada núcleo  4. Se copia el resultado de la memoria de la GPU a la memoria principal

12  Los hilos en CUDA pueden acceder a distintas memorias, unas compartidas y otras no.  Además, existen otros dos espacios de memoria más, que son de solo lectura y accesibles por todos los hilos. Son la memoria constante y la de texturas. Todas las memorias de acceso global persisten mientras esté el kernel en ejecución.

13

14

15

16

17