Przekazywanie wiadomości w klastrach komputerowych - Message passing in computer clusters

Technicy pracujący w klastrze składającym się z wielu komputerów współpracujących ze sobą, wysyłając wiadomości przez sieć

Przekazywanie wiadomości jest nieodłącznym elementem wszystkich klastrów komputerowych . Wszystkie klastry komputerowe, od domowych Beowulfów po jedne z najszybszych superkomputerów na świecie, polegają na przekazywaniu wiadomości w celu koordynowania działań wielu węzłów, które obejmują. Przekazywanie wiadomości w klastrach komputerowych zbudowanych z podstawowych serwerów i przełączników jest wykorzystywane przez praktycznie każdą usługę internetową.

Ostatnio rozpowszechnia się wykorzystanie klastrów komputerowych z ponad tysiącem węzłów. Wraz ze wzrostem liczby węzłów w klastrze, szybki wzrost złożoności podsystemu komunikacyjnego sprawia, że ​​opóźnienia przesyłania wiadomości przez połączenie wzajemne stanowią poważny problem z wydajnością wykonywania programów równoległych .

Do symulacji, wizualizacji i zrozumienia działania przekazu wiadomości w klastrach komputerów można użyć określonych narzędzi. Przed złożeniem dużego klastra komputerowego symulator oparty na śledzeniu może użyć niewielkiej liczby węzłów, aby pomóc przewidzieć wydajność przekazywania wiadomości w większych konfiguracjach. Po przeprowadzeniu testów na niewielkiej liczbie węzłów symulator odczytuje pliki dziennika wykonywania i przesyłania komunikatów oraz symuluje wydajność podsystemu przesyłania komunikatów, gdy o wiele więcej komunikatów jest wymienianych między znacznie większą liczbą węzłów.

Wiadomości i obliczenia

Podejścia do przekazywania wiadomości

Historycznie, dwoma typowymi podejściami do komunikacji między węzłami klastra były PVM, równoległa maszyna wirtualna i MPI, interfejs przekazywania komunikatów . Jednak obecnie MPI stał się de facto standardem przekazywania wiadomości przez klastry komputerów.

PVM poprzedza MPI i został opracowany w Oak Ridge National Laboratory około 1989 roku. Dostarcza zestaw bibliotek oprogramowania, które pozwalają węzłowi obliczeniowemu działać jako „równoległa maszyna wirtualna”. Zapewnia środowisko wykonawcze do przekazywania komunikatów, zarządzania zadaniami i zasobami oraz powiadamiania o błędach i musi być instalowane bezpośrednio na każdym węźle klastra. PVM może być używany przez programy użytkownika napisane w C , C ++ lub Fortran itp.

W przeciwieństwie do PVM, który ma konkretną implementację, MPI jest raczej specyfikacją niż określonym zestawem bibliotek. Specyfikacja pojawiła się na początku 1990 roku w wyniku dyskusji między 40 organizacjami, początkowo wspierane przez ARPA i National Science Foundation . Projekt MPI opierał się na różnych funkcjach dostępnych w ówczesnych komercyjnych systemach. Specyfikacje MPI dały następnie początek określonym implementacjom. Implementacje MPI zazwyczaj używają protokołu TCP / IP i połączeń przez gniazdo. MPI jest obecnie szeroko dostępnym modelem komunikacji, który umożliwia równoległe pisanie programów w językach takich jak C , Fortran, Python itp. Specyfikacja MPI została zaimplementowana w takich systemach jak MPICH i Open MPI .

Testowanie, ocena i optymalizacja

Klastry komputerów stosują szereg strategii radzenia sobie z rozkładem przetwarzania na wiele węzłów i wynikającym z tego narzutem komunikacyjnym. Niektóre klastry komputerowe, takie jak Tianhe-I, używają innych procesorów do przekazywania wiadomości niż te używane do wykonywania obliczeń. Tiahnhe-I wykorzystuje ponad dwa tysiące procesorów FeiTeng-1000 do usprawnienia działania swojego zastrzeżonego systemu przekazywania wiadomości, podczas gdy obliczenia są wykonywane przez procesory Xeon i Nvidia Tesla .

Jednym ze sposobów zmniejszenia obciążenia komunikacyjnego jest wykorzystanie lokalnych dzielnic (zwanych także lokalizacjami ) do określonych zadań. Tutaj zadania obliczeniowe są przypisane do określonych „okolic” w klastrze, aby zwiększyć wydajność poprzez wykorzystanie procesorów, które są bliżej siebie. Biorąc jednak pod uwagę, że w wielu przypadkach faktyczna topologia węzłów klastra komputerów i ich wzajemnych połączeń może nie być znana twórcom aplikacji, próba dostrojenia wydajności na poziomie aplikacji jest dość trudna.

Biorąc pod uwagę fakt, że MPI stał się de facto standardem w klastrach komputerowych, wzrost liczby węzłów klastra zaowocował ciągłymi badaniami mającymi na celu poprawę wydajności i skalowalności bibliotek MPI. Wysiłki te obejmowały badania mające na celu zmniejszenie zużycia pamięci przez biblioteki MPI.

