Programación en la GPU - Centro de Computación Gráfica

Transcripción

Programación en la GPU - Centro de Computación Gráfica
Programación en la GPU
El futuro en el desarrollo de aplicaciones
Esmitt Ramírez J.
Centro de Computación Gráfica
Universidad Central de Venezuela
Junio, 2011
Agenda
•
•
•
•
•
•
•
¿Qué es la GPU?
GPGPU
GPU vs. CPU
Arquitectura GPU
Programación
Aplicaciones
Id
Ideas
Finales
Fi l
La Programación en la GPU – Prof. Esmitt Ramírez J.
2
¿Qué es la GPU?
• La Unidad de Procesamiento Gráfico (GPU –
Graphics Processing Unit) es un procesador
especializado para procesar gráficos
• Casi todas las
computadoras
p
tienen 1
• Diseño simple (un
rectángulo!)
g
)
• Billones de transistores
• Diversos fabricantes de
hardware
La Programación en la GPU – Prof. Esmitt Ramírez J.
3
¿Qué es la GPU?
• GPU integrada vs. GPU dedicada
• En
E 1999,
1999 NVIDIA llanzó
ó lla G
GeForce
F
256
– Transformaciones geométricas
– Iluminación
– Rasterización
– 10 millones de polígonos x segundo
• Los líderes: Intel ((49.4%),
), NVIDIA (27.8%)
(
)y
AMD/ATI (20.6%)*
• Otras empresas: S3 Graphics,
Graphics VIA
Technologies y Matrox
La Programación en la GPU – Prof. Esmitt Ramírez J.
4
¿Qué es la GPU?
Motorola ATRIX 4G
La Programación en la GPU – Prof. Esmitt Ramírez J.
Samsung Galaxy Tab 10.1
5
GPGPU
• Recientemente, la GPU ha evolucionado
creando una arquitectura más flexible
• Oportunidad: Implementar “cualquier
algoritmo”,
l it ” no solo
l gráficos
áfi
• Reto: Obtener eficiencia y alto rendimiento
Alto rendimiento
Base de Datos
Astronomía
Electrónica
Video
Criptografía
Finanzas
Gráficos
Imágenes
Inteligencia Artificial
Cál l numéricos
Cálculos
éi
Ordenamiento
La Programación en la GPU – Prof. Esmitt Ramírez J.
Bioinformática
Química
Audio
Física
Biología Computacional
6
GPGPU
• General Purpose GPU: aplicaciones de
propósito general programadas en la GPU
empleando APIs gráficos (OpenGL, DirectX)
• Al principio,
i i i se vió
ió como un “h
“hacking”
ki ” a lla GPU
• “Old School”: APIs gráficos (shaders en GLSL,
HLSL, Cg, etc.)
– Curva de aprendizaje de los APIs
– Cálculos = Rendering
– Independiente
p
de la p
plataforma
– Basado en el despliegue de gráficos
La Programación en la GPU – Prof. Esmitt Ramírez J.
7
GPGPU
• “New School”: Lenguajes GPGPU, GPU
computing stream computing
computing,
– Fácil programación sobre la GPU
– Enfocarse
E f
en ell algoritmo
l it
y no en detalles
d t ll d
de
implementación
– Integración de la GPU como un recurso
computacional del resto del sistema (device)
Nuevo paradigma de programación
La Programación en la GPU – Prof. Esmitt Ramírez J.
8
CPU vs. GPU
CPUs y GPUs tienen esquemas de
funcionamiento distintos en varios niveles
Muchas scooters
Entrega muchos paquetes en
una escala de tiempo razonable
La Programación en la GPU – Prof. Esmitt Ramírez J.
Carro deportivo
Entrega un paquete tan
rápido como sea posible
9
CPU vs. GPU
CPUs y GPUs tienen esquemas de
funcionamiento distintos en varios niveles
Latencia razonable
y
altísimo rendimiento
Baja latencia
y
rendimiendo razonable
Calcula muchas tareas en
una escala de tiempo razonable
Calcula una tarea tan
rápido como sea posible
La Programación en la GPU – Prof. Esmitt Ramírez J.
10
CPU vs. GPU
• Algunos algoritmos pueden alcanzar hasta
100x en GPU sobre su versión en CPU
• Este factor depende mucho del paralelismo
• En la GPU, técnicamente se puede
programar lo que sea!
• GPUs son especializados en hardware, no
son tan flexibles como el CPU
CPU + GPU = combinación de
fle ibilidad y rendimiento
flexibilidad
La Programación en la GPU – Prof. Esmitt Ramírez J.
11
CPU vs. GPU
Operaciones punto flotante por segundo
La Programación en la GPU – Prof. Esmitt Ramírez J.
12
CPU vs. GPU
Ancho de banda de la memoria CPU vs GPU
La Programación en la GPU – Prof. Esmitt Ramírez J.
13
CPU vs. GPU
La Programación en la GPU – Prof. Esmitt Ramírez J.
14
CPU vs. GPU
•
•
•
•
•
•
•
•
•
Cluster de GPUs de CSIRO
(Commonwealth Scientific and Industrial
R
Research
hO
Organization)
i ti ) – Australia
A t li
CSIRO supercomputer
128 Dual Xeon E5462 nodos
Cada nodo tiene 16 Gb o 32 Gb de RAM
Cada nodo tiene 500 Gb de disco duro
64 Tesla S1070 – 256 GPUs con 61.440
cores GPUs
256 Teraflops de precisión simple (32 bits)
140 Teraflops de precisión doble (64 bits)
Programación bajo CUDA
http://www.csiro.au/resources/GPU-cluster.html
La Programación en la GPU – Prof. Esmitt Ramírez J.
15
CPU vs. GPU
• A nivel mundial, los grandes centros de
cómputo de alto rendimiento están
introduciendo GPUs
Cluster de 336 PS3 – US Air Force
La Programación en la GPU – Prof. Esmitt Ramírez J.
16
Arquitectura GPU
• Un GPU core no es lo mismo que un CPU
core
• Procesador SIMD (Single Instruction Multiple
D t )
Data)
SIMD Mi
SIMD:
Misma iinstrucción
t
ió para ttodos
d llos cores
La Programación en la GPU – Prof. Esmitt Ramírez J.
17
Arquitectura GPU
La Programación en la GPU – Prof. Esmitt Ramírez J.
18
Arquitectura GPU
La Programación en la GPU – Prof. Esmitt Ramírez J.
19
Arquitectura GPU
• CPUs y GPUs tienen diseños de arquitectura
distintos
La Programación en la GPU – Prof. Esmitt Ramírez J.
20
Arquitectura GPU
Escalibilidad automática
La Programación en la GPU – Prof. Esmitt Ramírez J.
21
Arquitectura GPU
Grid de bloques de hilos
La Programación en la GPU – Prof. Esmitt Ramírez J.
•
•
•
•
GeForce GTX 580
Cores CUDA 512
1536 Mb de Memoria
1544 MHz (procesador) y 772 MHz
(gráfico)
•
Precio en amazon.com* $499.99
22
Programación
• CUDA-C
• Direct
Di t C
Compute
t
• OpenCL
• RapidMind, BrookGPU, Lib Sh, Intel Ct, etc.
La Programación en la GPU – Prof. Esmitt Ramírez J.
23
Programación
•
•
•
•
•
•
SGC Ruby CUDA (descargable por Git),
GPU .NET
NET (TidePowerd)
(Tid P
d) para C# / .NET,
NET
Clyther = Phyton + OpenCL ,
PyCUDA (scripting lenguage),
CUDA Fortran,
Fortran
y cada día aparecen más y más…
__global__ void CUDAFunc2JOINCIC(uint32* array, float* P){
float ptemp = (float)array[0];
*P = ptemp + MUL(globalVar, ptemp);
……….
}
La Programación en la GPU – Prof. Esmitt Ramírez J.
24
Programación
• Host
– Kernels
K
l
• Device
– Grid
– Block
– Thread
dim3 dimBlock(4,2,2);
dim3 dimGrid(2,2,1);
KernelFunction<<<dimGrid, dimBlock>>>
(…);
La Programación en la GPU – Prof. Esmitt Ramírez J.
25
Programación
• Suma de 2 vectores
__global__ void AddVec(int* a, int* b, int* c){
int tid = blockIdx.x * blockDim.x + threadIdx.x;
(tid < N)
)
if (
c[tid] = a[tid] + b[tid];
}
La Programación en la GPU – Prof. Esmitt Ramírez J.
26
Aplicaciones
•
•
•
•
•
•
•
•
•
Dinámica de fluidos
C
Creación
ió d
de efectos
f t
Finanzas
Física en juegos de video
Gráficos
Imágenes médicas
P t ól y gas
Petróleo
Procesamiento de video/audio
Y muchos más!
La Programación en la GPU – Prof. Esmitt Ramírez J.
27
Aplicaciones
Dinámica de fluidos
GPU based simulation and visualization of fluids with free surfaces
Martin Schreiber, Proyecto Open Source 2010
La Programación en la GPU – Prof. Esmitt Ramírez J.
28
Aplicaciones
Creación de efectos
50x
GPU Flame Fractal Renderer
OpenSource (keldor314), SourceForge. 2011
La Programación en la GPU – Prof. Esmitt Ramírez J.
29
Aplicaciones
Finanzas
80x
Accelerated fluctuation analysis by graphic cards and complex
pattern formation in financial markets
Tobias Preis, Peter Vimau, Wolfgang Paul, Johannes Scheneider. Alemania. 2009
La Programación en la GPU – Prof. Esmitt Ramírez J.
30
Aplicaciones
Gráficos
10x
Ray Tracing in participating media
Piotr Orzechowski. Wroclaw University of Technology, Polonia. 2010
La Programación en la GPU – Prof. Esmitt Ramírez J.
31
Aplicaciones
Gráficos
50x
Airor Render
Random Control, Random Control S.L.U. 2010
La Programación en la GPU – Prof. Esmitt Ramírez J.
32
Aplicaciones
Imágenes
CUDA Accelerated Face Recognition
Numaan A., Sibi A. India. 2010
La Programación en la GPU – Prof. Esmitt Ramírez J.
33
Aplicaciones
Imágenes
68x
High-Quality Rendering of Varying Isosurfaces with Cubic Trivariate C1-continuous Spline
Thomas Kalbe, Thomas Koch, Michael Goesele. Alemania. 2009
La Programación en la GPU – Prof. Esmitt Ramírez J.
34
Aplicaciones
Petróleo y Gas
20x
High-order
g
finite-element seismic wave p
propagation
p g
modeling with MPI on a large GPU cluster
Komatitsch D.,, Erlebacherc G., Goddeke D., Michéa D. Francia/Alemania. 2010
La Programación en la GPU – Prof. Esmitt Ramírez J.
35
Aplicaciones
Base de Datos
A := LOAD 'lineitem.tbl' USING ('|') AS (price{6}:float, qty{5}:int,
discount{7}:float, tax{8}:float, rf{9}:varchar(1), lf{10}:varchar(1),
shipdate{11}:int);
B := FILTER A BY shipdate <= 19980902;
D := SELECT rf AS rf, lf AS lf, SUM(qty) AS sum_qty, SUM(price) AS
sum_base_price,
AVG(qty) AS avg_qty, AVG(price) AS avg_price, AVG(discount)
AS avg_disc, COUNT(qty) AS cnt FROM B
GROUP BY rf, lf;
STORE D INTO 'mytest.txt' USING ('|');
Alenka
OpenSource (antonmsk), SourceForge. 2011
La Programación en la GPU – Prof. Esmitt Ramírez J.
36
Aplicaciones
Otros
MP3 encoder
OpenSource (biggestpos), SourceForge. 2008
La Programación en la GPU – Prof. Esmitt Ramírez J.
37
Ideas finales
• Rediseña tus aplicaciones para usarlas de
forma paralela (parallel
(parallel-friendly)
friendly)
• No es tan díficil como parece :)
El futuro es paralelo, Let’s get ready!
La Programación en la GPU – Prof. Esmitt Ramírez J.
38
Programación en la GPU
[email protected]
http://ccg.ciens.ucv.ve/~esmitt
Centro de Computación Gráfica
http://ccg.ciens.ucv.ve
La Programación en la GPU – Prof. Esmitt Ramírez J.
39

Documentos relacionados

Arquitectura de Computadores II GPU

Arquitectura de Computadores II GPU extraordinario del rendimiento del sistema. Los sistemas informáticos están pasando de realizar el  procesamiento central en la CPU a realizar  coprocesamiento repartido entre la CPU y la GPU. ...

Más detalles