Kepler Contenidos de la charla 1. Presentación de la arquitectura

Anuncio
Kepler
RIO 2014
Contenidos de la charla
Río Cuarto, 20 de Febrero, 2014
1.
2.
3.
4.
5.
Presentación de la arquitectura [7 diapositivas]
La memoria y el transporte de datos [9]
Los cores SMX [9]
Desplegando todo el paralelismo en Kepler [12]
Mejoras funcionales [7]
1. Paralelismo dinámico.
2. Hyper-Q.
6. Optimizaciones futuras []
Manuel Ujaldón Martínez
1. Vectorización: El tamaño del warp.
2. Stacked-DRAM: Memoria apilada sobre el procesador.
Dpto. Arquitectura de Computadores. Univ. Málaga.
NVIDIA CUDA Fellow.
2
Kepler, Johannes
(1571-1630)
Autor de las leyes del movimiento planetario.
1. Presentación
de la arquitectura
Primera ley: Las órbitas de los planetas son planas. El sol está en
el plano de la órbita. La trayectoria del planeta respecto del sol es
una elipse en la que el sol ocupa uno de los fotos.
Segunda ley: El radio vector que une al sol y el planeta barre
áreas iguales en tiempos iguales. Un planeta se mueve más
rápidamente en su perihelio que en su afelio, y mientras más
excéntrica sea su órbita, mayor será la diferencia de velocidad entre
sus extremos.
Tercera ley: Los cuadrados de los períodos de revolución en torno
al sol son proporcionales a los cubos de los semiejes mayores de las
órbitas. La velocidad media con que un planeta recorre su órbita
disminuye a medida que el planeta está más lejos del sol. La influencia que el sol ejerce sobre los planetas disminuye con la distancia.
4
Nuestra Kepler también tiene tres leyes
Y tres innovaciones principales
SMX:
Un multiprocesador con más
recursos y menos consumo.
Paralelismo
dinámico:
La GPU es más autónoma,
puede lanzar kernels CUDA.
Consumo
Rendimiento
Programabilidad
Hyper-Q:
Múltiples kernels pueden
compartir los SMX .
5
6
Modelos comerciales de Kepler:
GeForce y Tesla frente a frente
Resumen de sus rasgos más sobresalientes
Fabricación: 7100 Mt. integrados a 28 nm. por TSMC.
Arquitectura: Entre 7 y 15 multiprocesadores SMX,
dotados de 192 cores cada uno.
GeForce GTX Titan
Modelos más populares: K20 (con 13 SMX), K20X (14), K40 (15).
Diseñada para jugar:
Aritmética: Más de 1 TeraFLOP en punto flotante de doble
precisión (formato IEEE-754 de 64 bits).
Orientada a HPC:
El precio es prioritario (<500€).
Gran disponibilidad/popularidad.
Poca memoria de vídeo (1-2 GB.).
Fiabilidad (tres años de garantía).
Pensada para conectar en clusters.
Más memoria de vídeo (6-12 GB.).
Relojes un poco más rápidos.
Ejecución sin descanso (24/7).
Hyper-Q sólo para streams CUDA. Hyper-Q para procesos MPI.
Perfecta para desarrollar código
GPUDirect (RDMA) y otras
que luego pueda disfrutar Tesla.
coberturas para clusters de GPUs.
Los valores concretos dependen de la frecuencia de cada modelo.
Con sólo 10 racks de servidores, podemos alcanzar 1 PetaFLOP.
Principales innovaciones en el diseño de los cores:
Paralelismo dinámico.
Planificación de hilos (Hyper-Q).
7
8
Kepler GK110: Disposición física de las UFs
para la Tesla K40 dotada de 15 SMXs
El multiprocesador SMX
Planificación y emisión
de instrucciones en warps
Front-end
Ejecución de instrucciones.
512 unidades funcionales:
- 192 para aritmética entera.
- 192 para aritmética s.p.
- 64 para aritmética d.p.
- 32 para carga/almacen.
- 32 para SFUs (log,sqrt, ...)
Back-end
Interfaz
Acceso a memoria
9
10
La memoria en las Teslas: Fermi vs. Kepler
Tarjeta gráfica Tesla
Registros de 32 bits / multiprocesador
M2075
M2090
K20
K20X
K40
32768
32768
65536
65536
65536
Tamaño caché L1 + mem. compartida
64 KB.
64 KB.
64 KB.
64 KB.
64 KB.
Anchura de los 32 bancos de m.c.
32 bits
32 bits
64 bits
64 bits
64 bits
Frecuencia de SRAM (la de la GPU)
575 MHz
650 MHz
706 MHz
732 MHz 745, 810, 875
Ancho de banda L1 y mem. compartida 73.6 GB/s. 83.2 GB/s. 180.7 GB/s 187.3 GB/s 216.2 GB/s.
Tamaño de la caché L2
Ancho de banda L2 (bytes por ciclo)
2. La memoria
y el transporte de datos
768 KB.
768 KB.
1.25 MB.
1.5 MB.
384
384
1024
1024
1.5 MB.
1024
L2 en ops. atómicas (dir. compartida)
1/9 por clk 1/9 por clk
1 por clk
1 por clk
1 per clk
L2 en ops. atómicas (dirs. separadas)
24 por clk 24 por clk
64 por clk 64 por clk
64 per clk
Anchura del bus de memoria DRAM
384 bits
384 bits
320 bits
384 bits
384 bits
Frecuencia de la memoria (MHz)
2x 1500
2x 1850
2x 2600
2x 2600
2 x 3000
Ancho de banda DRAM (no ECC)
Tamaño DRAM (todas GDDR5)
Bus externo de conexión con la CPU
144 GB/s. 177 GB/s.
208 GB/s. 250 GB/s.
288 GB/s.
6 GB.
6 GB.
5 GB.
6 GB.
12 GB.
PCI-e 2.0
PCI-e 2.0
PCI-e 3.0
PCI-e 3.0
PCI-e 3.0
12
Diferencias en la jerarquía de memoria:
Fermi vs. Kepler
Motivación para usar la nueva caché de datos
48 Kbytes extra para expandir el tamaño de la caché L1.
Posee el mayor ancho de banda en caso de fallo a caché.
Usa la caché de texturas, pero de forma transparente al
programador, y elimina el tiempo de configuración de ésta.
Permite que una dirección global pueda buscarse y
ubicarse en esta caché, utilizando para ello un camino
separado del que accede a caché L1 y memoria compartida.
Es flexible, no requiere que los accesos estén alineados.
Gestionada automáticamente por el compilador.
13
Cómo utilizar la nueva caché de datos
14
Comparativa con la memoria de constantes
Declarar los punteros con el prefijo "const __restrict__".
El compilador automáticamente mapeará la carga de esos
valores en la caché para usar el nuevo camino de datos a
través de la memoria de texturas.
A comparar
Disponibilidad
Tamaño
__global__ void saxpy(float x, float y,
const float * __restrict__ input,
float * output)
{
size_t offset = threadIdx.x +
(blockIdx.x * blockDim.x);
A partir de CCC 3.5
(aunque desde CCC 1.0 se podía usar
la memoria de texturas manualmente)
48 Kbytes
Caché de texturas
que expande la L1 (SRAM)
A través de una caché de 8 Kbytes
que posee cada multiprocesador
SM(X)
Mediante un camino aparte en
el cauce de segmentación gráfico
Mejor rasgo
Latencia muy baja
Gran ancho de banda
Peor rasgo
Menor ancho de banda
Mayor latencia
Mejor
escenario
de uso
15
Desde CUDA Compute Capability 1.0
64 Kbytes
Acceso
}
Caché de datos de sólo lectura
Una partición de
la memoria global (DRAM)
Implementación
hardware
// El compilador utilizará la nueva caché para "input"
output[offset] = (input[offset] * x) + y;
Memoria de constantes
Acceso con el mismo coeficiente
Cuando el kernel es memory-bound,
(sin usar threadIdx) a un pequeño aún después de haber saturado el ancho
de banda con memoria compartida
conjunto de datos de sólo lectura
16
Comunicación entre las memorias de las GPU
Kepler + CUDA 5 soportan GPUDirect-RDMA
[Remote Direct Memory Access]
En Fermi se puso en marcha GPU Direct 1.0 para permitir
la comunicación entre GPUs dentro de clusters de CPUs.
Esto permite una transferencia más directa entre GPUs.
Normalmente, el enlace es PCI-express o InfiniBand.
Transmisor
17
18
Resultados preliminares de GPUDirect-RDMA
(mejoran con CUDA 6.0 & OpenMPI)
GPUDirect-RDMA en Maxwell
Latencia GPU-GPU (microsegundos)
La situación será más compleja en la próxima generación
de GPUs, pues tendrán un espacio de memoria unificado
con la CPU.
Tiempo de ejecución total (segundos)
Receptor
Tamaño del mensaje (bytes)
Latencia inter-nodo usando:
19
GPUs Tesla K40m (no GeForces).
Librería MPI MVAPICH2.
ConnectX-3, IVB 3GHz.
Número lateral
Mejor escalado en MPI:
Código: HSG (bioinformática).
2 nodos de GPU.
4 procesos MPI por nodo.
20
Un breve recordatorio de CUDA
GPU
Hilo
Multiprocesador N
Bloque de hilos
···
Multiprocesador 2
Multiprocesador 1
Memoria compartida
Registros
Registros
Procesador 1
Procesador 2
Registros
…
Memoria
integrada
en la GPU
Unidad
de
Control
SIMD
Procesador M
Caché para
constantes
Memoria
externa
a la GPU
(incluida
dentro de
la tarjeta
gráfica)
Caché para
texturas
3. Los cores SMX
Memoria global
···
···
···
···
···
···
···
···
···
···
···
···
···
···
···
Malla 0
(grid)
Malla 1
22
Kepler en perspectiva:
Recursos hardware y rendimiento pico
... y de cómo va escalando la arquitectura
Arquitectura
Marco temporal
Tesla
G80
Tesla
GT200
Fermi Fermi
GF100 GF104
2006-07 2008-09 2010
2011
Kepler
GK104
2012
Tarjeta Tesla (modelo comercial)
Kepler
GK110
Generación de GPU (y CCC)
Fermi
mi GF100 (2.0)
Número total de cores
CUDA Compute
Capability (CCC)
1.0
1.2
2.0
2.1
3.0
N (multiprocs.)
16
30
16
7
8
15
M (cores/multip.)
8
8
32
48
192
192
Número de cores
128
240
512
336
1536
K20
K20X
K40
-
GTX Titan
-
Kepler
Kep
er GK110 ((3.5)
14 x 32
16 x 32
13 x 192
14 x 192
15 x 192
448
512
2496
2688
2880
40 nm.
28 nm.
Tipo de multiprocesador
3.5
M2090
GTX 470 GTX 580
Multiprocesadores x (cores/multipr.)
2013-14
M2075
Modelo GeForce similar en cores
SM
Distancia de integración de los trans.
40 nm.
Frecuencia de la GPU (para gráficos)
575 MHz
SMX con paralelismo
p
lismo dinámico
diná
y HyperQ
650 MHz 706 MHz
Frecuencia de los cores (para GPGPU) 1150 MHz 1300 MHz 706 MHz
2880
23
28 nm.
28 nm.
732 MHz
745,810,875 MHz
732 MHz 745,810,875 MHz
Número de cores (simple precisión)
448
512
2496
2688
2880
GFLOPS (pico en simple precisión)
1030
1331
3520
3950
4290
Número de cores (doble precisión)
224
256
832
896
960
GFLOPS (pico en doble precisión)
515
665
1170
1310
1680
24
Cada aplicación tiene un comportamiento
distinto en relación al consumo
GPU Boost
Permite acelerar hasta un 17% el reloj de la GPU si el
consumo de una aplicación es bajo.
Se retornará al reloj base si se sobrepasan los 235 W.
Se puede configurar un modo “persistente” de vigencia
permanente de un reloj, u otro para ejecuciones puntuales.
Aquí vemos el consumo medio (vatios) en la Tesla K20X
de aplicaciones muy populares en el ámbito HPC:
Board Power (Watts)
160
Rendimiento
Consumo sin apurar
Maximiza los relojes gráficos sin salirse
de los márgenes de consumo nominales
Reloj base
Reloj a máxima frecuencia
120
80
40
0
AMBER
745 MHz
ANSYS Black Scholes Chroma GROMACS
GTC
LAMMPS
LSMS
NAMD
Nbody
QMCPACK
RTM SPECFEM3D
875 MHz
810 MHz
25
Aquellas aplicaciones que menos consumen
pueden beneficiarse de una frecuencia mayor
GPU Boost frente a otras implementaciones
Resulta mejor un régimen estacionario para la frecuencia
desde el punto de vista del estrés térmico y la fiabilidad.
En el caso de la K40, se definen tres saltos de frecuencia
con incrementos del 8.7%.
Reloj
acelerado
#2
875 MHz
Reloj
acelerado
#1
810 MHz
Reloj
base
745 MHz
235W
Consumo
máximo.
Referencia
(peor caso).
235W
Consumo
moderado.
Ej: AMBER
235W
Consumo bajo.
Ej: ANSYS Fluent
26
Boost Clock # 2
Boost Clock # 1
Reloj de
la GPU
A 875 MHz, la K40 mejora
el rendimiento hasta en un
40% respecto a la K20X.
Base Clock # 1
Otros fabricantes
Tesla K40
Conmutación automática de reloj
Relojes deterministas
Otros fabricantes
Valor por defecto
Y no sólo mejoran los GFLOPS,
también lo hace el ancho de
banda con memoria (GDDR5).
Reloj acelerado
Reloj base
Opciones predefinidas
Bloquear a la frecuencia base
3 niveles: Base, Boost1 o Boost2
Interfaz con el usuario
Panel de control
Comandos en el shell: nv-smi
Duración del reloj acelerado Aprox. 50% del tiempo de ejec.
27
Tesla K40
100% del tiempo de ejecución
28
Lista de comandos GPU Boost
Comando
Ejemplo
nvidia-smi -q -d CLOCK —id=0000:86:00.0
Efecto
nvidia-smi -q -d SUPPORTED_CLOCKS Muestra los relojes que soporta nuestra GPU
nvidia-smi -ac <MEM clock,
Graphics clock>
Activa uno de los relojes soportados
nvidia-smi -pm 1
Habilita el modo persistente
(el reloj sigue vigente tras el apagado)
nvidia-smi -pm 0
Modo no persistente: El reloj vuelve a su
configuración base tras apagar la máquina
nvidia-smi -q -d CLOCK
nvidia-smi -rac
nvidia-smi -acp 0
Consulta el reloj en uso
Inicializa los relojes en su configuración base
Permite cambiar los relojes a los usuarios que no
son root
29
30
Del multiprocesador SM de Fermi GF100
al multiprocesador SMX de Kepler GK110
4. Desplegando todo el paralelismo
en Kepler
32
Comparación entre la emisión y ejecución
de instrucciones (front-end vs. back-end)
Fermi (GF100)
Búsqueda y emisión (front-end)
Ejecución en SM-SMX (back-end)
Puede emitir 2 warps, 1 instr. cada uno.
Total: Máx. 2 warps por ciclo.
Warps activos: 48 en cada SM,
seleccionados de entre 8 bloques máx.
En GTX580: 16*48= 768 warps activos.
32 cores (1 warp) para "int" y "float".
16 cores para "double" (1/2 warp).
16 unids. de carga/almacen. (1/2 warp).
4 unids. de funcs. especiales (1/8 warp).
Total: Hasta 5 warps concurrentes.
Puede emitir 4 warps, 2 instrs. cada uno.
Total: Máx. 8 warps por ciclo.
Kepler (GK110) Warps activos: 64 en cada SMX,
seleccionados de entre 16 bloques máx.
En K40: 15 * 64 = 960 warps activos.
Mejoras en concurrencia y paralelismo
Generación de GPU
Fermi
Modelo hardware
GF100
GF104
GK104
GK110
2.0
2.1
3.0
3.5
CUDA Compute Capability (CCC)
192 cores (6 warps) para "int" y "float".
64 cores para "double" (2 warps).
32 unids. de carga/almacen. (1 warp).
32 unids. de funcs. especiales (1 warp).
Total: Hasta 16 warps concurrentes.
Número de hilos / warp (tamaño del warp)
32
32
32
32
Máximo número de warps / Multiprocesador
48
48
64
64
8
8
16
16
Máximo número de hilos / Bloque
1024
1024
1024
1024
Máximo número de hilos / Multiprocesador
1536
1536
2048
2048
Máximo número de bloques / Multiprocesador
En Kepler, cada SMX puede emitir 8 warp-instrucciones por ciclo, pero
debido a limitaciones por recursos y dependencias:
Kepler
7 es el pico sostenible.
4-5 es una buena cantidad para códigos limitados por instrucción.
<4 en códigos limitados por memoria o latencia.
Mejoras cruciales
para ocultar latencias
Máx. concurrencia
en cada SMX
33
Gigathread, o cómo el programa
es devorado por el procesador
34
Expresar todo el paralelismo posible:
Los SMX son más “anchos” que los SM
Tetris (baldosa = warp_instr.):
- Emite 4 warp_instrs.
- Ejecuta hasta 10 warps =
320 hilos.
- Warp_instrs. son simétricos
y se ejecutan todos en 1 ciclo.
Cada malla (grid) contiene un número de bloques, que
son asignados a los SMXs (hasta 16 en Kepler, 8 en Fermi).
Los bloques se dividen en warps o grupos de 32 hilos.
Los warps se ejecutan para cada instrucción de los hilos
(hasta 64 warps activos en Kepler, 48 en Fermi). Ejemplo:
Correspondencia de colores:
para instrucciones “int”.
Ejemplo: Kernel con bloques de 384 hilos (12 warps).
Bloque 0:
instr.
“load/store”.
Emite 4
warp_instrs.
“log/sqrt...”.
...
...
...
...
...
warp
para instrs. “float”.
“double”.
Bloque 1:
sub
fmadd
fdiv64
load
sqrt
G80: Tarda
4 ciclos en
ejecutar
cada
warp_instrs.
Fermi:
- Emite 2.
- Ejecuta
hasta 5.
Kepler:
- Emite 4 warps x 2 instrs.
- Ejecuta hasta 16 warp_instrs.
(512 unidades funcionales).
32 SFU
¡El jugador planifica los warps!
32 LD/ST
Se pueden rotar las fichas si no hay
dependencias entre sus 4 warps
64 FPU DP
35
Ejecuta hasta 10 warp_instrs.
G80:
16 U.F.
SM en
Fermi:
100 U.F. paralelas.
6x32 = 192 ALUs
192 FPU SP
SMX en Kepler: 512 U.F. paralelas.
36
Paralelismo en SMX: A nivel de hilo (TLP)
y a nivel de instrucción (ILP)
En las GPUs Kepler concurren todas
las formas de paralelismo. Ejemplo: K40.
Incrementar el paralelismo horizontalmente a través del TLP:
Más warps concurrentes (bloques más grandes y/o más bloques activos en cada SMX).
...
...
...
...
...
De
s
to
da
Los SMX pueden potenciar el ILP disponible de forma
intercambiable con el TLP:
D)
IM
(S
Es mucho mejor que Fermi para esto.
Algunas veces es más fácil incrementar el ILP que el TLP
(por ejemplo, desenrrollar un lazo en un pequeño factor):
4: Vectorial (warp = 32)
(todo este volumen representa menos, 60x15 warps)
El número de hilos puede estar limitado por el algoritmo o los límites HW.
Necesitamos el ILP para lograr un elevado IPC (Instrs. Per Cycle).
... SMX 0
...
La K40 puede
... ......
ejecutar hasta
... ...
... ...
512x15 = 7680
... ...... ...
hilos en un ciclo
... ... ......
...
... ... ... ...
si éstos son del
... ... ... ...
color adecuado.
...
...
... ... ...... ... ......
... ... ... ... ...
... ... ... ... ...
... ... ... ... SMX 15
... ... ... ...
... ... ... ...
... ... ...
... ... ...
... ... ...
... ...
... ...
... ...
...
...
...
3:
2: De instrs. (ILP)
Incrementar
paralelismo
verticalmente
con ILP:
Si las instrs.
son más
independientes
1: De tareas (TLP)
37
Cómo trabaja el front-end de la GPU:
(1) Planificación de warps
La K40 puede planificar y emitir
hasta 64x15 warps en un ciclo:
30720 hilos en 1.14 ns.
Imagina un tetris 3D con 15 cubiletes y hasta 64 baldosas
cayendo simultáneamente en cada uno de ellos, porque así
funciona la K40 planificando warps con el máx. paralelismo.
38
La conexión entre front-end y back-end:
(2) Emisión de warps
En los 5 ciclos ilustrados, hemos podido ejecutar hasta aquí.
En Fermi hay déficit en las SFUs (azul), mientras que en Kepler
lo hay en las unidades de carga/almacenamiento (verde).
Kepler equilibra la doble precisión (rojo) y tiene gran superávit
en computación “int” y “float”, señal de que los códigos reales
tienen mayor presencia de instrs. naranjas, y sobre todo, amarillas.
SM (Fermi)
SMX (Kepler)
SM (Fermi)
39
SMX (Kepler)
40
Cómo trabaja el back-end de la GPU:
(2) Ejecución de warps
Caso estudio: Polinomios de Zernike
Suponemos que en el momento en que comenzamos a
monitorizar la ejecución quedaban pendientes de ejecutar:
Recursos
GPU
Un par de warps de punto flotante en simple precisión (naranjas).
Otro par de warps en doble precisión (rojos).
Parece conveniente que el front-end vaya un poco
adelantado respecto al back-end (prebúsquedas) con
objeto de maximizar el throughput.
SM (Fermi)
ALU
FPU 32 bits
FPU 64 bits
Carga/
almacen.
SFU
Fermi
32%
32%
16%
16%
4%
Kepler
37.5%
37.5%
12.5%
6.25%
6.25%
54%
21%
0%
25%
0%
Kepler
Fermi
Kepler
Fermi
Fermi
Kernel de los
polinomios de
Zernike
Mejor
SMX (Kepler)
41
Fermi se encuentra más equilibrada para este caso.
La distribución de recursos en Kepler mejora la ejecución
de la aritmética entera, pero empeora la de punto flotante y
carga/almacenamiento. El resto no se utilizan.
Utilizar el CUDA Visual Profiler para
conocer qué tal se adapta nuestra aplicación
5. Mejoras funcionales:
Paralelismo dinámico y Hyper-Q
43
42
Principales mejoras hardware
¿Qué es el paralelismo dinámico?
Computación a gran escala (grandes tamaños de problema)
Generación de GPU
Fermi
Modelo hardware
Kepler
GF100 GF104 GK104
Compute Capability (CCC)
2.0
2.1
Máxima dimensión X de la malla 2^16-1 2^16-1
3.0
2^32-1
GK110
Limitación
Impacto
Software
Tamaño del
problema
Limitación
Impacto
Dinámica: Basándonos en datos obtenidos en tiempo de ejecución.
Simultánea: Desde múltiples hilos a la vez.
Independiente: Cada hilo puede lanzar una malla diferente.
3.5
2^32-1
La habilidad para lanzar nuevos procesos (mallas de
bloques de hilos) desde la GPU de forma:
Novedades funcionales:
Generación de GPU
Fermi
Modelo hardware
Kepler
GF100 GF104 GK104
GK110
Compute Capability (CCC)
2.0
2.1
3.0
3.5
Paralelismo dinámico
No
No
No
Sí
Hardware
Estructura
del problema
Hyper-Q
No
No
No
Sí
Hardware
Planificación
de hilos
CPU
GPU
Fermi: Sólo la CPU puede
generar trabajo en GPU.
CPU
GPU
Kepler: La GPU puede
generar trabajo por sí sola.
45
Así se hacían las cosas en la era pre-Kepler:
La GPU era un mero esclavo del host o CPU
Y así se pueden hacer con Kepler:
Las GPUs lanzan sus propios kernels
Antes la GPU era un co-procesador
Gran ancho de banda en las comunicaciones:
Externas: Superior a 10 GB/s (PCI-express 3).
Internas: Superior a 100 GB/s (memoria de vídeo GDDR5 y anchura
de bus en torno a 384 bits, que es como un séxtuple canal en CPU).
Función
Lib
Lib
Función
46
CPU
GPU
Con Kepler, la GPU is más autónoma:
Entra en escena el paralelismo dinámico
CPU
GPU
Función
Init
GPU
Alloc
CPU
Operación 1
Operación 2
Operación 3
Ahora los programas van más rápido y
se expresan de una forma más natural.
47
48
El comportamiento de los warps nos enseña
que la GPU no es un procesador regular
Hyper-Q
En Fermi, diversos procesos de CPU ya podían enviar sus mallas
de bloques de hilos sobre una misma GPU, pero un kernel no
podía comenzar hasta que no acabase el anterior.
En Kepler, pueden ejecutarse simultáneamente hasta 32 kernels
procedentes de:
Factores impredecibles en tiempo de ejecución dificultan
un reparto equilibrado de la carga computacional entre los
multiprocesadores. Aquí vemos un ejemplo de la varianza
existente entre los 8 últimos warps ejecutados en cada SM:
Varios procesos de MPI, hilos de CPU o streams de CUDA.
Esto incrementa el porcentaje de ocupación temporal de la GPU.
FERMI
KEPLER
1 sola tarea MPI activa
32 tareas MPI simultáneas
49
Sin Hyper-Q: Multiproceso por división temporal
Síntesis final
B
% utilización de la GPU
100
A
Kepler simboliza la generación de GPUs de Nvidia para
2013-14, más adecuada para miles de cores.
Habilita todas las formas de paralelismo a gran escala: De
tareas, de instrucciones, de datos y vectorial.
Hace énfasis en la eficiencia energética y en ampliar la
programabilidad del modelo CUDA.
La GPU es más autónoma, pero a la vez admite mayor
interacción con la CPU.
También se mejora la jerarquía de memoria y las
conexiones entre las memorias de las GPUs.
La conexión SMX-DRAM será determinante en el futuro.
50
0
C
A
B
C
D
E
F
Tiempo
Con Hyper-Q: Multiproceso simultáneo
E
F
100
% utilización de la GPU
D
D
D
C
F
A
C
C
50
B
E
F
B
F
E
B
A
A
0
Procesos en CPU... ...mapeados sobre GPU
D
0
50
E
Tiempo ganado
51
52
Bibliografía recomendada
Muchas gracias por vuestra atención
Descripciones y especificaciones técnicas de los modelos
Tesla vigentes en la actualidad:
Siempre a vuestra disposición en el Dpto.
de Arquitectura de Computadores de la
Universidad de Málaga:
http://www.nvidia.com/object/tesla_product_literature.html
e-mail: [email protected]
Teléfono: +34 952 13 28 24.
Página Web: http://manuel.ujaldon.es
(versiones disponibles en español e inglés).
Documentación sobre CUDA para Kepler:
Best Practices Guide: http://docs.nvidia.com/cuda/cuda-c-best-practices-guide
Kepler Tuning Guide: http://docs.nvidia.com/cuda/kepler-tuning-guide
Webinars [de GTC'12 a GTC'13, continua actualización]:
http://www.nvidia.com/object/webinar.html
Especialmente recomendables:
"CUDA 5 and beyond" [por Mark Harris].
"New features in the CUDA programming model" [Stephen Jones & Lars Nyland].
"Introduction to dynamic parallelism" [Stephen Jones].
"Inside the Kepler Tesla K20 family" [Julia Levites & Stephen Jones].
53
54
Descargar