Anda di halaman 1dari 69

JGPU 2011.

Universidad de Alicante
Portada
Computacin matricial dispersa con
GPUs y su aplicacin en Tomografa
Electrnica
Universidad de Almera
F. Vzquez, J. A. Martnez, E. M. Garzn, J. J. Fernndez
JGPU 2011. Universidad de Alicante 2
Contenidos
Computacin matricial dispersa
Introduccin a SpMV
Formatos de representacin de matrices dispersas
Formatos ELLR y ELLR-T
Evaluacin comparativa
Modelo analtico de ejecucin ELLR-T

Tomografa Electrnica
Mtodos de reconstruccin WBP, SIRT
WBP Matricial
SIRT Matricial



JGPU 2011. Universidad de Alicante 3
Contenidos
Computacin matricial dispersa
Introduccin a SpMV
Formatos de representacin de matrices dispersas
Formatos ELLR y ELLR-T
Evaluacin comparativa
Modelo analtico de ejecucin ELLR-T

Tomografa Electrnica
Mtodos de reconstruccin WBP, SIRT
WBP Matricial
SIRT Matricial



JGPU 2011. Universidad de Alicante 4
Computacin matricial dispersa
SpMV: Producto matriz dispersa vector
Operacin ampliamente utilizada
Procesamiento de imgenes, simulacin, ingeniera de
control, etc..
Aumentar el rendimiento de SpMV equivale a
aumentar el rendimiento de estas aplicaciones
Matriz dispersa
> 90% del total son ceros
Representacin en formato denso excede capacidad de
memoria. 200000 x 200000 > 150 GB
La mayora de las operaciones son cero



JGPU 2011. Universidad de Alicante 5
Computacin matricial dispersa
Matriz dispersa. Ventajas:
No se realizan operaciones sobre elementos nulos ya que
no se representan
El espacio de memoria se reduce considerablemente

Inconvenientes:
Prdida de la estructura densa: Nmero de columnas
Necesario usar otras estructuras de datos que permitan la
identificacin de cada entrada de la matriz



Formatos de representacin
JGPU 2011. Universidad de Alicante 6
Contenidos
Computacin matricial dispersa
Introduccin a SpMV
Formatos de representacin de matrices dispersas
Formatos ELLR y ELLR-T
Evaluacin comparativa
Modelo analtico de ejecucin ELLR-T

Tomografa Electrnica
Mtodos de reconstruccin WBP, SIRT
WBP Matricial
SIRT Matricial



JGPU 2011. Universidad de Alicante 7
Computacin matricial dispersa
El rendimiento de SpMV viene determinado por:
Formato de representacin utilizado
Patrn de la matriz



JGPU 2011. Universidad de Alicante 8
Computacin matricial dispersa
Formatos de representacin
N. Bell, M. Garland
CRS, CRS-vector, COO, ELL, HYB

M. M. Baskaran, R. Bordawekar
SpMV4GPU

J. W. Choi, A. Singth, R. W. Vuduc Georgia, USA
BELLPACK

A. Monakov, A. Lokhmotov, A. Avestiyan Moscow, Russia
Sliced ELLPACK







JGPU 2011. Universidad de Alicante 9
Computacin matricial dispersa
CRS




A: Elementos no nulos de la matriz
J: ndices de columna
start: Inicio y fin de cada fila


JGPU 2011. Universidad de Alicante 10
Computacin matricial dispersa
SpMV CRS: 1 thread por fila


int x = blockIdx.x * blockDim.x + threadIdx.x;

if(x<N){
int i, k, p;
float svalue=0.0;

i=start[x];
k=start[x+1];

for (p=i;p<k;p++){

svalue+=A[p] * v[ J[p] ];

}

u[x]=svalue;
}

SpMV GPU: u = Av
JGPU 2011. Universidad de Alicante 11
Computacin matricial dispersa
CRS
Acceso a memoria no coalescente
Desbalanceo de carga si el nmero de no nulos por fila es
muy distinto entre threads de un mismo bloque
Indireccin en el acceso a v


int x = blockIdx.x * blockDim.x + threadIdx.x;

if(x<N){
int i, k, p;
float svalue=0.0;
i=start[x];
k=start[x+1];
for (p=i;p<k;p++){
svalue+=A[p] * v[ J[p] ];
}
u[x]=svalue;
}

