• Nie Znaleziono Wyników

Nieciągła aproksymacja równania Laplace’a

3.6 Przykłady obliczeń

3.6.2 Nieciągła aproksymacja równania Laplace’a

Drugim przykładem obliczeniowym jest równoległa realizacja obliczeń dla oma-wianego już wcześniej (patrz pp. 2.6.6 i 2.7.11) zastosowania nieciągłej aproksy-macji Galerkina wraz z solwerem GMRES wykorzystującym jedno- i wielopo-ziomową poprawę uwarunkowania macierzy układu do rozwiązania modelowego problemu dyfuzji w sześcianie jednostkowym.

W tym przypadku maszyną równoległą była sieć Linuxowych komputerów osobistych z procesorem Pentium 4, 1.6 GHz i pamięcią 1 GBajt każdy, połą-czonych w technologii szybkiego Ethernetu 100 Mbit/s.

Tablice 3.2 i 3.3 prezentują wyniki dla dwóch wersji poprawy uwarunkowa-nia macierzy, jednosiatkowej i trzysiatkowej, oraz różnych rozmiarów zadauwarunkowa-nia, odpowiadających kolejnym siatkom uzyskanym przez jednorodne zagęszczanie.

Metodą poprawy uwarunkowania jest w każdym przypadku równoległa uogól-niona metoda Gaussa-Seidla ze zmodyfikowanymi łatami elementów (patrz p. 2.7.9). N , jak zwykle, oznacza całkowitą liczbę stopni swobody będącą miarą wielkości problemu, a Npliczbę użytych komputerów (procesorów). Dla każdej kombinacji metody poprawy uwarunkowania i rozmiaru zadania

odno-Tablica 3.3. Charakterystyki wykonania równoległego 10 iteracji metody GMRES z trzysiatkową poprawą uwarunkowania macierzy, przy rozwiązywa-niu zagadnienia Laplace’a za pomocą nieciągłej aproksymacji Galer-kina na sieci komputerów osobistych

N Np Redukcja Szybkość Czas Przyspie- Efekty-błędu ·103 zbieżności obliczeń szenie wność

391 168 1 0.018 0.335 26.18 1.00 100%

2 0.017 0.334 14.18 1.85 92%

4 0.018 0.335 9.08 2.88 72%

8 0.024 0.346 7.60 3.44 43%

3 129 344 2 0.027 0.350 111.16 1.00 100%

4 0.027 0.350 57.76 1.92 96%

8 0.027 0.348 33.15 3.35 84%

towane są wyniki obliczeń dla 1, 2, 4 i 8 komputerów w sieci. Dla największego zadania nie uzyskano wyników przy użyciu jednego komputera, gdyż zadanie nie mieściło się w pamięci operacyjnej.

Aby otrzymać wyniki odzwierciedlające czysto obliczeniową efektywność zrównoleglenia, rezultaty w tabl. 3.2 i 3.3 odpowiadają zawsze 10 iteracjom metody GMRES. Dodatkową ilustracją zbieżności są zamieszczone w tablicach:

szybkość zbieżności GMRES (obliczona wg wzoru (2.93)) i wielkość względnej redukcji residuum układu równań po 10 iteracjach (podzielona przez 10−3).

Ze względu na równoważność zastosowanej poprawy uwarunkowania kombi-nacji metod Schwarza szybkość zbieżności metody GMRES z jednosiatkową poprawą uwarunkowania maleje wraz ze wzrostem liczby procesorów. W przy-padku metod wielosiatkowych, dzięki zastosowaniu szerokiej strefy nakładania się podobszarów, określonej dla wszystkich poziomów przez wymagania lokal-ności obliczeń na siatce najrzadszej, udaje się uzyskać praktycznie stałą szyb-kość zbieżności. Okupione jest to zmniejszeniem efektywności zrównoleglenia obliczeń dla wzrastającej liczby procesorów.

Wyniki w tablicach dobrze ilustrują skalowalność różnych wersji algorytmu.

Dla jednosiatkowej poprawy uwarunkowania skalowane przyspieszenie obliczeń jest zbliżone do liniowego. Czas rozwiązania zadania o 48 896 stopniach swo-body na pojedynczym procesorze praktycznie nie odbiega od czasu rozwiązania zadania ośmiokrotnie większego na ośmiu procesorach. Podobnie ma się czas rozwiązania zadania o 391 168 stopniach swobody na jednym procesorze do

czasu rozwiązania zadania o 3 129 344 stopniach swobody (osiem razy więcej niż poprzednio) na ośmiu procesorach. Gorzej prezentuje się skalowalność wer-sji trzysiatkowej, ale i tutaj czasy wykonania dla ostatniej wymienianej pary problemów są zbliżone.

