• Nie Znaleziono Wyników

Moduł interfejsu z bibliotekami przesyłania komunikatów 181

4.2 Implementacja modułów

4.2.5 Moduł interfejsu z bibliotekami przesyłania komunikatów 181

Procedury modułu dekompozycji nie wywołują procedur żadnej z konkretnych bibliotek przesyłania komunikatów, a tylko funkcje interfejsu, opatrzone

na-zwami według przyjętej w kodzie konwencji, realizujące konieczne operacje komunikacyjne. Mogą istnieć różne implementacje modułu interfejsu, wywo-łujące procedury różnych bibliotek przesyłania komunikatów. Tak więc można tworzyć implementacje modułu interfejsu komunikacyjnego nie tylko dla stan-dardu MPI, ale także dla innych bibliotek, jak na przykład PVM.

Wszystkie przesłania komunikatów dzielą się na dwie grupy: przesłania dwupunktowe i operacje grupowe. W celu zmaksymalizowania ziarnistości ob-liczeń zakłada się, że przesłania dwupunktowe realizowane są z wykorzystaniem bufora pośredniego. Dane do przesłania gromadzone są w buforze, a następnie przesyłane, możliwie jak najrzadziej. Operacje grupowe wykorzystują standar-dowe typy wymiany komunikatów między wieloma procesorami (rozgłaszanie, rozpraszanie, zbieranie, itp.), w tym także redukcje (np. sumowania służące do obliczania norm, iloczynów skalarnych, itp.).

4.3 Równoległa realizacja obliczeń MES

Poniżej opisany jest przebieg obliczeń w ramach symulacji MES obejmujący etapy rozwiązania pojedynczego liniowego problemu dyskretyzacji przestrzen-nej oraz adaptacji siatki. Uwzględnione są także, konieczne do realizacji rów-noległej, etapy podziału obszaru obliczeniowego (siatki MES) i równoważenia obciążenia procesorów. Wymienione wyżej główne etapy opisane są w rozbi-ciu na drobniejsze fazy, umieszczone w porządku chronologicznym wykonania.

Etapy i ich poszczególne fazy mogą być składane w bardziej złożone strategie rozwiązywania w przypadku problemów niestacjonarnych, nieliniowych, sprzę-żonych lub rozbudowanych strategii adaptacji.

Organizacja wszystkich faz obliczeń równoległych podlega temu samemu schematowi. Obliczenia dzieli się na dwie kategorie: obliczenia lokalne, wy-konywane z użyciem wyłącznie danych lokalnych, oraz obliczenia globalne, w których biorą udział dane związane z całym obszarem obliczeniowym. Mo-duł dekompozycji zarządza przebiegiem obliczeń w taki sposób, aby moMo-duły sekwencyjne realizowały obliczenia tak jak w programach sekwencyjnych, na przydzielonych sobie danych lokalnych. Koordynacją tych obliczeń w całości zajmuje się moduł dekompozycji. Jeżeli w obliczeniach pojawia się konieczność wykonania operacji globalnej, moduł sekwencyjny wykonuje fragment obliczeń związany z danymi odpowiadającymi obiektom wewnętrznym lub lokalnym i przekazuje sterowanie do modułu dekompozycji. Cała przedstawiona stra-tegia realizacji obliczeń opiera się na takim doborze algorytmów i ich imple-mentacji, aby procedury modułów sekwencyjnych realizując swe obliczenia nie

natrafiały nigdy na odwołania do obiektów zewnętrznych.

Podział obszaru obliczeniowego

Odpowiednia procedura modułu dekompozycji, wykorzystując zewnętrzny pro-gram dzielenia siatki, tworzy strukturę danych, w ramach której lokalnie prze-chowywane fragmenty struktur danych siatki i pól aproksymacji tworzą jedną globalną strukturę danych MES. Zgodnie z dokonanym podziałem na niena-kładające się podobszary, każdemu obiektowi siatki i każdej strukturze stopni swobody przyporządkowany jest jednoznacznie procesor. W przypadku uży-cia identyfikatorów MPID, każdy z obiektów siatki i każda ze struktur stopni swobody otrzymuje swój jednoznaczny, globalny identyfikator.

Tworzenie nakładki

