Computación matricial dispersa con GPUs y su aplicación en Tomografía Electrónica



Documentos relacionados
Modelo de aplicaciones CUDA

Una variable de clase escalar tiene un nivel de indirección igual a 1. Por ejemplo, las variables i, b y x definidas como se muestra a continuación.

Procesamiento Digital de Imágenes. Compresión de imágenes

DIRECTRICES Y ORIENTACIONES GENERALES PARA LAS PRUEBAS DE ACCESO A LA UNIVERSIDAD

1. Manejo de memoria estática 2. Manejo de memoria dinámica

!!!!!!!! !!!!! Práctica!4.! Programación!básica!en!C.! ! Grado!en!Ingeniería!!en!Electrónica!y!Automática!Industrial! ! Curso!2015H2016!

GPU IMPLEMENTATIONS OF SCHEDULING HEURISTICS FOR HETEROGENEOUS COMPUTING ENVIRONMENTS

INFORMÁTICA. Práctica 5. Programación en C. Grado en Ingeniería en Electrónica y Automática Industrial. Curso v1.0 (05.03.

Fundamentos de Matemática Aplicada. (Prácticas)

1. Generalidades. M. en C. Mario Farias-Elinos

Ejemplos de optimización para Kepler. 1. Balanceo dinámico de la carga. Contenidos de la charla [18 diapositivas]

PROGRAMACION VECTORIAL RAFAEL VALDÉS VALDAZO UO ÁNGEL MARÍA VILABOA PÉREZ UO BLOQUE PARALELAS 4º INFORMÁTICA UNIVERSIDAD DE OVIEDO

Departamento de Arquitectura de computadores y electrónica Universidad de Almería. Tesis Doctoral

Procesos. Planificación del Procesador.

Hardware y Estructuras de Control. Memoria Virtual. Ejecución de un Programa. Ejecución de un Programa

SEGURIDAD Y PROTECCION DE FICHEROS

GRAFOS. Prof. Ing. M.Sc. Fulbia Torres

Calendarización anual Programa de matemáticas 2º básico

Capítulo 12: Indexación y asociación

TEOREMA DE DETERMINACIÓN DE APLICACIONES LINEALES

Introducción a Matlab.

Computación de Propósito General en Unidades de Procesamiento Gráfico GPGPU

Práctica 1ª: Introducción a Matlab. 1er curso de Ingeniería Industrial: Ingeniería de Control

Introducción. Por último se presentarán las conclusiones y recomendaciones pertinentes.

Mineria de datos y su aplicación en web mining data Redes de computadores I ELO 322

No se requiere que los discos sean del mismo tamaño ya que el objetivo es solamente adjuntar discos.

Manual de rol gestor de GAV para moodle 2.5

DIAGRAMA DE GANTT. Este gráfico consiste simplemente en un sistema de coordenadas en que se indica:

Plataformas de soporte computacional: arquitecturas avanzadas,

Heterogénea y Jerárquica

GRUPOS PUNTUALES. 4.- Si un plano de simetría contiene un eje de orden n, existen n planos que contienen el eje. formando entre ellos ángulos de

MC ENRIQUE MARTINEZ PEÑA. Maestría en Ingeniería. Introducción al PDI Representación de la imagen Operaciones básicas con imágenes

Aplicaciones Lineales

Procedimientos para agrupar y resumir datos

Segmentación de Imágenes en Procesadores Many-Core

Universidad de Córdoba. Trabajo de Fin de Máster

De acuerdo con sus características podemos considerar tres tipos de vectores:

ing Solution La forma más efectiva de llegar a sus clientes.

PROBLEMAS MÉTRICOS. Página 183 REFLEXIONA Y RESUELVE. Diagonal de un ortoedro. Distancia entre dos puntos. Distancia de un punto a una recta

ATIENDE Registro de la atención de un cliente

CAPÍTULO 7 7. CONCLUSIONES

Capítulo 5 Programación del algoritmo en LabVIEW

Este documento enumera los diferentes tipos de Diagramas Matriciales y su proceso de construcción.

SERVIDOR WEB PARA ACCESO EN TIEMPO REAL A INFORMACIÓN METEOROLÓGICA DISTRIBUIDA

Modelización y Balanceo de la Carga Computacional en la Simulación Paralela de la Dispersión Atmosférica de Contaminantes

Documentación Técnica. Diseño de interfaces. Conciliación Contable. Cash Flow Manager

Administración Logística de Materiales

PRESUPUESTO BASE CERO ORGANISMO PÚBLICO DEL SISTEMA NACIONAL DE COORDINACIÓN FISCAL

Evaluación del rendimiento de procesadores Intel Nehalem. Modelos x7550, x5670 y x5570

Tutorial CUDA Univ. de Santiago. 6 y 7 de Agosto, 2013

Diseño orientado al flujo de datos

GESTION OPERATIVA. Niveles de gestión

Instructivo de Microsoft Excel 2003

Propuesta Matriz de Actividades para un Ciclo de Vida de Explotación de Datos

Hoja de problemas Estructuras de Control

15. Arquitectura de los multiprocesadores. 16. Multiprocesadores de memoria compartida. 17. Multicomputadores.

Infraestructura Tecnológica. Sesión 1: Infraestructura de servidores

INFORME TÉCNICO PREVIO DE EVALUACIÓN DE SOFTWARE SOFTWARE MICROSOFT VISUAL STUDIO PREMIUM

Kepler. 1. Presentación de la arquitectura. Índice de contenidos [25 diapositivas] Kepler, Johannes ( )

USABILIDAD Y ACCESIBILIDAD EN WEB Guillermo M. Martínez de la Teja


5.1Definición transformación lineal de núcleo ó kernel, e imagen de una transformación lineal y sus propiedades

Capítulo 4. Vectores y matrices. 4.1 Declaración de tablas. 4.2 Declaración estática de tablas

SEWERIN. Pre Localización De Fugas de Agua

LA MEDIDA Y SUS ERRORES

4. Programación Paralela

SISTEMAS DE INFORMACIÓN I TEORÍA

Nombre de la asignatura: Programación Estructurada. Créditos: Aportación al perfil

Vectores en el espacio

Técnicas de Planeación y Control

Geometría analítica. Impreso por Juan Carlos Vila Vilariño Centro I.E.S. PASTORIZA

Taller 3 Obras son amores

FaceFinder MÓDULO DE BÚSQUEDA DE PERSONAS DENTRO DE UNA BASE DE DATOS DE ROSTROS

ESTRUCTURA DE DATOS: ARREGLOS

Arquitectura de Computadores: Exámenes y Controles

CENTRO DE POSTGRADO MARCO NORMATIVO PARA LA ORGANIZACIÓN DE LOS TRABAJOS DE FIN DE MÁSTER UNIVERSITARIO

GUÍA PARA UN ESCANEO ÓPTIMO

Procesadores de lenguaje Tema 5 Comprobación de tipos

Computación de Propósito General en Unidades de Procesamiento Gráfico GPGPU

UNIVERSIDAD DR. JOSE MATIAS DELGADO

Guía para la instalación de discos duro SATA y Configuración RAID

NIC 36. Deterioro en el valor de los activos

Dirección de Planificación Universitaria Dirección de Planificación Universitaria Panamá, Rep. de Panamá Panamá, Rep.

IBM Maximo: soporte a la evolución en la función del Mantenimiento

Estas visiones de la información, denominadas vistas, se pueden identificar de varias formas.

Fundamentos de la Visión Artificial. Prof. Dr. Francisco Gómez Rodríguez Prof. Manuel J. Domínguez Morales 1

Informe de Seguimiento nº. 01/2012 del expediente nº. ABR_I_1139

CAPÍTULO 2 COLUMNAS CORTAS BAJO CARGA AXIAL SIMPLE

GEOMETRÍA PLANA TFM 2013 DIFICULTADES Y ERRORES MANIFESTADOS POR ESTUDIANTES DE 1º DE E.S.O. DURANTE EL APRENDIZAJE DE GEOMETRÍA PLANA

Unidad 5 Utilización de Excel para la solución de problemas de programación lineal

RESUMEN INFORMATIVO PROGRAMACIÓN DIDÁCTICA CURSO 2013/2014

I.E.S.MEDITERRÁNEO CURSO DPTO DE MATEMÁTICAS PROGRAMA DE RECUPERACIÓN DE LOS APRENDIZAJES NO ADQUIRIDOS EN MATEMÁTICAS DE 3º DE E.S.O.

Nuevos requerimientos del SAT para contabilidad electrónica

Sistemas Operativos Windows 2000

Trabajo Práctico Final. Transformada Rápida de Fourier con Paralelismo

La inteligencia de marketing que desarrolla el conocimiento

Clasificación de Música por Genero Utilizando Redes Neuronales Artificiales. Elkin García, Germán Mancera, Jorge Pacheco

IL DEL ACOPLAMIENTO ALEATORIO VS. IL DEL CABLE DE CONEXIÓN MAESTRO

FACULTAD DE INGENIERÍA FORESTAL EXCELENCIA ACADÉMICA QUE CONTRIBUYE AL DESARROLLO DE LAS CIENCIAS FORESTALES

EVOLUCIÓN DE LA TECNOLOGÍA LASER SCANNER. IMPLICACIONES EN SU USO EN CENTRALES NUCLEARES E INSTALACIONES RADIOCTIVAS

Transcripción:

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