Universidad de Murcia1 Algoritmos matriciales por bloques Multiplicación de matrices. BLAS Domingo Giménez Departamento de Informática y Sistemas Universidad.

Slides:



Advertisements
Presentaciones similares
Introducción al lenguaje C
Advertisements

Complejidad Computacional
TEMA 1 Introducción a la Programación Concurrente
Diseño y análisis de algoritmos
ING SEC 3 - UCSC Agosto 2009 Laboratorio Lenguaje de Programación ING – Universidad Católica SSMA Concepción Semestre II Tema:
1.3. PROGRAMACION PARALELA
PROGRAMACIÓN PARALELA Tema 5: Análisis de algoritmos paralelos
Concepto de programa. Directorio Concepto de programa. Analisis del problema. Resolucion del problema. Desarroollo de un programa. Partes constitutivas.
Departamento de Sistemas Informáticos y Programación Universidad Complutense de Madrid Bloque 1: Introduccion Unidad 1: Consideraciones acerca de la eficiencia.
Funcionamiento, programación
Tema II Unidad de memoria. 2 Unidad de memoria 2.1 Definiciones y conceptos básicos Localización Capacidad Unidad de transferencia
Ingeniería de sw.
1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones  IMPLEMENTACIÓN VLSI DEL ALGORITMO CORDIC EN MODO VECTORIZACIÓN UTILIZANDO RADIX ALTO 
L aboratorio de P aralelismo IF - EHU. 4. T IPOS DE P ROBLEMAS P ARALELOS. M ETODOLOGÍA DE D ESARROLLO DE P ROGRAMAS P ARALELOS.
APLICACIÓN DE PROCESAMIENTO EN PARALELO BASADO EN OPENMP EN EL MANEJO MATRICIAL USADO EN EL ANÁLISIS DE SISTEMAS ELÉCTRICOS Antonio Ramos Paz 1, Eustaquio.
Tema 10: Gestión de Memoria
Algoritmos Distribuidos Semana 1. Parte 2 Comunicación por Pase de Mensajes Claudia León Universidad Central de Venezuela Facultad de Ciencias Escuela.
Introducción a la Computación Paralela Germán Larrazábal Departamento Computación, FACYT, Universidad de Carabobo, Venezuela
Memoria Otros temas sobre cachés. Universidad de SonoraArquitectura de Computadoras2 Otros temas 1. Estrategias de búsqueda de bloque. 2. Estrategias.
Computación Matricial y Paralela1 Algoritmos Numéricos Algoritmos matriciales básicos Almacenamiento de matrices Operaciones básicas con vectores Operaciones.
PROGRAMACIÓN PARALELA Tema 4: Metodología de la programación
Curso de Computación Científica en Clusters
1 Librería secuencial de Álgebra Lineal Densa LAPACK Domingo Giménez Javier Cuenca Facultad de Informática Universidad de Murcia.
Librería secuencial de Álgebra Lineal Densa LAPACK
Introducción a Mathematica. Datos del Curso Duración: 30 horas Fechas: del 14 de junio al 2 de julio Horario: de 10:00 a 12:00 horas Requisitos: Conocimientos.
Introducción al análisis de algoritmos
Universidad Domingo Savio Facultad de Ciencias y Tecnología de la Información Carrera Ingeniería en Redes y Telecomunicaciones Materia : Programación I.
INSTITUTO TECNOLÓGICO DE CD. GUZMÁN
Tema 10.3: Asignación de Espacio No Contiguo. Tema 10.3: 2 Silberschatz, Galvin and Gagne ©2005 Fundamentos de los Computadores (ITT, Sist. Electr.),
Overview Sistemas Computacionales
Tipos de Paralelismo Paralelismo de datos: cada procesador ejecuta la misma tarea sobre diferentes conjuntos o subregiones de datos Paralelismo de tareas:
ELO3201 Contenedores Biblioteca Estándar de Templates Agustín J. González ELO320 Contenido Contenedores: Vector, List, Deque, Stack, Queue, Priority Queue,
Contenido Marco de referencia Arquitectura de computadoras paralelas
Asignación de Espacio No Contiguo
Informática Ingeniería en Electrónica y Automática Industrial
Introducción a los Sistemas Operativos
UNIDAD 2. ALGORITMOS Y ESTRUCTURAS DE DATOS.
Sistemas Concurrentes: Conceptos fundamentales
12 December 2005Universidad de Murcia1 Computación Matricial y Paralela Curso Doctorado programa de Informática y Matemáticas Aplicadas en Ciencia e Ingeniería,
Principio de la presentación © Prof. Dr. François E. Cellier Modelado Matemático de Sistemas Físicos Febrero 5, 2008 El Algoritmo de Tarjan para la Ordenación.
14 de diciembre de 2005 Universidad de Murcia1 Modelos de computadores paralelos Domingo Giménez Departamento de Informática y Sistemas Universidad de.
Regresión Lineal Múltiple en Excel y SPSS
PROGRAMACIÓN PARALELA Modelos de programación paralela Modelos computacionales Paradigmas de programación paralela Programación en memoria compartida:
14 de diciembre de 2005 Universidad de Murcia1 Programación en Memoria Compartida: OpenMP Domingo Giménez Departamento de Informática y Sistemas Universidad.
Matrices Departamento de Computación Escuela de Ingeniería de Sistemas
Eficiencia en los diseños factoriales
Gestión de Memoria.
Se agrupan en tres grandes bloques: Gabriel Farina.
Departamento de Matemática Aplicada I Curso 2002/2003. Universidad de Sevilla Manuel Blanco Guisado David Martínez González Raúl Palomino Sánchez Procesamiento.
Departamento de Sistemas Informáticos y Programación Universidad Complutense de Madrid Bloque 2: Divide y Vencerás Unidad 1: Nociones básicas.
GAP GAP Parallel Architectures Group Grupo de Arquitecturas Paralelas Jornada d’Arquitectures per a Càlcul i Comunicacions Avançades, Feb.04 Valencia Metodología.
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO Facultad de Ingeniería Introducción a CUDA C Laboratorio de Intel para la Academia y Cómputo de alto desempeño.
Matrices Prof. Flor Narciso Departamento de Computación
Objetivo Mostrar los fundamentos de la programación a través de ejemplos y prácticas utilizadas cotidianamente en el desarrollo de aplicaciones.
Oscar F. Bedoya L. Fundamentos de análisis y diseño de algoritmos.
1 COMPUTACIÓN MATRICIAL Y PARALELA curso profesores Antonio Javier Cuenca Muñoz Domingo Giménez Cánovas dis.um.es/~domingo/doctorado/0607/commatpar.html.
ARQUICTECTURA DE SERVIDORES
ARQUITECTURA ALTERNATIVA DE SERVIDORES SISTEMAS OPERTIVOS DE RED En un sistema operativo de red los usuarios saben que están conectados a la red y que.
Son los atributos de un sistema que son visibles para un programador, es decir aquellos atributos que impactan directamente en la ejecución lógica de un.
* UNIVERSIDAD TECNOLOGICA DE PUEBLA TECNOLOGIAS DE LA INFORMACION Y COM. AREA REDES Y TELECOMUNIC IONES ADMINISTRACION DE SERVIDORES «ARQUITECTURA DE COMPUTADORAS»
Introducción a los TADs
ARQUITECTURAS DE LOS SERVIDORES El computador tiene 2 aspectos para entender su funcionamiento al nivel de programación: Almacenamiento Procesamiento Para.
75.41 Algoritmos y Programación II Cátedra Ing. Patricia Calvo Complejidad algorítmica.
UNSa Sede Regional Oran TEU - TUP. Un espacio vectorial (o espacio lineal) es el objeto básico de estudio del álgebra lineal.álgebra lineal A los elementos.
PROGRAMACIÓN Grupo de Modelamiento de Sistemas
I Kamilo Osorio Restrepo 8°B Juan David Velez. TIPOS DE PROCESADORES Y SUS FUNCIONES PRINCIPALES CISC. Complex Instruction Set Computing. Posee un número.
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) V. GESTIÓN DE TIPOS Y GENERACIÓN DE CÓDIGOS.
Arquitectura de Computadores Clase 18 Memoria Caché: Fundamentos IIC 2342 Semestre Rubén Mitnik Pontificia Universidad Católica de Chile Escuela.
UNIVERSIDAD TECNOLÓGICA DE PANAMÁ Facultad de Ingeniería de Sistemas Computacionales Programa de Lic. en Informática Educativa Computación.
Librerías secuenciales de Álgebra Lineal Densa: BLAS y LAPACK
Transcripción de la presentación:

Universidad de Murcia1 Algoritmos matriciales por bloques Multiplicación de matrices. BLAS Domingo Giménez Departamento de Informática y Sistemas Universidad de Murcia, Spain dis.um.es/~domingo

Universidad de Murcia2 Contenido Jerarquía de librerías Obteniendo información Algoritmos por bloques BLAS

Universidad de Murcia3 Jerarquía de librerías ScaLAPACK LAPACK BLAS PBLAS BLACS Comunicaciones: PVM, MPI Secuencial Paso de mensajes Dependiente de la plataforma Independiente de la plataforma Direccionamiento local Direccionamiento global

Universidad de Murcia4 Jerarquía de librerías ScaLAPACK LAPACK BLAS PBLAS BLACS Comunicaciones Inverse Eigenvalue ProblemLeast Square ProblemPDE Solver Se puede extender la jerarquía resolviendo problemas de alto coste computacional. Necesarios algoritmos eficientes en sistemas de altas prestaciones.

Universidad de Murcia5 Obteniendo información a/la-sw.html a/la-sw.html

Universidad de Murcia6 Algoritmos por bloques En vez de realizar operaciones elemento a elemento realizarlas con bloques de elementos: menos accesos a memoria para el mismo volumen de computación  menor tiempo de ejecución. Técnica utilizada desde los años 80. Se utiliza en LAPACK para obtener rutinas eficientes independientemente del sistema donde se ejecuten.