Od samego początku MPI zapewniało możliwości profilowania wydajności poprzez „system profilowania” PMPI. Zastosowanie prefiksu PMIPI- pozwala na obserwację punktów wejścia i wyjścia dla komunikatów. Jednak biorąc pod uwagę wysoki poziom charakteru tego profilu, tego typu informacje dają jedynie wgląd w rzeczywiste zachowanie systemu komunikacyjnego. Potrzeba większej ilości informacji zaowocowała opracowaniem systemu MPI-Peruse. Peruse zapewnia bardziej szczegółowy profil, umożliwiając aplikacjom dostęp do zmian stanu w bibliotece MPI. Osiąga się to poprzez rejestrację wywołań zwrotnych za pomocą Peruse, a następnie wywoływanie ich jako wyzwalaczy, gdy mają miejsce zdarzenia wiadomości. Peruse może współpracować z systemem wizualizacji PARAVER. PARAVER ma dwa komponenty, komponent śledzenia i komponent wizualny do analizy śladów, statystyk związanych z określonymi zdarzeniami itp. PARAVER może używać formatów śledzenia z innych systemów lub wykonywać własne śledzenie. Działa na poziomie zadań, wątków oraz w formacie hybrydowym. Ślady często zawierają tak dużo informacji, że często są przytłaczające. W ten sposób PARAVER podsumowuje je, aby umożliwić użytkownikom ich wizualizację i analizę.

Analiza wydajności

Kiedy opracowywany jest system równoległy na dużą skalę, często na poziomie superkomputera , niezbędna jest możliwość eksperymentowania z wieloma konfiguracjami i symulowania wydajności. W tym scenariuszu istnieje wiele podejść do modelowania wydajności przekazywania wiadomości, od modeli analitycznych po symulację opartą na śledzeniu, a niektóre podejścia opierają się na wykorzystaniu środowisk testowych opartych na „sztucznej komunikacji” w celu wykonania syntetycznych testów wydajności przekazywania wiadomości. Systemy takie jak BIGSIM zapewniają te udogodnienia, umożliwiając symulację wydajności w różnych topologiach węzłów , przekazywaniu wiadomości i strategiach planowania.

Podejścia analityczne

Na poziomie analitycznym konieczne jest modelowanie czasu komunikacji T w ujęciu zestawu podskładników, takich jak opóźnienie uruchamiania , asymptotyczna przepustowość i liczba procesorów. Dobrze znanym modelem jest model Hockneya, który po prostu opiera się na komunikacji punkt-punkt , przy użyciu T = L + (M / R), gdzie M to rozmiar wiadomości, L to opóźnienie uruchamiania, a R to asymptotyczna przepustowość w MB / s.

Xu i Hwang uogólnili model Hockneya, aby uwzględnić liczbę procesorów, tak że zarówno opóźnienie, jak i asymptotyczna szerokość pasma są funkcjami liczby procesorów. Gunawan i Cai następnie uogólnili to dalej, wprowadzając rozmiar pamięci podręcznej i rozdzielili wiadomości na podstawie ich rozmiarów, uzyskując dwa oddzielne modele, jeden dla wiadomości poniżej rozmiaru pamięci podręcznej, a drugi dla tych powyżej.

Symulacja wydajności

IBM Roadrunner klaster superkomputer

Do symulacji i zrozumienia wydajności przekazywania wiadomości przez klastry komputerów można użyć określonych narzędzi. Na przykład CLUSTERSIM wykorzystuje środowisko wizualne oparte na języku Java do symulacji zdarzeń dyskretnych . W tym podejściu obliczone węzły i topologia sieci są modelowane wizualnie. Zadania, ich czas trwania i złożoność są przedstawiane z określonymi rozkładami prawdopodobieństwa, co pozwala na proponowanie i eksperymentowanie z różnymi równoległymi algorytmami planowania zadań . W ten sposób można symulować obciążenie komunikacyjne związane z przekazywaniem komunikatów MPI i lepiej je zrozumieć w kontekście równoległego wykonywania zadań na dużą skalę.

Inne narzędzia symulacyjne to MPI-sim i BIGSIM. MPI-Sim to symulator sterowany wykonaniem, który do działania wymaga programów w języku C lub C ++. Z drugiej strony ClusterSim wykorzystuje hybrydowy system modelowania wyższego poziomu niezależny od języka programowania używanego do wykonywania programu.

W przeciwieństwie do MPI-Sim, BIGSIM jest systemem opartym na śledzeniu, który symuluje na podstawie dzienników wykonań zapisanych w plikach przez oddzielny program emulatora. BIGSIM zawiera emulator i symulator. Emulator wykonuje aplikacje na niewielkiej liczbie węzłów i przechowuje wyniki, dzięki czemu symulator może z nich korzystać i symulować działania na znacznie większej liczbie węzłów. Emulator przechowuje informacje o sekwencyjnych blokach wykonawczych (SEB) dla wielu procesorów w plikach dziennika, przy czym każdy SEB rejestruje wysłane komunikaty, ich źródła i miejsca docelowe, zależności, czasy itp. Symulator odczytuje pliki dziennika i symuluje je, a także może wyświetlać gwiazdkę dodatkowe wiadomości, które są następnie przechowywane jako SEB. Symulator może zatem zapewnić widok wydajności bardzo dużych aplikacji w oparciu o ślady wykonywania dostarczane przez emulator na znacznie mniejszej liczbie węzłów, zanim cała maszyna będzie dostępna lub skonfigurowana.

Zobacz też

Bibliografia