Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

MPI: Πολλαπλασιασμός Πινάκων

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "MPI: Πολλαπλασιασμός Πινάκων"— Μεταγράφημα παρουσίασης:

1 MPI: Πολλαπλασιασμός Πινάκων
Κώστας Διαμαντάρας Τμήμα Πληροφορικής ΤΕΙ Θεσσαλονίκης 2011

2 Πολλαπλασιασμός Πινάκων
6 4 6 4 5 5 C = A × B Πλήθος στηλών A = πλήθος γραμμών B Πλήθος γραμμών C = πλήθος γραμμών A Πλήθος στηλών C = πλήθος στηλών B Κώστας Διαμαντάρας - ΤΕΙ Θεσσαλονίκης Μαθήματα MPI

3 Πολλαπλασιασμός Πινάκων
C[1][1] = A[1][1]*B[1][1] + A[1][2]*B[2][1] A[1][4]*B[4][1] C[1][2] = A[1][1]*B[1][2] + A[1][2]*B[2][2] A[1][4]*B[4][2] C[5][6] = A[5][1]*B[1][6] + A[5][2]*B[2][6] A[5][4]*B[4][6] C = A × B C[i][j] = ‹ i γραμμή του A › * ‹ j στήλη του B › Κώστας Διαμαντάρας - ΤΕΙ Θεσσαλονίκης Μαθήματα MPI

4 Κατανομή Γραμμών σε διεργασίες
C A B Διεργασία 0 Διεργασία 1 Διεργασία 2 Διεργασία 0 Διεργασία 1 Διεργασία 2 Χρήση MPI_Scatter για διαμοιρασμό των γραμμών των πινάκων A, B στις διεργασίες 0, 1, 2 Έξτρα γραμμές dummy για να δουλέψει το scatter (γραμμή 6 των C, A, και γραμμές 5, 6 του B). Δεν θα χρησιμοποιηθούν σε πράξεις Κώστας Διαμαντάρας - ΤΕΙ Θεσσαλονίκης Μαθήματα MPI

5 MPI_Scatter MPI_Scatter(&localA[0], n, MPI_INT, &A[0], n, MPI_INT, 0, MPI_COMM_WORLD); int A[N]; /* N>=n*p, p=πλήθος διεργασιών */ int localA[n]; Πχ. p=3: Διεργασία 0 localA A Διεργασία 1 Διεργασία 2 Άδειο Άδειο localA A localA A Κώστας Διαμαντάρας - ΤΕΙ Θεσσαλονίκης Μαθήματα MPI

6 Υπολογισμός γινομένου
Για να βρω το στοιχείο C[i][j] πρέπει να πολλαπλασιάσω την i γραμμή του A με την j στήλη του B Η Δ0 διαβάζει τους πίνακες Α, Β και τους μοιράζει στις Δ1, Δ2 (πχ. MPI_Scatter)  τοπικοί πίνακες : localA, localB Για κάθε στήλη j του B { Για κάθε γραμμή i του localΑ { Υπολόγισε το εσωτερικό γινόμενο των διανυσμάτων: localΑ[i][*] , B[*][j]  localC[i][j] (πχ. Για να συλλέξω την στήλη Β από τα localB κάνω MPI_Allgather) } Η Δ0 συλλέγει τα localC (πχ. με MPI_Gather)  C Κώστας Διαμαντάρας - ΤΕΙ Θεσσαλονίκης Μαθήματα MPI

7 MPI_Allgather MPI_Allgather(&localB[0], n, MPI_INT, &B[0], n, MPI_INT, MPI_COMM_WORLD); int localB[n]; int B[N]; /* N>=n*p, p=πλήθος διεργασιών */ Πχ. p=3: Διεργασία 0 localB B Διεργασία 1 Διεργασία 2 localB B localB B Κώστας Διαμαντάρας - ΤΕΙ Θεσσαλονίκης Μαθήματα MPI


Κατέβασμα ppt "MPI: Πολλαπλασιασμός Πινάκων"

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google