JGPU 2011. Universidad de Alicante 12
Computacin matricial dispersa
SpMV CRS-vector: 32 threads por fila


JGPU 2011. Universidad de Alicante 13
Computacin matricial dispersa
SpMV CRS-vector: Etapa de reduccin-suma


JGPU 2011. Universidad de Alicante 14
Computacin matricial dispersa
CRS-vector
Acceso a memoria coalescente parcial
Coalescencia parcial: No tiene en cuenta la alineacin de
segmentos:
3 half-warp: thread_id: 32..47
Segmentos: 0..15, 16..31, 32..47, 48..63
thread_id 32 toca 3 segmento posicin 37
thread_id 43 toca 4 segmento posicin 48
Aumenta el paralelismo al aumentar el nmero de threads
por fila
Desbalanceo a nivel de fila si el nmero de no nulos no es
mltiplo de 32. 1 fila tiene 37 no nulos, threads 5..31
parados en la 2 iteracin

JGPU 2011. Universidad de Alicante 15
Computacin matricial dispersa
SpMV4GPU: 16 threads por fila + segmentos
alineados


JGPU 2011. Universidad de Alicante 16
Computacin matricial dispersa
SpMV4GPU
Acceso a memoria coalescente total
Disminuye el grado de desbalanceo con respecto a CRS-
vector al destinar la mitad de threads a cada fila
P.ej: Fila con 60 no nulos y siguiente con 5 no nulos
SpMV4GPU:
1 fila: 4 iteraciones, 4 threads parados en la ltima
iteracin
2 fila: 1 iteracin, 11 threads parados
CRS-vector:
1 fila: 2 iteraciones, 4 threads parados en la ltima
iteracin
2 fila: 1 iteracin, 27 threads parados


JGPU 2011. Universidad de Alicante 17
Computacin matricial dispersa
COO: 1 thread por elemento no nulo





A: Elementos no nulos de la matriz
I, J: ndices de fila y columna
JGPU 2011. Universidad de Alicante 18
Computacin matricial dispersa
COO
Lmite fsico en el nmero mximo de threads que pueden
ejecutarse
Capacidad de cmputo 1.x: 33.553.920 threads (65535
bloques x 512 threads/bloque)
Capacidad de cmputo 2.x: 67.107.840 threads (65535
bloques x 1024 threads/bloque)
Acceso a memoria coalescente
Desestructuracin de la matriz. Requiere un acceso
adicional a I para obtener el ndice de fila
Funcin atmica de suma. El resultado de una fila ha de ser
actualizado por varios threads simultneamente
JGPU 2011. Universidad de Alicante 19
Computacin matricial dispersa
ELL





A: Valores de la matriz. Dimensin N x max
J: ndices de columna. Dimensin N x max
max: Mximo de elementos no nulos entre todas las
filas Estructura regular
JGPU 2011. Universidad de Alicante 20
Computacin matricial dispersa
SpMV ELL





int x = blockIdx.x * blockDim.x + threadIdx.x;

if(x<N){
int p, col;
float value, svalue=0.0;

for (p=0;p<max;p++){

value = A[N * p + x];

col = J[N * p + x];

if (value <> 0)

svalue+=value * v[ col ];

}

u[x]=svalue;
}

SpMV GPU: u = Av
JGPU 2011. Universidad de Alicante 21
Computacin matricial dispersa
ELL
Acceso a memoria coalescente parcial
Computacin innecesaria. max es un valor global entre
todas las filas de la matriz. Todos los threads han de llegar a
max y realizar la comprobacin value <> 0
Prdida de rendimiento en situaciones en las que max y el
nmero de elementos no nulos de la fila sean muy distintos
Divergencia. La sentencia if incluye una divergencia que
produce una serializacin en los threads que cumplen la
condicin

JGPU 2011. Universidad de Alicante 22
Computacin matricial dispersa
HYB
Trata de eliminar los problemas de ELL
Distribuye la matriz en dos estructuras: ELL y COO para
eliminar las discordancias entre el nmero de no nulos de
cada fila y max
Las filas con 2/3 de max ELL
Resto COO
Una misma fila est representada con dos formatos
Se necesitan varios kernels para realizar SpMV
Imposible realizar preclculos durante la realizacin de
SpMV