Tworzenie nakładki najczęściej w całości realizowane jest przez procedury mo-dułu dekompozycji. Po ustaleniu rozmiaru strefy nakładania się podobszarów, odpowiednie fragmenty struktury danych przydzielane są poszczególnym pod-obszarom i przeprowadzana jest klasyfikacja obiektów siatki i struktur stopni swobody na wewnętrzne i nakładki. W przypadku korzystania z globalnych identyfikatorów MPID, struktura danych zapewnia tylko znajomość numeru procesora jednoznacznie przyporządkowanego obiektom siatki i strukturom stopni swobody. Konieczna dla wielu obliczeń informacja o lokalnie przecho-wywanych przez inne procesory kopiach danych (dotyczących nieprzyporząd-kowanych im obiektów siatki i struktur stopni swobody) musi być uzyskiwana poprzez rundę komunikacji międzyprocesorowej.

Moduł dekompozycji ustala rozmiar nakładki zgodnie z przyjętą strategią zrównoleglenia obliczeń. Może to być, korzystny w przypadku obliczeń z po-wolną komunikacją międzyprocesorową, rozmiar gwarantujący lokalne wyko-nywanie, istotnych z punktu widzenia wydajności, procedur całkowania nume-rycznego, mnożenia macierzy układu równań liniowych przez globalne wektory oraz wygładzania błędu. Taki rozmiar jest przyjęty jako podstawa dalszego opisu realizacji obliczeń.

Całkowanie numeryczne

W przyjętym modelu obliczeń całkowanie numeryczne nie poprzedza, ale jest fragmentem procesu rozwiązywania układu równań liniowych. Przy realizacji równoległej moduł dekompozycji pośredniczy w interakcjach między solwerem równań liniowych i resztą kodu MES. W trakcie tworzenia lokalnej, dla danego

podobszaru, struktury danych poziomów siatki moduł dekompozycji określa, dla których struktur stopni swobody tworzone będą pasma macierzy układu i po obszarach których obiektów siatki dokonywane będzie całkowanie. Następ-nie w trakcie tworzenia macierzy układu wywoływane są procedury modułów sekwencyjnych (modułu zależnego od problemu i modułu aproksymacji) do-starczające macierze elementowe. Procedury te działają identycznie jak w programach sekwencyjnych, dzięki lokalnej dostępności wszystkich potrzeb-nych dapotrzeb-nych.

Rozwiązanie układu równań liniowych

Globalne operacje na wektorach są realizowane przez odpowiednie procedury modułu dekompozycji, wykorzystujące standardowe procedury bibliotek prze-syłania komunikatów, dostosowane do operacji wektorowych.

Mnożenie macierzy układu równań liniowych przez wektory globalne i roz-wiązywanie problemów lokalnych w algorytmach wygładzania błędu realizo-wane jest lokalnie, dzięki odpowiedniemu rozmiarowi nakładki. Konieczna jest jednak, po obu tych operacjach, wymiana wartości, które nie zostały zmodyfi-kowane, między odpowiednimi procesorami.

Realizacja wymiany wartości w globalnych wektorach może być efektywnie dokonywana w module dekompozycji przy użyciu odpowiednich tablic prze-słań. Tablice tworzy sie odrębnie dla każdego poziomu siatki uczestniczącego w obliczeniach. Dla każdego podobszaru tworzy się zestawy tablic odpowiada-jące sąsiadującym podobszarom. W pojedynczym zestawie znajdują się cztery (w uproszczonych przypadkach dwie) tablice przesłań. Każda z nich odpo-wiada jednej z grup stopni swobody opisanych w p.3.4.3, na s. 145, i zawiera identyfikatory podwektorów elementarnych należących do danej grupy.

Procedury rzutowania wektorów globalnych pomiędzy poziomami siatki są w pełni lokalne. Moduł dekompozycji wywołuje je w identyczny sposób jak przy realizacji sekwencyjnej, musi tylko zagwarantować aktualność danych uży-wanych w projekcji. Podobnie jak w innych fazach obliczeń można to uzyskać albo przez odpowiednią wymianę danych między procesorami, albo przez lo-kalne wykonanie uaktualniających operacji.

Adaptacja

Operacje modyfikacji siatki przeprowadzane są przez procedury sekwencyjnego modułu siatki. Jedyną zmianą wymaganą przy realizacji równoległej jest zwró-cenie do modułu dekompozycji listy wszystkich obiektów uczestniczących w

