Serie 1 MPI
Serie 1 MPI
Serie 1 MPI
Análisis de Solución
Idea principal: (Para hacer el cálculo lo más simple posible, todas las matrices experimentales son matrices
cuadradas)
1. Para las matrices A y B, primero divídalas en pequeños bloques de matriz del mismo formato de bloque
p de acuerdo con el número de subprocesos p, donde cada bloque de matriz solo necesita ser una matriz
cuadrada, que puede ser específicamente de primer orden y de segundo orden O enésimo orden. Aquí
utilicé el número de subprocesos p para el cálculo específico, es decir, todos los procesos excepto el
proceso 0. Después de la división, cada proceso contiene un par de matrices de bloques
correspondientes a las posiciones de la matriz A y la matriz B.
2. Asigne las posiciones iniciales a las matrices A y B. No es fácil describirlo en lenguaje aquí. La
siguiente matriz de bloques se usa como ejemplo.
Estas matrices se dividen en 4 bloques cuadrados de la siguiente manera:
Después de eso, [todas las filas de la matriz A se desplazan hacia la izquierda una vez de acuerdo con las reglas
anteriores, y todas las columnas de B se desplazan hacia arriba una vez, y luego se multiplican y se agregan
correspondientemente para obtener la matriz C1, y repite los pasos p-1 veces para obtener C1, C2, , Cn.
Cada subproceso envía la matriz de bloques de la matriz C obtenida por sí misma al proceso 0, y la matriz final
C se obtiene.
En esta formulación paralela del algoritmo, descomponemos la matriz A en filas, una por cada proceso.
Por lo tanto, cada proceso tendrá una fila de la matriz y el vector por el que se va a multiplicar.
Cada proceso obtendrá como resultado un número, que al juntarlos (MPI_Gather) en el proceso 0 forman el
vector solución.