JGPU 2011. Universidad de Alicante 23
Computacin matricial dispersa
BELLPACK

Tres parmetros
Sub-bloque denso: r x c
Divisin en sub-matrices de
R filas
No es un formato general
Vlido para matrices con
Sub-bloques r x c densos
JGPU 2011. Universidad de Alicante 24
Computacin matricial dispersa
BELLPACK

Cada sub-matriz de R filas
con sub-bloques r x c se
representa en ELL
Slo se almacena el ndice
de columna del primer
elemento del sub-bloque
JGPU 2011. Universidad de Alicante 25
Computacin matricial dispersa
BELLPACK
Vlido para matrices que presentan una estructuras de sub-
bloques densos
No es un formato de representacin general
Necesario tunning de parmetros:
Tamao del sub-bloque: r x c
Tamao de las sub-matrices: R
Tamao del bloque de threads para la ejecucin: BS
Dada la reordenacin previa de filas, es necesario una
reordenacin posterior del vector resultado
Acceso a memoria coalescente total

JGPU 2011. Universidad de Alicante 26
Computacin matricial dispersa
Sliced ELLPACK

Divisin en grupos de S filas

Si S = 1 CRS

Si S = N ELL
Reordenacin inicial de filas
Bloque de BS threads por S filas
T=BS/S: N de threads por fila
Si T > 1 Reduccin-suma
JGPU 2011. Universidad de Alicante 27
Computacin matricial dispersa
Sliced ELLPACK
Parmetro max de ELL variable cada S filas
No sufre la sobrecarga de ELL en filas con un nmero de no
nulos muy distinto
Uso variable del nmero de threads por fila
Permite la adaptacin a distintos tipos de matrices
1 thread en filas muy dispersas
Varios threads en matrices con menos filas, pero menos
dispersas
Acceso a memoria coalescente total
Necesario tunning de T y S
Reordenacin del vector resultado

JGPU 2011. Universidad de Alicante 28
Contenidos
Computacin matricial dispersa
Introduccin a SpMV
Formatos de representacin de matrices dispersas
Formatos ELLR y ELLR-T
Evaluacin comparativa
Modelo analtico de ejecucin ELLR-T

Tomografa Electrnica
Mtodos de reconstruccin WBP, SIRT
WBP Matricial
SIRT Matricial



JGPU 2011. Universidad de Alicante 29
Computacin matricial dispersa
ELLR-T: Basado en el formato ELL
R: Nueva estructura de datos que indica el nmero de
elementos no nulos por fila: rl
T: Nmero de threads que calculan una fila
T puede ser: 1, 2, 4, 8, 16 32
Con T = 1, ELLR-1 equivale a ELLR y es la versin inicial
Ventajas:
Elimina la sobrecarga de ELL mediante el vector rl
Estructura regular de la matriz ajustada a max
No requiere reordenacin de filas
Sencillez, permite realizar preclculos
Ajuste de BS y T mediante modelo analtico de ejecucin
Coalescencia total, mejor rendimiento

JGPU 2011. Universidad de Alicante 30
Computacin matricial dispersa
ELLR





A: Valores de la matriz
J: ndices de columna
rl: Longitud de cada fila

JGPU 2011. Universidad de Alicante 31
Computacin matricial dispersa
ELLR






JGPU 2011. Universidad de Alicante 32
Computacin matricial dispersa
Operaciones ELL vs ELLR






Accesos a memoria 307 vs 169
ELLR: Tiempos de espera reducidos a max local del warp






JGPU 2011. Universidad de Alicante 33
Computacin matricial dispersa
ELLR-T
T threads calculan una fila
Aumenta nmero de threads totales de ejecucin
Aumenta nmero de bloques totales de ejecucin
Aumenta longitud de la cola de bloques por multiprocesador
Implica:
Aumentar paralelismo
Ocupacin: Ocultacin de latencias en el acceso a memoria
Aumenta el nmero de warps/bloques/threads activos
Capacidad de cmputo 1.x: 32 - 8 - 1024
Capacidad de cmputo 2.x: 48 - 8 - 1536









JGPU 2011. Universidad de Alicante 34
Computacin matricial dispersa
ELLR-T