po-działach i złączeniach, razem z listami identyfikatorów obiektów utworzonych w trakcie podziału. Listy te pozwalają modułowi dekompozycji na przepro-wadzenie rundy komunikacji, której celem jest uaktualnienie identyfikatorów MPID dla wszystkich obiektów zawartych w lokalnych strukturach danych.

Dodatkowe komplikacje pojawiają się w przypadku podziałów obiektów bezpośrednio na brzegach rozszerzonych podobszarów dekompozycji (por.

p. 3.4.4). Na skutek lokalnych podziałów obiekty na takim brzegu mogą być różne dla zawierających je podobszarów. Moduł dekompozycji musi być wy-posażony w mechanizmy utrzymywania spójności struktury danych w takich przypadkach.

Równoważenie obciążenia i transfer obiektów siatki

Pierwsze z tych zadań ponownie, tak jak pierwotny podział siatki, wykony-wane jest przez moduł lub program, o którym zakłada się, że jest zewnętrzny w stosunku do rdzenia obliczeniowego MES. Na podstawie nowego podziału siatki moduł dekompozycji określa zakres koniecznych transferów pomiędzy podobszarami.

Transfer określany jest przez zbiór obiektów siatki (i związanych z nimi struktur stopni swobody), dla których ma nastąpić zmiana podobszaru, wzglę-dem którego pozostają jako wewnętrzne. Dla uproszczenia dalszy opis prze-prowadzony jest na przykładzie elementów. Transfer innych obiektów siatki i struktur stopni swobody dokonywany jest w analogiczny sposób.

Elementy, które mają zostać przydzielone innemu procesorowi tworzą zbiór zwany dalej łatą elementów. Ze względu na istnienie nakładki w podziale na podobszary, wzbogaca się pierwotną łatę elementów o warstwy elementów tworzące odpowiednią nakładkę łaty. Pierwotne elementy łaty stają się jej elementami wewnętrznymi.

Zgodnie z usytuowaniem elementów względem podobszaru wysyłającego i podobszaru przyjmującego dokonuje się dalszej klasyfikacji elementów. Dzia-łania podjęte w stosunku do konkretnych elementów zależą od ich ostatecznej klasyfikacji. Tablica 4.1 przedstawia kompletną klasyfikację elementów (odnosi się ona także do pozostałych obiektów siatki i struktur stopni swobody) łącz-nie z wyszczególłącz-niełącz-niem operacji wykonywanych dla każdej z grup w trakcie transferu danych. „Powiadomienie” oznacza przesłanie komunikatu do proce-sora, względem którego obiekty siatki są wewnętrzne, o konieczności dokonania transferu.

Pełny transfer obiektów obejmuje wymazanie ich ze struktury danych nadawcy, wpisanie do struktury danych odbiorcy (wraz ze wszystkimi,

zre-Tablica 4.1. Klasyfikacja obiektów siatki przeprowadzana w celu dokonania trans-feru danych między procesorami

Położenie względem: Podejmowane

łaty nadawcy odbiorcy działania

wewnętrzne wewnętrzne zewnętrzne transfer danych i zmiana MPID wewnętrzne wewnętrzne w nakładce zmiana MPID

w nakładce wewnętrzne zewnętrzne transfer bez zmiany MPID w nakładce wewnętrzne w nakładce brak

w nakładce w nakładce wewnętrzne brak w nakładce w nakładce zewnętrzne powiadomienie w nakładce w nakładce w nakładce powiadomienie

konstruowanymi spójnie i poprawnie, zależnościami rodzinnymi i sąsiedzkimi) oraz ustalenie prawidłowych identyfikatorów MPID. Dla niektórych z obiektów, zgodnie z tabl. 4.1, przeprowadza się tylko niektóre operacje. Jeśli przekazy-wany obiekt nie ulega wymazaniu po stronie nadawcy, konieczne jest przesła-nie zwrotne jego nowego identyfikatora MPID. Podobprzesła-nie jak przy równoległej adaptacji siatki, w przypadku obiektów na granicach między podobszarami i siatek nieregularnych pojawiają się dodatkowe kłopoty natury technicznej, które muszą zostać rozwiązane przez procedury modułu dekompozycji w celu zapewnienia poprawności i spójności globalnej struktury danych [21, 131].

4.4 Przykłady obliczeń