Computación matricial dispersa con GPUs y su aplicación en ... · Computación matricial dispersa...

69
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

Transcript of Computación matricial dispersa con GPUs y su aplicación en ... · Computación matricial dispersa...

Page 1: Computación matricial dispersa con GPUs y su aplicación en ... · Computación matricial dispersa ELL Acceso a memoria coalescente parcial Computación innecesaria. max es un valor

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

Page 2: Computación matricial dispersa con GPUs y su aplicación en ... · Computación matricial dispersa ELL Acceso a memoria coalescente parcial Computación innecesaria. max es un valor

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

Page 3: Computación matricial dispersa con GPUs y su aplicación en ... · Computación matricial dispersa ELL Acceso a memoria coalescente parcial Computación innecesaria. max es un valor

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

Page 4: Computación matricial dispersa con GPUs y su aplicación en ... · Computación matricial dispersa ELL Acceso a memoria coalescente parcial Computación innecesaria. max es un valor

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

Page 5: Computación matricial dispersa con GPUs y su aplicación en ... · Computación matricial dispersa ELL Acceso a memoria coalescente parcial Computación innecesaria. max es un valor

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

Page 6: Computación matricial dispersa con GPUs y su aplicación en ... · Computación matricial dispersa ELL Acceso a memoria coalescente parcial Computación innecesaria. max es un valor

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

Page 7: Computación matricial dispersa con GPUs y su aplicación en ... · Computación matricial dispersa ELL Acceso a memoria coalescente parcial Computación innecesaria. max es un valor

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

Page 8: Computación matricial dispersa con GPUs y su aplicación en ... · Computación matricial dispersa ELL Acceso a memoria coalescente parcial Computación innecesaria. max es un valor

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

Page 9: Computación matricial dispersa con GPUs y su aplicación en ... · Computación matricial dispersa ELL Acceso a memoria coalescente parcial Computación innecesaria. max es un valor

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

Page 10: Computación matricial dispersa con GPUs y su aplicación en ... · Computación matricial dispersa ELL Acceso a memoria coalescente parcial Computación innecesaria. max es un valor

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

Page 11: Computación matricial dispersa con GPUs y su aplicación en ... · Computación matricial dispersa ELL Acceso a memoria coalescente parcial Computación innecesaria. max es un valor

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; }

Page 12: Computación matricial dispersa con GPUs y su aplicación en ... · Computación matricial dispersa ELL Acceso a memoria coalescente parcial Computación innecesaria. max es un valor

JGPU 2011. Universidad de Alicante 12

Computación matricial dispersa

SpMV CRS-vector: 32 threads por fila

Page 13: Computación matricial dispersa con GPUs y su aplicación en ... · Computación matricial dispersa ELL Acceso a memoria coalescente parcial Computación innecesaria. max es un valor

JGPU 2011. Universidad de Alicante 13

Computación matricial dispersa

SpMV CRS-vector: Etapa de reducción-suma

Page 14: Computación matricial dispersa con GPUs y su aplicación en ... · Computación matricial dispersa ELL Acceso a memoria coalescente parcial Computación innecesaria. max es un valor

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

Page 15: Computación matricial dispersa con GPUs y su aplicación en ... · Computación matricial dispersa ELL Acceso a memoria coalescente parcial Computación innecesaria. max es un valor

JGPU 2011. Universidad de Alicante 15

Computación matricial dispersa

SpMV4GPU: 16 threads por fila + segmentos alineados

Page 16: Computación matricial dispersa con GPUs y su aplicación en ... · Computación matricial dispersa ELL Acceso a memoria coalescente parcial Computación innecesaria. max es un valor

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

Page 17: Computación matricial dispersa con GPUs y su aplicación en ... · Computación matricial dispersa ELL Acceso a memoria coalescente parcial Computación innecesaria. max es un valor

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

Page 18: Computación matricial dispersa con GPUs y su aplicación en ... · Computación matricial dispersa ELL Acceso a memoria coalescente parcial Computación innecesaria. max es un valor

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

Page 19: Computación matricial dispersa con GPUs y su aplicación en ... · Computación matricial dispersa ELL Acceso a memoria coalescente parcial Computación innecesaria. max es un valor

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

Page 20: Computación matricial dispersa con GPUs y su aplicación en ... · Computación matricial dispersa ELL Acceso a memoria coalescente parcial Computación innecesaria. max es un valor

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

Page 21: Computación matricial dispersa con GPUs y su aplicación en ... · Computación matricial dispersa ELL Acceso a memoria coalescente parcial Computación innecesaria. max es un valor

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

Page 22: Computación matricial dispersa con GPUs y su aplicación en ... · Computación matricial dispersa ELL Acceso a memoria coalescente parcial Computación innecesaria. max es un valor

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

Page 23: Computación matricial dispersa con GPUs y su aplicación en ... · Computación matricial dispersa ELL Acceso a memoria coalescente parcial Computación innecesaria. max es un valor

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

Page 24: Computación matricial dispersa con GPUs y su aplicación en ... · Computación matricial dispersa ELL Acceso a memoria coalescente parcial Computación innecesaria. max es un valor

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