JGPU 2011. Universidad de Alicante 35
Computacin matricial dispersa
ELLR-T









JGPU 2011. Universidad de Alicante 36
Computacin matricial dispersa
ELLR-T









JGPU 2011. Universidad de Alicante 37
Computacin matricial dispersa










JGPU 2011. Universidad de Alicante 38
Computacin matricial dispersa










JGPU 2011. Universidad de Alicante 39
Computacin matricial dispersa










JGPU 2011. Universidad de Alicante 40
Contenidos
Computacin matricial dispersa
Introduccin a SpMV
Formatos de representacin de matrices dispersas
Formatos ELLR y ELLR-T
Evaluacin comparativa
Modelo analtico de ejecucin ELLR-T

Tomografa Electrnica
Mtodos de reconstruccin WBP, SIRT
WBP Matricial
SIRT Matricial



JGPU 2011. Universidad de Alicante 41
Computacin matricial dispersa
Conjunto de matrices



JGPU 2011. Universidad de Alicante 42
Computacin matricial dispersa



JGPU 2011. Universidad de Alicante 43
Computacin matricial dispersa



JGPU 2011. Universidad de Alicante 44
Computacin matricial dispersa



Matriz
(GFLOPS)
BELLPACK
C1060
Sliced ELLPACK
GTX 280
ELLR-T
GTX 285
mac_econ -- 10,14 8,25
qcd5_4 25 25,67 29,29
mc2depi -- 20,03 23,60
rma10 18 20,60 24,38
cop20k_A -- 13,01 16,74
dense2 17 28,67 30,26
cant 27 24,74 30,01
pdb1HYS 21 25,56 29,62
consph 27 28,40 29,64
shipsec1 29 28,53 29,92
pwtk 23 28,52 31,48
JGPU 2011. Universidad de Alicante 45
Contenidos
Computacin matricial dispersa
Introduccin a SpMV
Formatos de representacin de matrices dispersas
Formatos ELLR y ELLR-T
Evaluacin comparativa
Modelo analtico de ejecucin ELLR-T

Tomografa Electrnica
Mtodos de reconstruccin WBP, SIRT
WBP Matricial
SIRT Matricial



JGPU 2011. Universidad de Alicante 46
Computacin matricial dispersa
Modelo analtico de ejecucin ELLR-T
Objetivo: Determinar a tiempo real T y BS
Ejecucin:
1. Lectura del histograma de la matriz rl
2. Aplicacin del modelo y obtencin de T y BS
3. Lectura de la matriz y representacin en ELLR-T
4. Llamada al kernel SpMV de ELLR-T con tamao de bloque
BS


JGPU 2011. Universidad de Alicante 47
Computacin matricial dispersa
Bases de diseo
Asignacin de bloques a los multiprocesadores de la GPU
SpMV est limitado por los accesos a memoria
Contar nmero de accesos a memoria de cada SM
Rendimiento de SpMV ligado al multiprocesador ms lento


JGPU 2011. Universidad de Alicante 48
Computacin matricial dispersa
Caractersticas
No modela el acceso al vector v en cach de texturas
Evala los tamaos de bloque que generan una ocupacin
del 100%
Capacidad de cmputo 1.x: BS=128, 256, 512
Capacidad de cmputo 2.x: BS=256, 512, 768
Resultados
91% acierto cuando se utiliza cach de texturas para v
97% acierto cuando no se utiliza cach de texturas para v

JGPU 2011. Universidad de Alicante 49
Computacin matricial dispersa
JGPU 2011. Universidad de Alicante 50
Contenidos
Computacin matricial dispersa
Introduccin a SpMV
Formatos de representacin de matrices dispersas
Formatos ELLR y ELLR-T
Evaluacin comparativa
Modelo analtico de ejecucin ELLR-T

Tomografa Electrnica
Mtodos de reconstruccin WBP, SIRT
WBP Matricial
SIRT Matricial



JGPU 2011. Universidad de Alicante 51
Tomografa Electrnica
Mtodos de reconstruccin WBP y SIRT


Adquisicin de imgenes mediante
geometra de eje nico de giro
La imagen de proyeccin contiene la
informacin de las rebanadas
perpendiculares al eje de giro para un
determinado ngulo
En la prctica toda la informacin de
una misma rebanada se agrupa en
una estructura llamada sinograma
La apilacin de las reconstrucciones
2D de los sinogramas dan lugar al
volmen 3D



