Transcript Material

ARQUITECTURA
CUDA
Integrantes:
Jose D Apollo 08-10272
Ricardo Rosa 08-11005
¿De donde viene CUDA?

Nvidia Corporation es una compañía global de
tecnología americana con base en California,
fabrica unidades de procesamiento grafico
(GPU), teniendo también una gran participación
en la fabricación de unidades de Sistemas en un
Chip (SOC) para el mercado de computo móvil.
Su línea primaria de GPUs fue nombrada como
“GeForce”.

Aparte de la fabricación de GPUs, Nvidia provee
capacidades de procesamiento paralelo a
investigadores y científicos que les permiten correr
de manera eficiente aplicaciones de alto
rendimiento, ellos están desplegados alrededor
del mundo.
Un poco de historia…
 La
unidad de procesamiento gráfico
(GPU), fue inventada por Nvidia en 1999 y
es uno de los procesadores paralelos mas
dominantes hasta la fecha.
 Se
ha tratado de explotar la GPU con
aplicaciones no gráficas desde el 2003,
los primeros esfuerzos utilizaron APIs
gráficos para el cómputo general eran
conocidos como programas GPGPU.
GPGPU

GPGPU demostró grandes aceleraciones,
pero se enfrentó a varios inconvenientes:




Requería que el programador tuviese un
profundo conocimiento de la API gráfica y
arquitectura GPU.
Los problemas tenían que ser expresados en
términos de coordenadas de vértices, texturas y
programas de sombreado, aumentando la
complejidad del programa.
Las características básicas de programación
tales como lecturas y escrituras aleatorias de la
memoria no eran soportados, restringiendo en
gran medida el modelo de programación.
La falta de soporte de doble precisión (hasta
hace poco) significaba algunas aplicaciones
científicas no podrían ejecutarse en la GPU.
GPGPU

Para hacer frente a estos problemas, NVIDIA
introdujo dos tecnologías clave:


La G80 arquitectura gráfica y de computo unificada
(introducida en GeForce 8800 ®, Quadro FX 5600 ® y
Tesla C870 ® GPUs).
CUDA, una arquitectura de software y hardware.
Juntas, estas dos tecnologías representaban una nueva
forma de utilizar la GPU.
CPU vs GPU
CPU vs GPU
 Ejemplo:
Mithbusters
¿Qué es CUDA?
 Compute
 CUDA™
Unified Device Architecture
es una plataforma de
computación en paralelo y modelo de
programación que permite un gran
aumento en el rendimiento de computo
aprovechando la potencia de la unidad
de procesamiento de gráficos (GPU).

CUDA es un conjunto de herramientas de
desarrollo para crear aplicaciones que se
ejecutaran en la GPU.

CUDA fue presentado por nVidia en 2006 y
sale al mercado el 15 de febrero de 2007,
para PC y la versión beta para Mac OS X, el
19 de agosto de 2008.

CUDA permite al programador escribir
programas en C con extensiones CUDA y
dirigirse a un propósito general. Llamamos a
esta nueva forma de programación de GPU
"GPU Computing“ esto significó un apoyo
más amplio de aplicaciones, soporte más
amplio para lenguajes de programación.
Modelo de Programación
 SIMT
(Single Instruction Multiple Threads).
 Los
hilos corren en grupos de 32 llamados
“Warps”.

Cada hilo en un “warp” ejecuta la misma
instrucción a mismo tiempo.
Modelo de Programación
 Un
solo kernel ejecutado por varios hilos
 Los
hilos están agrupados en “bloques”
 El
kernel lanza un “grid” de bloques de
hilos


Hilos y bloques tienen identificadores únicos.
Todos los hilos en un bloque pueden
compartir datos a través de “Memoria
compartida”.
Modelo de Memoria
Block (0,0)
Shared Memory
Shared Memory
Registers Registers
Registers Registers
Thread (0,0) Thread (1,0)
Thread (0,0) Thread (1,0)
Local
Memory
Local
Memory
Global
Memory
Host
Block (1,0)
Constant
Memory
Texture
Memory
Local
Memory
Local
Memory
Modelo de Memoria
 Cada




Bloque contiene:
Conjunto de registros locales por hilo
Una memoria compartida por todos los
hilos
Una cache constante de solo lectura, que
es compartida por todos los hilos
Una cache de textura de solo lectura, que
es compartida por todos los procesadores
Modelo de Memoria
 Memoria



Local:
Se encuentra en al alcance de cada hilo
El compilador la ubica como memoria
global, pero lógicamente es tratada como
una unidad independiente
Tiempo de vida de un hilo
Modelo de Memoria

Registro:




El mas rápido
Solo son accesibles mediante los hilos
Tiempo de vida de un hilo
Memoria Compartida:



Puede ser tan rápida como un registro si no hay
conflictos de lecturas en la misma dirección
Accesible por cualquier hilo perteneciente al
bloque que la creo
Tiempo de vida de un bloque
Modelo de Memoria
 Memoria



Global:
Hasta 150 veces mas lenta que un registro
o memoria compartida
Accesible desde un host o dispositivo
Tiempo de vida de la aplicación
Aplicaciones
 Extracción



de recursos naturales
El costo de una excavación puede llegar a
millones de dólares
En muchos casos, solo existe una sola
posibilidad de encontrar materia prima
CUDA, logro hasta 14 veces mejor
performance sobre las aplicaciones
basadas CPU.
Aplicaciones
 Finanzas

Usando solo 12 GPUs CUDA, Volera
analiza la totalidad de las acciones del
mercado de USA en tiempo real
Aplicaciones
 Campo


de la medicina
El algoritmo “Techiniscan” es utilizado para
producir imágenes altamente detalladas
de exploración de cáncer
El sistema CUDA es capaz de procesar a un
nivel dos veces mas rápido que el
algoritmo “Techiniscan”
Aplicaciones
 Investigación


Los biólogos computacionales seleccionan
un virus, para intentar simular su vida
completa
Los investigadores utilizan un programa
llamado NAMD, el cual aceleran con
CUDA. Para dramáticas aceleraciones en
el proceso
Ventajas
 Memoria
 Lecturas
compartida
dispersas
 Descargas
 Lecturas
 Soporte
bits
más rápidas
más rápidas de y hacia la GPU
para operadores de enteros y
Desventajas
 Puede
existir un cuello de botella entre la
CPU y la GPU por los anchos de banda de los
buses y sus latencias, puede ser aliviado con
transferencias asíncronas de memoria,
manejadas por memoria de acceso directo
 CUDA
usa un subconjunto del lenguaje C
que es libre de recursión y libre de funciones
con apuntadores
Desventajas
 CUDA
no soporta el standard de C
completo, ya que corre código anfitrión
a través de un compilador de C++, lo que
hace que código valido de C (invalido
en C++) falle en compilar
 GPUs
habilitados con CUDA solo están
disponibles en nVidia
Preguntas Frecuentes





¿Qué tipo de aumento de rendimiento
puedo esperar Utilizando GPU Computing vs
CPU-Only Computing?
¿Qué sistemas operativos soporta CUDA?
¿Se puede en CUDA transferir datos y
ejecutar un Kernel en paralelo?
¿CUDA soporta varias tarjetas gráficas en un
mismo sistema?
¿Pueden el CPU y la GPU ejecutarse en
paralelo en CUDA?