Page 25: Computación matricial dispersa con GPUs y su aplicación en ... · Computación matricial dispersa ELL Acceso a memoria coalescente parcial Computación innecesaria. max es un valor

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

Page 26: Computación matricial dispersa con GPUs y su aplicación en ... · Computación matricial dispersa ELL Acceso a memoria coalescente parcial Computación innecesaria. max es un valor

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

Page 27: Computación matricial dispersa con GPUs y su aplicación en ... · Computación matricial dispersa ELL Acceso a memoria coalescente parcial Computación innecesaria. max es un valor

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

Page 28: Computación matricial dispersa con GPUs y su aplicación en ... · Computación matricial dispersa ELL Acceso a memoria coalescente parcial Computación innecesaria. max es un valor

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

Page 29: Computación matricial dispersa con GPUs y su aplicación en ... · Computación matricial dispersa ELL Acceso a memoria coalescente parcial Computación innecesaria. max es un valor

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

Page 30: Computación matricial dispersa con GPUs y su aplicación en ... · Computación matricial dispersa ELL Acceso a memoria coalescente parcial Computación innecesaria. max es un valor

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

Page 31: Computación matricial dispersa con GPUs y su aplicación en ... · Computación matricial dispersa ELL Acceso a memoria coalescente parcial Computación innecesaria. max es un valor

JGPU 2011. Universidad de Alicante 31

Computación matricial dispersa

ELLR

Page 32: Computación matricial dispersa con GPUs y su aplicación en ... · Computación matricial dispersa ELL Acceso a memoria coalescente parcial Computación innecesaria. max es un valor

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

Page 33: Computación matricial dispersa con GPUs y su aplicación en ... · Computación matricial dispersa ELL Acceso a memoria coalescente parcial Computación innecesaria. max es un valor

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

Page 34: Computación matricial dispersa con GPUs y su aplicación en ... · Computación matricial dispersa ELL Acceso a memoria coalescente parcial Computación innecesaria. max es un valor

JGPU 2011. Universidad de Alicante 34

Computación matricial dispersa

ELLR-T

Page 35: Computación matricial dispersa con GPUs y su aplicación en ... · Computación matricial dispersa ELL Acceso a memoria coalescente parcial Computación innecesaria. max es un valor

JGPU 2011. Universidad de Alicante 35

Computación matricial dispersa

ELLR-T

Page 36: Computación matricial dispersa con GPUs y su aplicación en ... · Computación matricial dispersa ELL Acceso a memoria coalescente parcial Computación innecesaria. max es un valor

JGPU 2011. Universidad de Alicante 36

Computación matricial dispersa

ELLR-T

Page 37: Computación matricial dispersa con GPUs y su aplicación en ... · Computación matricial dispersa ELL Acceso a memoria coalescente parcial Computación innecesaria. max es un valor

JGPU 2011. Universidad de Alicante 37

Computación matricial dispersa

Page 38: Computación matricial dispersa con GPUs y su aplicación en ... · Computación matricial dispersa ELL Acceso a memoria coalescente parcial Computación innecesaria. max es un valor

JGPU 2011. Universidad de Alicante 38

Computación matricial dispersa

Page 39: Computación matricial dispersa con GPUs y su aplicación en ... · Computación matricial dispersa ELL Acceso a memoria coalescente parcial Computación innecesaria. max es un valor

JGPU 2011. Universidad de Alicante 39

Computación matricial dispersa

Page 40: Computación matricial dispersa con GPUs y su aplicación en ... · Computación matricial dispersa ELL Acceso a memoria coalescente parcial Computación innecesaria. max es un valor

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

Page 41: Computación matricial dispersa con GPUs y su aplicación en ... · Computación matricial dispersa ELL Acceso a memoria coalescente parcial Computación innecesaria. max es un valor

JGPU 2011. Universidad de Alicante 41

Computación matricial dispersa Conjunto de matrices

Page 42: Computación matricial dispersa con GPUs y su aplicación en ... · Computación matricial dispersa ELL Acceso a memoria coalescente parcial Computación innecesaria. max es un valor

JGPU 2011. Universidad de Alicante 42

Computación matricial dispersa

Page 43: Computación matricial dispersa con GPUs y su aplicación en ... · Computación matricial dispersa ELL Acceso a memoria coalescente parcial Computación innecesaria. max es un valor

JGPU 2011. Universidad de Alicante 43

Computación matricial dispersa

Page 44: Computación matricial dispersa con GPUs y su aplicación en ... · Computación matricial dispersa ELL Acceso a memoria coalescente parcial Computación innecesaria. max es un valor

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

Page 45: Computación matricial dispersa con GPUs y su aplicación en ... · Computación matricial dispersa ELL Acceso a memoria coalescente parcial Computación innecesaria. max es un valor

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

Page 46: Computación matricial dispersa con GPUs y su aplicación en ... · Computación matricial dispersa ELL Acceso a memoria coalescente parcial Computación innecesaria. max es un valor

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

Page 47: Computación matricial dispersa con GPUs y su aplicación en ... · Computación matricial dispersa ELL Acceso a memoria coalescente parcial Computación innecesaria. max es un valor

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

