Algorytm równoległy - mnożenie macierzy
Macierz to zestaw danych liczbowych i nienumerycznych ułożonych w ustalonej liczbie wierszy i kolumn. Mnożenie macierzy jest ważnym projektem mnożenia w obliczeniach równoległych. Tutaj omówimy implementację mnożenia macierzy w różnych sieciach komunikacyjnych, takich jak siatka i hipersześcian. Mesh i hypercube mają wyższą łączność sieciową, więc pozwalają na szybszy algorytm niż inne sieci, takie jak sieć pierścieniowa.
Siatka stacji
Topologia, w której zestaw węzłów tworzy p-wymiarową siatkę, nazywana jest topologią siatki. Tutaj wszystkie krawędzie są równoległe do osi siatki i wszystkie sąsiednie węzły mogą się ze sobą komunikować.
Całkowita liczba węzłów = (liczba węzłów w rzędzie) × (liczba węzłów w kolumnie)
Sieć kratową można ocenić na podstawie następujących czynników -
- Diameter
- Szerokość przekroju poprzecznego
Diameter - Najdłuższy w sieci kratowej distancemiędzy dwoma węzłami jest jego średnica. P-wymiarowa sieć kratowa posiadającakP węzły mają średnicę p(k–1).
Bisection width - Szerokość podziału to minimalna liczba krawędzi potrzebnych do usunięcia z sieci, aby podzielić sieć kratową na dwie połowy.
Mnożenie macierzy za pomocą sieci kratowej
Rozważaliśmy model SIMD sieci kratowej 2D z połączeniami zawijanymi. Zaprojektujemy algorytm mnożący dwie tablice n × n przy użyciu n 2 procesorów w określonym czasie.
Macierze A i B mają odpowiednio elementy a ij i b ij . Element przetwarzający PE ij reprezentuje a ij oraz b ij . Ułóż macierze A i B w taki sposób, aby każdy procesor miał parę elementów do pomnożenia. Elementy macierzy A będą poruszać się w lewo, a elementy macierzy B będą poruszać się w górę. Te zmiany położenia elementów w macierzy A i B przedstawiają każdemu elementowi przetwarzającemu PE nową parę wartości do pomnożenia.
Kroki w algorytmie
- Rozłóż dwie macierze.
- Oblicz wszystkie produkty, a ik × b kj
- Oblicz sumy po zakończeniu kroku 2.
Algorytm
Procedure MatrixMulti
Begin
for k = 1 to n-1
for all Pij; where i and j ranges from 1 to n
ifi is greater than k then
rotate a in left direction
end if
if j is greater than k then
rotate b in the upward direction
end if
for all Pij ; where i and j lies between 1 and n
compute the product of a and b and store it in c
for k= 1 to n-1 step 1
for all Pi;j where i and j ranges from 1 to n
rotate a in left direction
rotate b in the upward direction
c=c+aXb
End
Sieć Hypercube
Hipersześcian jest n-wymiarową konstrukcją, w której krawędzie są prostopadłe do siebie i mają tę samą długość. N-wymiarowy hipersześcian jest również znany jako n-sześcian lub n-wymiarowy sześcian.
Cechy Hypercube z węzłem 2 k
- Średnica = k
- Szerokość przekroju poprzecznego = 2 k – 1
- Liczba krawędzi = k
Mnożenie macierzy za pomocą Hypercube Network
Ogólna specyfikacja sieci Hypercube -
Pozwolić N = 2mbyć całkowitą liczbą procesorów. Niech procesorami będą P 0, P 1 … ..P N-1 .
Niech i i i b będą dwoma liczbami całkowitymi, 0 <i, i b <N-1, a jego binarna reprezentacja różni się tylko pozycją b, 0 <b <k – 1.
Rozważmy dwie macierze n × n, macierz A i macierz B.
Step 1- Elementy macierzy A i macierzy B są przypisane do n 3 procesorów w taki sposób, że procesor w pozycji i, j, k będzie miał ji i b ik .
Step 2 - Cały procesor na pozycji (i, j, k) oblicza iloczyn
C (i, j, k) = A (i, j, k) × B (i, j, k)
Step 3 - Suma C (0, j, k) = ΣC (i, j, k) dla 0 ≤ i ≤ n-1, gdzie 0 ≤ j, k <n – 1.
Block Matrix
Macierz blokowa lub macierz podzielona na partycje to macierz, w której każdy element sam reprezentuje indywidualną macierz. Te poszczególne sekcje są znane jakoblock lub sub-matrix.
Przykład
Na rysunku (a) X jest macierzą blokową, gdzie A, B, C, D same są macierzą. Rysunek (f) przedstawia całą macierz.
Mnożenie macierzy blokowej
Gdy dwie macierze blokowe są macierzami kwadratowymi, wówczas są mnożone w taki sam sposób, w jaki wykonujemy proste mnożenie macierzy. Na przykład,