Modularna architektura

rdzenia obliczeniowego MES i realizacja obliczeń

równoległych

Analizy przeprowadzone w poprzednich rozdziałach wskazują na złożony cha-rakter współczesnych wyrafinowanych aproksymacji metodą elementów skoń-czonych. Umieszczenie w pojedynczym programie aproksymacji wyższego stopnia, adaptacji hp i solwerów liniowych z wielopoziomową poprawą uwa-runkowania macierzy stanowi wyzwanie dla strategii implementacji. Złożony charakter algorytmów skłania do badań nad architekturą kodu. Celem jest osiągnięcie programu, który pomimo złożoności, byłby łatwo modyfikowalny, rozszerzalny o nowe metody i techniki, wreszcie łatwy w pielęgnacji. Kla-sycznym rozwiązaniem tego problemu jest modularna struktura kodu, z wyod-rębnieniem modułów (komponentów) stanowiących możliwie niezależne części [133]. Dodatkowym wymaganiem, związanym z przeznaczeniem programu do obliczeń wielkiej skali, jest utrzymanie wysokiej wydajności obliczeń, wyma-ganie często sprzeczne z założeniem modularności. Przeznaczenie do obliczeń wielkiej skali oznacza jednocześnie, że program musi być przystosowany do realizacji równoległej.

Podstawą rozważań niniejszego rozdziału jest próba stworzenia modular-nej architektury systemów MES, dla której ostateczne programy składane są z odpowiednich komponentów w taki sposób, że niezależnie można otrzymywać wersje sekwencyjne i równoległe. Wersje równoległe wykorzystują pewne

pod-165

stawowe moduły, które w niezmienionej postaci mogą także tworzyć programy sekwencyjne, i dodają do tego dodatkowe moduły, które w pełni kontrolują przebieg realizacji równoległej.

Podstawowym przedmiotem analiz niniejszego rozdziału jest implementacja rdzenia obliczeniowego MES. Rdzeniem obliczeniowym nazywane są te algo-rytmy, które występują we wszystkich typowych obliczeniach MES i decydują o charakterze aproksymacji i jej numerycznej efektywności. Są to algorytmy modyfikacji siatki MES, całkowania numerycznego wyrazów ze sformułowania słabego, tworzenia odpowiadającego sformułowaniu słabemu układu równań liniowych i rozwiązania tego układu. Jeśli rozwiązanie układu równań linio-wych realizowane jest przez zewnętrzny solwer, to składnikiem rdzenia ob-liczeniowego MES pozostaje interfejs z solwerem, realizujący ważne funkcje organizacji procesu obliczeniowego [54].

Poza rdzeniem pozostają zależne od problemu procedury realizujące dys-kretyzację czasową, rozwiązywanie równań nieliniowych czy specjalne sprzęże-nia problemów MES. Jako zewnętrzne w stosunku do rdzesprzęże-nia traktowane są także moduły lub oddzielne programy wspomagające obliczenia MES, odpowie-dzialne m.in. za preprocessing (modelowanie geometryczne, generację siatki), postprocessing (wizualizację), dekompozycję obszaru obliczeniowego na podob-szary, czy, ważne w rozbudowanych środowiskach rozwiązywania problemów, zadania monitorowania i sterowania.

Niniejszy rozdział przedstawia ogólną koncepcję modularnej architektury programów MES oraz podstawy pewnej szczególnej jej implementacji. Do kon-struowania tej szczególnej implementacji wykorzystane są rozważania i ana-lizy poprzednich rozdziałów pracy. Detale implementacji, mające charakter techniczny i mniej interesujące z naukowego punktu widzenia, są pominięte w rozważaniach. Rozdział zawiera ponadto opis typowego przebiegu obliczeń równoległych w ramach prezentowanej implementacji. Implementacja ta wyko-rzystywana jest we wszystkich przykładach obliczeniowych zaprezentowanych w pracy.

4.1 Modularna architektura rdzenia obliczeniowego MES

Architektura programów MES proponowana w niniejszej pracy składa się z szeregu modułów, które można ułożyć w odpowiednie warstwy implementacji.

Rysunki 4.1 i 4.2 przedstawiają w postaci diagramów UML [153] proponowaną architekturę w przypadkach, odpowiednio, kodu sekwencyjnego i kodu

równo-ległego. Linie ciągłe łączą istotne dla omawianej architektury interfejsy, repre-zentowane przez okręgi, z implementującymi je modułami. Linie przerywane zakończone strzałkami oznaczają wywołania procedur wyspecyfikowanych w interfejsach lub zawartych w zewnętrznych bibliotekach i programach.