JGPU 2011. Universidad de Alicante 52
Tomografa Electrnica
WBP: Weighted BackProjection
Retroproyeccin de las imgenes de proyeccin para cada
ngulo de giro
JGPU 2011. Universidad de Alicante 53
Tomografa Electrnica
WBP: Weighted BackProjection
Weighted: Filtro paso alto con el objeto de eliminar el ruido
implcito en el proceso de retroproyeccin
Complejidad del orden O(N
3
x M). N: Nm. Voxels, M: Nm.
Imgenes de proyeccin
La reconstruccin est fuertemente afectada por la limitacin
de los ngulos de giro y la funcin de transferencia del
microscopio, lo que se traduce en un emborronamiento de la
imagen
Vlido para la obtencin de una vista preliminar del
espcimen



JGPU 2011. Universidad de Alicante 54
Tomografa Electrnica
SIRT: Simultaneous Iterative Reconstruction Technique
Cada iteracin:
a) Proyeccin
b) Clculo de error
c) Retroproyeccin
JGPU 2011. Universidad de Alicante 55
Tomografa Electrnica
SIRT: Simultaneous Iterative Reconstruction Technique
Ms robusto en presencia de ruido y limitacin ngulos de giro
Altos requerimientos computacionales
Reconstrucciones de mayor calidad que WBP
a) WBP

b) SIRT
JGPU 2011. Universidad de Alicante 56
Contenidos
Computacin matricial dispersa
Introduccin a SpMV
Formatos de representacin de matrices dispersas
Formatos ELLR y ELLR-T
Evaluacin comparativa
Modelo analtico de ejecucin ELLR-T

Tomografa Electrnica
Mtodos de reconstruccin WBP, SIRT
WBP Matricial
SIRT Matricial



JGPU 2011. Universidad de Alicante 57
Tomografa Electrnica
WBP Matricial

for s in Nslices
g
s
= B p
s
Rebanada 4 x 4 nbins = 4, ntilts = 1
JGPU 2011. Universidad de Alicante 58
Tomografa Electrnica
WBP Matricial: Patrn general

JGPU 2011. Universidad de Alicante 59
Tomografa Electrnica
WBP Matricial: Niveles de simetra

General
Sym1: Elementos adyacentes
Sym2: Nivel de filas
Sym3: Angular

A: A
1
, A
2
, A
3
, A
12
, A
13
, A
23
, A
123
B: B
1
, B
2
, B
3
, B
12
, B
13
, B
23
, B
123

Cada nivel de simetra reduce
la matriz en un 50%


JGPU 2011. Universidad de Alicante 60
Tomografa Electrnica
WBP Matricial: ELLR General

JGPU 2011. Universidad de Alicante 61
Tomografa Electrnica
WBP Geforce GTX 295
JGPU 2011. Universidad de Alicante 62
Tomografa Electrnica
WBP Geforce GTX 295
JGPU 2011. Universidad de Alicante 63
Contenidos
Computacin matricial dispersa
Introduccin a SpMV
Formatos de representacin de matrices dispersas
Formatos ELLR y ELLR-T
Evaluacin comparativa
Modelo analtico de ejecucin ELLR-T

Tomografa Electrnica
Mtodos de reconstruccin WBP, SIRT
WBP Matricial
SIRT Matricial



JGPU 2011. Universidad de Alicante 64
Tomografa Electrnica
SIRT Matricial
Proyeccin: q
k
= A g
k
Clculo de error: e
k
= (p q
k
) / w
Retroproyeccin: g
k+1
= g
k
+ B e
k

A = B
T

JGPU 2011. Universidad de Alicante 65
Tomografa Electrnica
SIRT Matricial
A: General
B: Sym2
JGPU 2011. Universidad de Alicante 66
Tomografa Electrnica
SIRT
JGPU 2011. Universidad de Alicante 67
Tomografa Electrnica
SIRT
JGPU 2011. Universidad de Alicante 68
Tomografa Electrnica
WBP: 25 min vs 10 seg
SIRT: 38 horas vs 19 min
JGPU 2011. Universidad de Alicante 69
Contraportada

Anda mungkin juga menyukai