Page 48: Computación matricial dispersa con GPUs y su aplicación en ... · Computación matricial dispersa ELL Acceso a memoria coalescente parcial Computación innecesaria. max es un valor

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

Page 49: Computación matricial dispersa con GPUs y su aplicación en ... · Computación matricial dispersa ELL Acceso a memoria coalescente parcial Computación innecesaria. max es un valor

JGPU 2011. Universidad de Alicante 49

Computación matricial dispersa

Page 50: Computación matricial dispersa con GPUs y su aplicación en ... · Computación matricial dispersa ELL Acceso a memoria coalescente parcial Computación innecesaria. max es un valor

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

Page 51: Computación matricial dispersa con GPUs y su aplicación en ... · Computación matricial dispersa ELL Acceso a memoria coalescente parcial Computación innecesaria. max es un valor

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

Page 52: Computación matricial dispersa con GPUs y su aplicación en ... · Computación matricial dispersa ELL Acceso a memoria coalescente parcial Computación innecesaria. max es un valor

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

Page 53: Computación matricial dispersa con GPUs y su aplicación en ... · Computación matricial dispersa ELL Acceso a memoria coalescente parcial Computación innecesaria. max es un valor

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

Page 54: Computación matricial dispersa con GPUs y su aplicación en ... · Computación matricial dispersa ELL Acceso a memoria coalescente parcial Computación innecesaria. max es un valor

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

Page 55: Computación matricial dispersa con GPUs y su aplicación en ... · Computación matricial dispersa ELL Acceso a memoria coalescente parcial Computación innecesaria. max es un valor

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

Page 56: Computación matricial dispersa con GPUs y su aplicación en ... · Computación matricial dispersa ELL Acceso a memoria coalescente parcial Computación innecesaria. max es un valor

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

Page 57: Computación matricial dispersa con GPUs y su aplicación en ... · Computación matricial dispersa ELL Acceso a memoria coalescente parcial Computación innecesaria. max es un valor

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

Page 58: Computación matricial dispersa con GPUs y su aplicación en ... · Computación matricial dispersa ELL Acceso a memoria coalescente parcial Computación innecesaria. max es un valor

JGPU 2011. Universidad de Alicante 58

Tomografía Electrónica

WBP Matricial: Patrón general

Page 59: Computación matricial dispersa con GPUs y su aplicación en ... · Computación matricial dispersa ELL Acceso a memoria coalescente parcial Computación innecesaria. max es un valor

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%

Page 60: Computación matricial dispersa con GPUs y su aplicación en ... · Computación matricial dispersa ELL Acceso a memoria coalescente parcial Computación innecesaria. max es un valor

JGPU 2011. Universidad de Alicante 60

Tomografía Electrónica

WBP Matricial: ELLR General

Page 61: Computación matricial dispersa con GPUs y su aplicación en ... · Computación matricial dispersa ELL Acceso a memoria coalescente parcial Computación innecesaria. max es un valor

JGPU 2011. Universidad de Alicante 61

Tomografía Electrónica

WBP Geforce GTX 295

Page 62: Computación matricial dispersa con GPUs y su aplicación en ... · Computación matricial dispersa ELL Acceso a memoria coalescente parcial Computación innecesaria. max es un valor

JGPU 2011. Universidad de Alicante 62

Tomografía Electrónica

WBP Geforce GTX 295

Page 63: Computación matricial dispersa con GPUs y su aplicación en ... · Computación matricial dispersa ELL Acceso a memoria coalescente parcial Computación innecesaria. max es un valor

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

Page 64: Computación matricial dispersa con GPUs y su aplicación en ... · Computación matricial dispersa ELL Acceso a memoria coalescente parcial Computación innecesaria. max es un valor

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

Page 65: Computación matricial dispersa con GPUs y su aplicación en ... · Computación matricial dispersa ELL Acceso a memoria coalescente parcial Computación innecesaria. max es un valor

JGPU 2011. Universidad de Alicante 65

Tomografía Electrónica

SIRT Matricial

A: General

B: Sym2

Page 66: Computación matricial dispersa con GPUs y su aplicación en ... · Computación matricial dispersa ELL Acceso a memoria coalescente parcial Computación innecesaria. max es un valor

JGPU 2011. Universidad de Alicante 66

Tomografía Electrónica

SIRT

Page 67: Computación matricial dispersa con GPUs y su aplicación en ... · Computación matricial dispersa ELL Acceso a memoria coalescente parcial Computación innecesaria. max es un valor

JGPU 2011. Universidad de Alicante 67

Tomografía Electrónica

SIRT

Page 68: Computación matricial dispersa con GPUs y su aplicación en ... · Computación matricial dispersa ELL Acceso a memoria coalescente parcial Computación innecesaria. max es un valor

JGPU 2011. Universidad de Alicante 68

Tomografía Electrónica WBP: 25 min vs 10 seg

SIRT: 38 horas vs 19 min

Page 69: Computación matricial dispersa con GPUs y su aplicación en ... · Computación matricial dispersa ELL Acceso a memoria coalescente parcial Computación innecesaria. max es un valor

JGPU 2011. Universidad de Alicante 69

Contraportada