Na szczycie warstw implementacji znajduje się warstwa zależna od pro-blemu. W tworzącym ją module zgromadzone są te procedury, które progra-mista ostatecznej wersji kodu, przystosowanej do rozwiązywania konkretnej klasy problemów, musi najczęściej napisać sam. Celem niniejszej, jak i wielu innych (por. np. [128]), propozycji architektury kodów MES jest zminimalizo-wanie tej warstwy i dostarczenie całej pozostałej infrastruktury obliczeniowej, w tym infrastruktury do obliczeń równoległych, w postaci procedur gotowych do wykorzystania bez żadnych modyfikacji.

Ta pozostała infrastruktura obliczeniowa składa się z procedur specyficz-nych dla MES, tworzących jej rdzeń obliczeniowy, oraz zewnętrzspecyficz-nych pro-gramów i bibliotek, których procedury realizują zadania wspomagające. Ze-wnętrzne programy i biblioteki stanowią najniższą warstwę w omawianej ar-chitekturze. Typowymi przykładami są tutaj biblioteki algebry liniowej, a dla wersji równoległych biblioteki przesyłania komunikatów czy programy dzielenia siatki MES.

Interakcje procedur rdzenia i procedur zewnętrznych mogą mieć mniej lub bardziej złożony charakter. W przypadku prostych, jednokierunkowych inte-rakcji w procedurach rdzenia umieszcza się wywołania funkcji realizowanych przez procedury zewnętrzne. Najczęściej nazwy tych funkcji są specyficzne dla implementacji procedur rdzenia i wymagają pośredniej warstwy interfejsu dla konkretnych implementacji procedur zewnętrznych. Taka warstwa pośrednia – adapter modułu zewnętrznego – pozwala uniezależnić rdzeń obliczeniowy MES od konkretnych realizacji funkcji zewnętrznych.

Bardziej złożony charakter mają interakcje rdzenia obliczeniowego MES z programami zewnętrznymi, np. w przypadku użycia wielosiatkowych solwerów równań liniowych. Zależnie od realizacji solwera, konieczne może stać się wtedy zastosowanie wywołań zwrotnych procedur rdzenia przez procedury solwera.

Wywołania te może realizować warstwa adaptera solwera [22], tak jak jest to przedstawione na rys. 4.1 i 4.2.

Środkowe warstwy w proponowanej architekturze kodów MES są tworzone przez procedury rdzenia obliczeniowego. Nowością tej architektury w porów-naniu z innymi koncepcjami jest rozbicie rdzenia obliczeniowego na dwie nie-zależne warstwy – sekwencyjną i równoległą. Warstwę sekwencyjną tworzą moduły, które bez zmian umieszczane mogą być w kodach równoległych i

se-Warstwa sekwencyjnego

Rys. 4.1. Proponowana architektura dla sekwencyjnych kodów MES

Warstwa sekwencyjnego

Rys. 4.2. Proponowana architektura dla równoległych kodów MES

kwencyjnych, a w trakcie wykonania nie mają świadomości czy pracują w ko-dzie sekwencyjnym, czy równoległym. Warstwę równoległą tworzą moduły w pełni odpowiedzialne za efektywną realizację obliczeń w środowiskach równo-ległych.

Drugą nowością proponowanej architektury jest rozbicie warstwy sekwen-cyjnej na odrębne moduły, takie jak: moduł operacji na siatkach, moduł apro-ksymacji i moduł interfejsu z solwerem liniowym. Taka modularyzacja oznacza alternatywę w stosunku do modelu implementacji MES, w którym podstawo-wym pojęciem jest element, łączący cechy topologiczne, geometryczne i aprok-symacyjne (por. np. model architektury MES w ujęciu obiektowym w [103]).

Dla omawianej w niniejszej pracy metodologii zrównoleglenia obliczeń MES prezentowana architektura kodu przewiduje, jako podstawowy moduł organi-zujący przebieg obliczeń równoległych, moduł zarządzania dekompozycją ob-szaru.

W następnych punktach scharakteryzowane są pokrótce podstawowe mo-duły rdzenia obliczeniowego MES. Prezentacja ma charakter abstrakcyjny, koncentrując się na interfejsach modułów1. Jest założeniem proponowanej ar-chitektury, że poszczególne moduły zdefiniowane są wyłącznie poprzez ich in-terfejsy, co gwarantuje ogólność definicji i pozostawia swobodę realizacji przy użyciu różnych technik i języków programowania. Uwagi dotyczące implemen-tacji modułów zawarte są w p. 4.2.