Jak złożyć i rozwiązać system macierzowy równolegle z wartościami generowanymi w różnych procesorach?


10

Rozwiązuję problem wieloskalowy za pomocą heterogenicznej metody wieloskalowej (HMM) . Zasadniczo moja konkretna procedura wykorzystuje następujący proces iteracyjny:

  1. Rozwiąż wiele lokalnych systemów macierzowych.
  2. Oblicz wartość zainteresowania z rozwiązań lokalnych systemów.
  3. Złóż globalny system macierzy na podstawie lokalnych „wartości zainteresowania”
  4. Rozwiąż globalny system macierzy
  5. Skorzystaj z rozwiązania globalnego systemu macierzy, aby utworzyć nowe lokalne systemy macierzy.

Powtarzaj do momentu spełnienia niektórych kryteriów konwergencji.

Ponieważ istnieje wiele lokalnych (niezależnych) liniowych układów równań i wiele systemów może zmieścić się w lokalnej pamięci RAM, uważam, że najlepiej jest załadować wiele „lokalnych” systemów do każdego procesora i rozwiązać każdy system sekwencyjnie ( patrz to opublikowane pytanie ).

Moje pytanie dotyczy najlepszej strategii montażu i rozwiązania globalnego systemu macierzy. W moim szczególnym przypadku globalny system macierzy jest wystarczająco mały, aby zmieścił się całkowicie w pamięci RAM dowolnego procesora. Ponadto macierze lokalne i globalne nie zmieniają rozmiaru między iteracjami. Przewiduję jedną z trzech możliwych strategii:

  1. Zbierz „wartości będące przedmiotem zainteresowania” na jednym procesorze i złóż / rozwiąż globalny system macierzy sekwencyjnie na jednym procesorze.
  2. Kopiuj wartości będące przedmiotem zainteresowania na każdy procesor i montuj / rozwiązuj ten sam globalny system macierzy sekwencyjnie na każdym procesorze.
  3. Zakładając, że każdy procesor posiada „wartości będące przedmiotem zainteresowania” niezbędne do wytworzenia sąsiadujących bloków macierzy globalnej, możemy lokalnie złożyć partycje macierzy globalnej, a następnie rozwiązać je razem równolegle.

Widzę pewne zalety / wady każdej metody. W metodzie 1 komunikacja nie jest konieczna w fazie rozwiązywania, ale komunikacja do iz procesora głównego może stać się wąskim gardłem (szczególnie w skali). Metoda 2 może wymagać większej komunikacji między procesorami w celu złożenia globalnej matrycy niż pierwsza metoda, ale nie jest potrzebna komunikacja w fazie rozwiązywania lub w następnym etapie montażu macierzy lokalnej. Metoda 3 nie wymaga komunikacji między procesorami w celu złożenia macierzy lokalnych lub globalnych, ale wymaga jej w fazie rozwiązywania.

Załóżmy, że każdy system lokalny jest rzędu x i że istnieje x lokalnych systemów macierzowych. Załóżmy ponadto, że globalny system macierzy ma rozmiar x . Przy tych założeniach, która z trzech wyżej wymienionych strategii prawdopodobnie doprowadzi do szybszego rozwiązania systemu globalnego? Czy istnieją inne strategie mapowania dla globalnej macierzy, które mogą działać szybciej podczas iteracji?10 3 10 3 10 3 10 3 10 3103)103)103)103)103)103)


Bardzo interesujące pytanie. Mam nadzieję, że ktoś ma dobre odpowiedzi.
Zapytanie

nkn×knkn

106

kn

k<100O(n)

Odpowiedzi:


4

Nie sądzę, aby był jakikolwiek przypadek, w którym chciałbyś rozwiązać na poziomie 0. Rozwiązanie nadmiarowe jest prawie zawsze lepsze, ponieważ w przypadku drobnych rzeczy redukcja jest tak samo skuteczna jak redukcja, a nadmiarowe obliczenie ma tylko jedno zamiast dwóch.

Jednak to, czy wykonać obliczenia nadmiarowe na wszystkich węzłach, czy też na podzbiorze, czy też na nadmiarowych podzbiorach, zależy od sprzętu i wielkości systemu. Dlatego powinieneś mieć system, który może wykonać dowolną z nich. PCREDUNDANT w PETSc może rozwiązać nadmiarowo wszystkie procesy, niektóre procesy lub podzbiory procesów równolegle.

106


N.=4096
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.