con GPUs y su aplicación en Tomografía Electrónica F. Vázquez, J. A. Martínez, E. M. Garzón, J. J. Fernández Portada Universidad de Almería
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 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 3
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 4
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 5
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 6
El rendimiento de SpMV viene determinado por: Formato de representación utilizado Patrón de la matriz 7
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 8
CRS A: Elementos no nulos de la matriz J: Índices de columna start: Inicio y fin de cada fila 9
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]; SpMV GPU: u = Av for (p=i;p<k;p++){ svalue+=a[p] * v[ J[p] ]; } u[x]=svalue; 10
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; } 11
SpMV CRS-vector: 32 threads por fila 12
SpMV CRS-vector: Etapa de reducción-suma 13
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 14
SpMV4GPU: 16 threads por fila + segmentos alineados 15
SpMV4GPU Acceso a memoria coalescente total Disminuye el grado de desbalanceo con respecto a CRSvector 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 16
COO: 1 thread por elemento no nulo A: Elementos no nulos de la matriz I, J: Índices de fila y columna 17
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 18
ELL Computación matricial dispersa 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 19
SpMV ELL SpMV GPU: u = Av 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; 20
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 21
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 22
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 23
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 24
BELLPACK Válido para matrices que presentan una estructuras de subbloques 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 25
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 26
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 27
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 28
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 29
ELLR A: Valores de la matriz J: Índices de columna rl: Longitud de cada fila 30
ELLR 31
Operaciones ELL vs ELLR Accesos a memoria 307 vs 169 ELLR: Tiempos de espera reducidos a max local del warp 32
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 33
ELLR-T 34
ELLR-T 35
ELLR-T 36
37
38
39
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 40
Conjunto de matrices 41
42
43
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 44
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 45
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 46
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 47
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 48
49
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 50
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 51
Tomografía Electrónica WBP: Weighted BackProjection Retroproyección de las imágenes de proyección para cada ángulo de giro 52
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(N 3 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 53
Tomografía Electrónica SIRT: Simultaneous Iterative Reconstruction Technique Cada iteración: a) Proyección b) Cálculo de error c) Retroproyección 54
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 55
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 56
WBP Matricial for s in Nslices g s = B p s Tomografía Electrónica Rebanada 4 x 4 nbins = 4, ntilts = 1 57
Tomografía Electrónica WBP Matricial: Patrón general 58
Tomografía Electrónica WBP Matricial: Niveles de simetría 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 simetría reduce la matriz en un 50% 59
Tomografía Electrónica WBP Matricial: ELLR General 60
Tomografía Electrónica WBP Geforce GTX 295 61
Tomografía Electrónica WBP Geforce GTX 295 62
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 63
Tomografía Electrónica SIRT Matricial Proyección: q k = A g k Cálculo de error: e k = (p q k ) / w Retroproyección: g k+1 = g k + B e k A = B T 64
SIRT Matricial Tomografía Electrónica A: General B: Sym2 65
Tomografía Electrónica SIRT 66
Tomografía Electrónica SIRT 67
Tomografía Electrónica WBP: 25 min vs 10 seg SIRT: 38 horas vs 19 min 68
Contraportada 69