1 / 29

La Multiplicaci

niveditha
Download Presentation

La Multiplicaci

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


    1. La Multiplicación de Matrices Capítulo 11

    3. Multiplicación Ingenua en openMP #include <stdio.h> int main (void) {/*Declararciones Entradas */ ….. /*Computar el producto de una matríz a l X m por una matríz b m X n: c=a*b */ #pragma omp parallel for private(j,k) for (i=0; i<l; i++) for (j=0; j<n; j++) { c[i][j]=0; La complexidad es ?(lmn) for (k=0; k<m; k++) c[i][j]=c[i][j]+a[i][k]*b[k][j]; } return 0 }

    4. Algoritmos Secuenciales

    5. Algoritmos orientados hacia filas

    6. Rendimiento para n creciente

    7. La Razón: La Matriz B puede ser muy grande para el Cache

    8. Multiplicación mediante Bloques

    9. Particionar recursivemente

    10. Comparación de Rendimiento Secuencial

    11. Algoritmos en MPI

    12. Un Algoritmo Paralelo Basado en Bloques de Filas Particionar filas Cada tarea primitiva tiene las filas correspondientes de tres matrices Comunicaciones Cada tarea tiene que ver eventualmente cada fila de B Organizar tareas en un anillo.

    13. Communication of B

    14. Communication of B

    15. Communication of B

    16. Communication of B

    17. La Complexidad Hay p iteraciones En cada iteración un proceso multiplica un bloque de tamaño (n/p) ? (n / p) de A por un bloque (n / p) ? n de B: ?(n3 / p2) Tiempo de computación total: ?(n3 / p) Cada proceso envia (p-1)n2/p = ?(n2) elementos de B

    18. Isoeficiencia El algoritmo secuencial: ?(n3) Los gastos paralelos generales: ?(pn2) Isoefficiency relation: n3 ? Cpn2 ? n ? Cp Este sistema no tiene buena escabilidad.

    19. Una Versión Secuencial del Algoritmo de Cannon Presumir que A y B son n X n, p es un cuadrado, y que n es un multiplo de vp Particionar A y B en bloques de tamaño (n/vp) X (n/vp)

    20. El Algoritmo de Cannon Inicialmente: -trasladar todo Aij i posiciones a la izquierda y todo Bij j posiciones hacia arriba Llevar a cabo la multiplicación de bloques Rotar: -trasladar todo Aij una posición a la izquierda y todo Bij una posición hacia arriba Llevar a cabo la multiplicación de bloques Sumar al resultado parcial Repetir hasta que todos los vp bloques se han multiplicados

    21. Hay que Alinear los Bloques

    22. Paso 1

    23. Paso 2

    24. Paso 3

    25. Paso 4

    26. La Implantación de Cannon en MPI Crear una cuadr?cula de procesos Cada proceso Pij tiene un bloque de A y un bloque de B y es responsible por computar el bloque Cij Inicialmente, cada Pij contiene Aij y Bij Luego cada Pij envia su bloque de A i procesos hacia la izquierda y su bloque de B j procesos hacia arriba

    27. La Implantación de Cannon en MPI (cont) Después del paso inicial, hay vp iteraciones En cada iteración cada proceso multiplica sus dos bloques, suma el resultado a una suma parcial, y luego envia su bloque de A al proceso a la izquierda y du bloque de B al proceso arriba, y recibe un bloque de A del proceso a la derecha y un bloque de B del proceso abajo.

    28. Complexidad El algoritmo tiene ?p iterations En cada iteración cada proceso multiplica dos matrices (n / ?p ) ? (n / ?p ): ?(n3 / p 3/2) Complexidad computacional: ?(n3 / p) En cada iteración cada proceso envia y recibe dos bloques de tamaño (n / ?p ) ? (n / ?p ) La complexidad de comunicación: ?(n2/ ?p)

    29. Isoeficiencia Algoritmo secuencial: ?(n3) Gastos paralelos generales: ?(?pn2) La relación de isoeficiencia: n3 ? C ? pn2 ? n ? C ? p La función escalable es M(f(p))/p=C2 Este sistema es muy escalable.

More Related