Universidad de Murcia7 Algoritmos por bloques Multiplicación de matrices (en SUN Ultra 1) : Método\tamaño Normal Traspuesta Bloques Bloq tras Almac blo Bl tr al bl Bloq dob

Universidad de Murcia8 Algoritmos por bloques Las prestaciones de los distintos algoritmos varían con: Tamaño del problema Parámetros del algoritmo Sistema en que se ejecuta Forma de la matriz …

Universidad de Murcia9 Algoritmos por bloques Necesario: Aprender a usar librerías eficientes Aprender a desarrollar algoritmos por bloques Desarrollar técnicas de autooptimización, que seleccionen el algoritmo y los parámetros a usar, para obtener buenas prestaciones independiente de: El sistema donde se ejecuta Las condiciones actuales del sistema Los conocimientos del usuario

Universidad de Murcia10 Algoritmos por bloques multmult(a,fa,ca,lda,b,fb,cb,ldb,c,fc,cc,ldc) double *a; int fa,ca,lda; double *b; int fb,cb,ldb; double *c; int fc,cc,ldc; { int i,j,k; double s; for(i=0;i<fa;i++) for(j=0;j<cb;j++) { s=0.; for(k=0;k<ca;k++) s+=a[i*lda+k]*b[k*ldb+j]; c[i*ldc+j]=s; } Algoritmo sin bloques (normal). Acceso elemento a elemento. Problemas pequeños buenas prestaciones pues caben en memoria de niveles bajos de la jerarquía. Problemas grandes peores prestaciones.

Universidad de Murcia11 Algoritmos por bloques multbloquesmultbloques(a,fa,ca,lda,b,fb,cb,ldb,c,fc,cc,ldc,tb) double *a; int fa,ca,lda; double *b; int fb,cb,ldb; double *c; int fc,cc,ldc, tb; { int i,j,k; double *s; s=(double *) malloc(sizeof(double)* tb * tb); for(i=0;i<fa;i=i+ tb) for(j=0;j<cb;j=j+ tb) { ceros(s, tb, tb, tb); for(k=0;k<ca;k=k+ tb) multsumar(&a[i*lda+k], tb, tb,lda,&b[k*ldb+j], tb, tb,ldb,s, tb, tb, tb); copiar(s, tb, tb, tb,&c[i*ldc+j], tb, tb,ldc); } free(s); } Algoritmo por bloques. Acceso y operaciones por bloques. Buenas prestaciones independiente del tamaño. El tamaño de bloque es parámetro a determinar.

Universidad de Murcia12 Algoritmos por bloques A i k tb B k j C i j s

Universidad de Murcia13 Algoritmos por bloques multbloquesgrandesmultbloquesgrandes(a,fa,ca,lda,b,fb,cb,ldb,c,fc,cc,ldc,tb,tbp) double *a; int fa,ca,lda; double *b; int fb,cb,ldb; double *c; int fc,cc,ldc, tb, tbp; { int i,j,k; double *s; s=(double *) malloc(sizeof(double)* tb * tb); for(i=0;i<fa;i=i+ tb) for(j=0;j<cb;j=j+ tb) { ceros(s, tb, tb, tb); for(k=0;k<ca;k=k+ tb) multsumarbloques(&a[i*lda+k], tb, tb,lda,&b[k*ldb+j], tb, tb,ldb,s, tb, tb, tb, tbp); copiar(s, tb, tb, tb,&c[i*ldc+j], tb, tb,ldc); } free(s); } Algoritmo por bloques dobles. La operación sobre bloques no es la multiplicación directa, sino por bloques. Tenemos dos tamaños de bloque.

Universidad de Murcia14 Algoritmos por bloques Almacenamiento por bloques: matriz almacenamiento posible acceso más rápido a los datos dentro de las operaciones por bloques

Universidad de Murcia15 Algoritmos por bloques Trasposición de la matriz B y multiplicación: Trasposición mult(a,fa,ca,lda,b,fb,cb,ldb,c,fc,cc,ldc) double *a; int fa,ca,lda; double *b; int fb,cb,ldb; double *c; int fc,cc,ldc; { int i,j,k; double s; for(i=0;i<fa;i++) for(j=0;j<cb;j++) { s=0.; for(k=0;k<ca;k++) s+=a[i*lda+k]*b[j*ldb+k]; c[i*ldc+j]=s; }

Universidad de Murcia16 BLAS ScaLAPACK LAPACK BLAS PBLAS BLACS Comunicaciones: PVM, MPI Paso de mensajes Secuencial Dependiente de la plataforma Independiente de la plataforma Direccionamiento local Direccionamiento global Basic Linear Algebra Subprograms

Universidad de Murcia17 BLAS Conjunto de rutinas para realizar operaciones básicas sobre vectores y matrices Publications/references for the BLAS? 1. C. L. Lawson, R. J. Hanson, D. Kincaid, and F. T. Krogh, Basic Linear Algebra Subprograms for FORTRAN usage, ACM Trans. Math. Soft., 5 (1979), pp ACM Trans. Math. Soft., 5 (1979) 2. J. J. Dongarra, J. Du Croz, S. Hammarling, and R. J. Hanson, An extended set of FORTRAN Basic Linear Algebra Subprograms, ACM Trans. Math. Soft., 14 (1988), pp ACM Trans. Math. Soft., 14 (1988) 3. J. J. Dongarra, J. Du Croz, I. S. Duff, and S. Hammarling, A set of Level 3 Basic Linear Algebra Subprograms, ACM Trans. Math. Soft., 16 (1990), pp ACM Trans. Math. Soft., 16 (1990)

Universidad de Murcia18 BLAS Hay tres niveles según el coste computacional: tipo costeaccesos operacionescomputacionalmemoria BLAS1 vector-vectorn n BLAS2 matriz-vectorn 2 n 2 BLAS3 matriz-matrizn 3 n 2

Universidad de Murcia19 BLAS 1

Universidad de Murcia20 BLAS 1 Ejemplo ddot.fddot.f Calcula el producto escalar de dos vectores Se puede usar en el bucle más interno de la multiplicación de matrices, dando lugar a una versión con BLAS 1versión con BLAS 1 Se compila con (depende del sistema) cc –O3 mb1.c –lblas -lm

Universidad de Murcia21 BLAS Formato de las funciones (niveles 2 y 3): XYYZZZ X: Tipo de datos: S : REAL D : DOUBLE PRECISION C : COMPLEX Z : DOUBLE COMPLEX YY: Tipo de matriz: GE, GB, HE, HP, HB, SY, SP, TR, TP, TB ZZZ: Operación: MV: productor matriz vector MM: producto matriz matriz SV: sistema de ecuaciones...

Universidad de Murcia22 BLAS 2

Universidad de Murcia23 BLAS 2

Universidad de Murcia24 BLAS 2 Ejemplo dgemv.fdgemv.f Calcula el producto de una matriz por un vector Se puede usar en el segundo bucle en la multiplicación de matrices, dando lugar a una versión con BLAS 2versión con BLAS 2 Se compila con cc –O3 mb2.c –lblas -lm

Universidad de Murcia25 BLAS 3

Universidad de Murcia26 BLAS 3 Ejemplo dgemm.fdgemm.f Calcula el producto de una matriz por un vector Se puede hacer la multiplicación de matrices llamando directamente a la rutina correspondiente de BLASllamando directamente Se compila con icc –O3 mb3.c –lgslcblas -lm

Universidad de Murcia27 BLAS Multiplicación de matrices (en kefren, pentium 4) : Método\tamaño Normal Traspuesta Bloques Bloq dob Blas Blas Blas

Universidad de Murcia28 BLAS - Práctica Probar las prestaciones de: La multiplicación de matrices por bloques y sin bloques Variando el tamaño de las matrices Y determinar el tamaño de bloque óptimo Comparar con las prestaciones obtenidas usando BLAS en sus tres niveles