Upload
others
View
7
Download
0
Embed Size (px)
Citation preview
JGPU 2011. Universidad de Alicante
Portada
Computación matricial dispersa con
GPUs y su aplicación en Tomografía
Electrónica
Universidad de Almería
F. Vázquez, J. A. Martínez, E. M. Garzón, J. J. Fernández
JGPU 2011. Universidad de Alicante 2
Contenidos Computación matricial dispersa
Introducción a SpMV
Formatos de representación de matrices dispersas
Formatos ELLR y ELLR-T
Evaluación comparativa
Modelo analítico de ejecución ELLR-T
Tomografía Electrónica
Métodos de reconstrucción WBP, SIRT
WBP Matricial
SIRT Matricial
JGPU 2011. Universidad de Alicante 3
Contenidos Computación matricial dispersa
Introducción a SpMV
Formatos de representación de matrices dispersas
Formatos ELLR y ELLR-T
Evaluación comparativa
Modelo analítico de ejecución ELLR-T
Tomografía Electrónica
Métodos de reconstrucción WBP, SIRT
WBP Matricial
SIRT Matricial
JGPU 2011. Universidad de Alicante 4
Computación matricial dispersa
SpMV: Producto matriz dispersa vector
Operación ampliamente utilizada Procesamiento de imágenes, simulación, ingeniería de control, etc..
Aumentar el rendimiento de SpMV equivale a
aumentar el rendimiento de estas aplicaciones
Matriz dispersa > 90% del total son ceros
Representación en formato denso excede capacidad de memoria. 200000 x 200000 > 150 GB
La mayoría de las operaciones son cero
JGPU 2011. Universidad de Alicante 5
Computación 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: Pérdida de la estructura densa: Número de columnas
Necesario usar otras estructuras de datos que permitan la identificación de cada entrada de la matriz
Formatos de representación
JGPU 2011. Universidad de Alicante 6
Contenidos Computación matricial dispersa
Introducción a SpMV
Formatos de representación de matrices dispersas
Formatos ELLR y ELLR-T
Evaluación comparativa
Modelo analítico de ejecución ELLR-T
Tomografía Electrónica
Métodos de reconstrucción WBP, SIRT
WBP Matricial
SIRT Matricial
JGPU 2011. Universidad de Alicante 7
Computación matricial dispersa
El rendimiento de SpMV viene determinado por: Formato de representación utilizado
Patrón de la matriz
JGPU 2011. Universidad de Alicante 8
Computación matricial dispersa
Formatos de representación 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
Computación 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
Computación 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
Computación matricial dispersa
CRS Acceso a memoria no coalescente
Desbalanceo de carga si el número de no nulos por fila es muy distinto entre threads de un mismo bloque
Indirección 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
Computación matricial dispersa
SpMV CRS-vector: 32 threads por fila
JGPU 2011. Universidad de Alicante 13
Computación matricial dispersa
SpMV CRS-vector: Etapa de reducción-suma
JGPU 2011. Universidad de Alicante 14
Computación matricial dispersa
CRS-vector Acceso a memoria coalescente parcial
Coalescencia parcial: No tiene en cuenta la alineación de segmentos:
• 3º half-warp: thread_id: 32..47
• Segmentos: 0..15, 16..31, 32..47, 48..63
• thread_id 32 toca 3º segmento posición 37
• thread_id 43 toca 4º segmento posición 48
Aumenta el paralelismo al aumentar el número de threads por fila
Desbalanceo a nivel de fila si el número de no nulos no es múltiplo de 32. 1ª fila tiene 37 no nulos, threads 5..31 parados en la 2ª iteración
JGPU 2011. Universidad de Alicante 15
Computación matricial dispersa
SpMV4GPU: 16 threads por fila + segmentos alineados
JGPU 2011. Universidad de Alicante 16
Computación 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 iteración
» 2ª fila: 1 iteración, 11 threads parados
– CRS-vector:
» 1ª fila: 2 iteraciones, 4 threads parados en la última iteración
» 2ª fila: 1 iteración, 27 threads parados
JGPU 2011. Universidad de Alicante 17
Computación 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
Computación matricial dispersa
COO Límite físico en el número máximo de threads que pueden ejecutarse
• Capacidad de cómputo 1.x: 33.553.920 threads (65535 bloques x 512 threads/bloque)
• Capacidad de cómputo 2.x: 67.107.840 threads (65535
bloques x 1024 threads/bloque) Acceso a memoria coalescente
Desestructuración de la matriz. Requiere un acceso
adicional a I para obtener el índice de fila
Función atómica de suma. El resultado de una fila ha de ser actualizado por varios threads simultáneamente
JGPU 2011. Universidad de Alicante 19
Computación matricial dispersa
ELL
A: Valores de la matriz. Dimensión N x max
J: Índices de columna. Dimensión N x max
max: Máximo de elementos no nulos entre todas las filas Estructura regular
JGPU 2011. Universidad de Alicante 20
Computación 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
Computación matricial dispersa
ELL Acceso a memoria coalescente parcial
Computación innecesaria. max es un valor global entre todas las filas de la matriz. Todos los threads han de llegar a max y realizar la comprobación value <> 0
Pérdida de rendimiento en situaciones en las que max y el número de elementos no nulos de la fila sean muy distintos
Divergencia. La sentencia if incluye una divergencia que produce una serialización en los threads que cumplen la condición
JGPU 2011. Universidad de Alicante 22
Computación 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 número 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 precálculos durante la realización de SpMV
JGPU 2011. Universidad de Alicante 23
Computación matricial dispersa
BELLPACK
Tres parámetros
Sub-bloque denso: r x c
División en sub-matrices de
R filas
No es un formato general
Válido para matrices con
Sub-bloques r x c densos
JGPU 2011. Universidad de Alicante 24
Computación matricial dispersa
BELLPACK
Cada sub-matriz de R filas
con sub-bloques r x c se
representa en ELL
Sólo se almacena el índice
de columna del primer
elemento del sub-bloque
JGPU 2011. Universidad de Alicante 25
Computación matricial dispersa
BELLPACK Válido para matrices que presentan una estructuras de sub-bloques densos
No es un formato de representación general
Necesario “tunning” de parámetros:
• Tamaño del sub-bloque: r x c
• Tamaño de las sub-matrices: R
• Tamaño del bloque de threads para la ejecución: BS
Dada la reordenación previa de filas, es necesario una reordenación posterior del vector resultado
Acceso a memoria coalescente total
JGPU 2011. Universidad de Alicante 26
Computación matricial dispersa
Sliced ELLPACK
División en grupos de S filas
Si S = 1 CRS
Si S = N ELL
Reordenación inicial de filas
Bloque de BS threads por S filas
T=BS/S: Nº de threads por fila
Si T > 1 Reducción-suma
JGPU 2011. Universidad de Alicante 27
Computación matricial dispersa
Sliced ELLPACK Parámetro max de ELL variable cada S filas
• No sufre la sobrecarga de ELL en filas con un número de no nulos muy distinto
Uso variable del número de threads por fila
• Permite la adaptación 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
Reordenación del vector resultado
JGPU 2011. Universidad de Alicante 28
Contenidos Computación matricial dispersa
Introducción a SpMV
Formatos de representación de matrices dispersas
Formatos ELLR y ELLR-T
Evaluación comparativa
Modelo analítico de ejecución ELLR-T
Tomografía Electrónica
Métodos de reconstrucción WBP, SIRT
WBP Matricial
SIRT Matricial
JGPU 2011. Universidad de Alicante 29
Computación matricial dispersa
ELLR-T: Basado en el formato ELL R: Nueva estructura de datos que indica el número de elementos no nulos por fila: rl
T: Número 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 versión inicial
Ventajas:
• Elimina la sobrecarga de ELL mediante el vector rl
• Estructura regular de la matriz ajustada a max
• No requiere reordenación de filas
• Sencillez, permite realizar precálculos
• Ajuste de BS y T mediante modelo analítico de ejecución
• Coalescencia total, mejor rendimiento
JGPU 2011. Universidad de Alicante 30
Computación matricial dispersa
ELLR
A: Valores de la matriz
J: Índices de columna
rl: Longitud de cada fila
JGPU 2011. Universidad de Alicante 31
Computación matricial dispersa
ELLR
JGPU 2011. Universidad de Alicante 32
Computación 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
Computación matricial dispersa
ELLR-T T threads calculan una fila
Aumenta número de threads totales de ejecución
Aumenta número de bloques totales de ejecución
Aumenta longitud de la cola de bloques por multiprocesador
Implica: Aumentar paralelismo
Ocupación: Ocultación de latencias en el acceso a memoria
• Aumenta el número de warps/bloques/threads activos
• Capacidad de cómputo 1.x: 32 - 8 - 1024
• Capacidad de cómputo 2.x: 48 - 8 - 1536
JGPU 2011. Universidad de Alicante 34
Computación matricial dispersa
ELLR-T
JGPU 2011. Universidad de Alicante 35
Computación matricial dispersa
ELLR-T
JGPU 2011. Universidad de Alicante 36
Computación matricial dispersa
ELLR-T
JGPU 2011. Universidad de Alicante 37
Computación matricial dispersa
JGPU 2011. Universidad de Alicante 38
Computación matricial dispersa
JGPU 2011. Universidad de Alicante 39
Computación matricial dispersa
JGPU 2011. Universidad de Alicante 40
Contenidos Computación matricial dispersa
Introducción a SpMV
Formatos de representación de matrices dispersas
Formatos ELLR y ELLR-T
Evaluación comparativa
Modelo analítico de ejecución ELLR-T
Tomografía Electrónica
Métodos de reconstrucción WBP, SIRT
WBP Matricial
SIRT Matricial
JGPU 2011. Universidad de Alicante 41
Computación matricial dispersa Conjunto de matrices
JGPU 2011. Universidad de Alicante 42
Computación matricial dispersa
JGPU 2011. Universidad de Alicante 43
Computación matricial dispersa
JGPU 2011. Universidad de Alicante 44
Computación 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 Computación matricial dispersa
Introducción a SpMV
Formatos de representación de matrices dispersas
Formatos ELLR y ELLR-T
Evaluación comparativa
Modelo analítico de ejecución ELLR-T
Tomografía Electrónica
Métodos de reconstrucción WBP, SIRT
WBP Matricial
SIRT Matricial
JGPU 2011. Universidad de Alicante 46
Computación matricial dispersa
Modelo analítico de ejecución ELLR-T Objetivo: Determinar a tiempo real T y BS
Ejecución:
1. Lectura del histograma de la matriz rl
2. Aplicación del modelo y obtención de T y BS 3. Lectura de la matriz y representación en ELLR-T
4. Llamada al kernel SpMV de ELLR-T con tamaño de bloque
BS
JGPU 2011. Universidad de Alicante 47
Computación matricial dispersa
Bases de diseño Asignación de bloques a los multiprocesadores de la GPU
SpMV está limitado por los accesos a memoria
Contar número de accesos a memoria de cada SM
Rendimiento de SpMV ligado al multiprocesador más lento
JGPU 2011. Universidad de Alicante 48
Computación matricial dispersa
Características No modela el acceso al vector v en caché de texturas
Evalúa los tamaños de bloque que generan una ocupación del 100%
• Capacidad de cómputo 1.x: BS=128, 256, 512
• Capacidad de cómputo 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
Computación matricial dispersa
JGPU 2011. Universidad de Alicante 50
Contenidos Computación matricial dispersa
Introducción a SpMV
Formatos de representación de matrices dispersas
Formatos ELLR y ELLR-T
Evaluación comparativa
Modelo analítico de ejecución ELLR-T
Tomografía Electrónica
Métodos de reconstrucción WBP, SIRT
WBP Matricial
SIRT Matricial
JGPU 2011. Universidad de Alicante 51
Tomografía Electrónica
Métodos de reconstrucción WBP y SIRT
Adquisición de imágenes mediante geometría de eje único de giro
La imagen de proyección contiene la información de las rebanadas perpendiculares al eje de giro para un determinado ángulo
En la práctica toda la información de una misma rebanada se agrupa en una estructura llamada sinograma
La apilación de las reconstrucciones 2D de los sinogramas dan lugar al volúmen 3D
JGPU 2011. Universidad de Alicante 52
Tomografía Electrónica
WBP: Weighted BackProjection Retroproyección de las imágenes de proyección para cada ángulo de giro
JGPU 2011. Universidad de Alicante 53
Tomografía Electrónica
WBP: Weighted BackProjection Weighted: Filtro paso alto con el objeto de eliminar el ruido implícito en el proceso de retroproyección
Complejidad del orden O(N3 x M). N: Núm. Voxels, M: Núm. Imágenes de proyección
La reconstrucción está fuertemente afectada por la limitación de los ángulos de giro y la función de transferencia del microscopio, lo que se traduce en un emborronamiento de la imagen
Válido para la obtención de una vista preliminar del espécimen
JGPU 2011. Universidad de Alicante 54
Tomografía Electrónica
SIRT: Simultaneous Iterative Reconstruction Technique
Cada iteración:
a) Proyección
b) Cálculo de error
c) Retroproyección
JGPU 2011. Universidad de Alicante 55
Tomografía Electrónica
SIRT: Simultaneous Iterative Reconstruction Technique
Más robusto en presencia de ruido y limitación ángulos de giro
Altos requerimientos computacionales
Reconstrucciones de mayor calidad que WBP
a) WBP
b) SIRT
JGPU 2011. Universidad de Alicante 56
Contenidos Computación matricial dispersa
Introducción a SpMV
Formatos de representación de matrices dispersas
Formatos ELLR y ELLR-T
Evaluación comparativa
Modelo analítico de ejecución ELLR-T
Tomografía Electrónica
Métodos de reconstrucción WBP, SIRT
WBP Matricial
SIRT Matricial
JGPU 2011. Universidad de Alicante 57
Tomografía Electrónica
WBP Matricial
for s in Nslices
gs = B ps
Rebanada 4 x 4 – nbins = 4, ntilts = 1
JGPU 2011. Universidad de Alicante 58
Tomografía Electrónica
WBP Matricial: Patrón general
JGPU 2011. Universidad de Alicante 59
Tomografía Electrónica
WBP Matricial: Niveles de simetría
General
Sym1: Elementos adyacentes
Sym2: Nivel de filas
Sym3: Angular
A: A1, A2, A3, A12, A13, A23, A123
B: B1, B2, B3, B12, B13, B23, B123
Cada nivel de simetría reduce la matriz en un 50%
JGPU 2011. Universidad de Alicante 60
Tomografía Electrónica
WBP Matricial: ELLR General
JGPU 2011. Universidad de Alicante 61
Tomografía Electrónica
WBP Geforce GTX 295
JGPU 2011. Universidad de Alicante 62
Tomografía Electrónica
WBP Geforce GTX 295
JGPU 2011. Universidad de Alicante 63
Contenidos Computación matricial dispersa
Introducción a SpMV
Formatos de representación de matrices dispersas
Formatos ELLR y ELLR-T
Evaluación comparativa
Modelo analítico de ejecución ELLR-T
Tomografía Electrónica
Métodos de reconstrucción WBP, SIRT
WBP Matricial
SIRT Matricial
JGPU 2011. Universidad de Alicante 64
Tomografía Electrónica
SIRT Matricial Proyección: qk = A gk
Cálculo de error: ek = (p – qk) / w
Retroproyección: gk+1 = gk + B ek
A = BT
JGPU 2011. Universidad de Alicante 65
Tomografía Electrónica
SIRT Matricial
A: General
B: Sym2
JGPU 2011. Universidad de Alicante 66
Tomografía Electrónica
SIRT
JGPU 2011. Universidad de Alicante 67
Tomografía Electrónica
SIRT
JGPU 2011. Universidad de Alicante 68
Tomografía Electrónica WBP: 25 min vs 10 seg
SIRT: 38 horas vs 19 min
JGPU 2011. Universidad de Alicante 69
Contraportada