Przetwarzanie rozproszone a równoległe


60

Często słyszę ludzi mówiących o obliczeniach równoległych i obliczeniach rozproszonych , ale mam wrażenie, że nie ma wyraźnej granicy między tymi dwoma, a ludzie dość łatwo mylą to, podczas gdy uważam, że jest zupełnie inaczej:

  • Obliczenia równoległe są ściślej powiązane z wielowątkowością lub tym, jak w pełni wykorzystać pojedynczy procesor.
  • Przetwarzanie rozproszone odnosi się do pojęcia dzielenia i podbijania, wykonywania zadań podrzędnych na różnych komputerach, a następnie łączenia wyników.

Jednak odkąd wkroczyliśmy w erę Big Data , wydaje się, że rozróżnienie rzeczywiście topnieje, a większość dzisiejszych systemów używa kombinacji przetwarzania równoległego i rozproszonego.

Przykładem, którego używam w mojej codziennej pracy, jest Hadoop z paradygmatem Map / Reduce, jasno rozproszony system z pracownikami wykonującymi zadania na różnych komputerach, ale także w pełni wykorzystujący każdą maszynę z pewnymi równoległymi obliczeniami.

Chciałbym uzyskać poradę, aby zrozumieć, jak dokładnie dokonać rozróżnienia w dzisiejszym świecie, a jeśli nadal możemy mówić o obliczeniach równoległych lub nie ma już wyraźnego rozróżnienia. Wydaje mi się, że przetwarzanie rozproszone znacznie wzrosło w ciągu ostatnich lat, podczas gdy przetwarzanie równoległe wydaje się stagnować, co prawdopodobnie może wyjaśniać, dlaczego słyszę o wiele więcej mówiących o dystrybucji obliczeń niż równoległych.


5
Obliczenia równoległe niekoniecznie oznaczają pojedynczy procesor: istnieją systemy, które mają wiele fizycznych procesorów.
svick

2
Ponadto przetwarzanie rozproszone nie ogranicza się do dzielenia i podbijania per se. Mam więcej problemów z ludźmi mylącymi współbieżność i równoległość.
Raphael

1
Jeśli wyraźnie zajmujesz się przetwarzaniem rozproszonym, będziesz musiał zająć się znacznie głębszymi przypadkami awarii. Wiele rzeczy jest dystrybuowanych tylko ze względów geograficznych. Niektóre systemy rozproszone działają bardzo niewiele równolegle, ponieważ centralny węzeł w sieci stanowi wąskie gardło.
Rob

Odpowiedzi:


56

Jest to częściowo kwestia terminologii i jako taka wymaga jedynie od ciebie i osoby, z którą rozmawiasz, uprzedniego wyjaśnienia. Istnieją jednak różne tematy, które są silniej związane z równoległością , współbieżnością lub systemami rozproszonymi .

Równoległość na ogół dotyczy wykonywania określonego obliczenia tak szybko, jak to możliwe, z wykorzystaniem wielu procesorów. Skala procesorów może wahać się od wielu jednostek arytmetycznych wewnątrz jednego procesora, przez wiele procesorów współużytkujących pamięć, po dystrybucję obliczeń na wielu komputerach. Po stronie modeli obliczeniowych równoległość polega zasadniczo na wewnętrznym zastosowaniu wielu jednoczesnych wątków obliczeń w celu obliczenia końcowego wyniku. Równoległość jest również czasami stosowana w systemach reaktywnych w czasie rzeczywistym , które zawierają wiele procesorów współużytkujących jeden zegar główny; takie systemy są w pełni deterministyczne .

Współbieżność to nauka obliczeń z wieloma wątkami obliczeń. Współbieżność zwykle pochodzi z architektury oprogramowania, a nie architektury sprzętu. Oprogramowanie można napisać tak, aby używało współbieżności w celu wykorzystania równoległości sprzętowej, ale często potrzeba jest nieodłącznie związana z zachowaniem oprogramowania, aby reagować na różne zdarzenia asynchroniczne (np. Wątek obliczeniowy działający niezależnie od wątku interfejsu użytkownika lub program, który reaguje do przerwań sprzętowych poprzez przejście do wątku obsługi przerwań).

Komputery rozproszone badają oddzielne procesory połączone łączami komunikacyjnymi. Podczas gdy modele przetwarzania równoległego często (ale nie zawsze) zakładają pamięć współdzieloną, systemy rozproszone polegają zasadniczo na przekazywaniu wiadomości. Systemy rozproszone są z natury współbieżne. Podobnie jak współbieżność, dystrybucja jest często częścią celu, a nie tylko częścią rozwiązania: jeśli zasoby znajdują się w różnych geograficznie lokalizacjach, system jest z natury rozproszony. Systemy, w których możliwe są częściowe awarie (węzłów procesora lub łączy komunikacyjnych), należą do tej domeny.


2
Dobra odpowiedź. Należy podkreślić, że przetwarzanie rozproszone jest podzbiorem przetwarzania równoległego.
Raphael

6
@Raphael: Nie sądzę, aby dokładnie odzwierciedlało to skupienie dwóch pól. Rzeczywiście są one często uważane za całkowicie oddzielne pola, ponieważ dotyczą zupełnie innych zagadnień. Programując komputer równoległy za pomocą MPI, tak naprawdę nie przejmujemy się częściowymi awariami, ponieważ są one mniej prawdopodobne w takich komputerach. Z drugiej strony, obliczenia rozproszone bardziej zajmują się kwestiami dystrybucji, takimi jak częściowe awarie, a znacznie mniejszym - wyciskaniem każdego cyklu procesora z dostępnych maszyn.
Dave Clarke

4
@Raphael Wręcz przeciwnie, przetwarzanie rozproszone jest bardzo niezależne od przetwarzania równoległego. W badaniu systemów rozproszonych obliczenia równoległe są często nudnym przypadkiem (brak interesujących zasobów lokalnych, brak awarii).
Gilles

Użyłem tych słów dosłownie; szkoda, że ​​warunki zostały zawłaszczone i tym samym rozbieżne.
Raphael

Dziękuję za odpowiedź @Gilles. Wygląda na to, że byłem trochę stronniczy w zakresie przetwarzania rozproszonego, cieszę się, że ktoś, kto odnosi się do czegoś przez odpowiednie warunki!
Charles Menguy

17

Jak zauważył @Raphael, Distributed Computing jest podzbiorem Parallel Computing; z kolei Parallel Computing jest podzbiorem Compurrent Computing.

Współbieżność odnosi się do udostępnianiazasobów w tym samym czasie. Na przykład kilka procesów współdzieli ten sam procesor (lub rdzenie procesora) lub współużytkuje pamięć lub urządzenie we / wy. Systemy operacyjne zarządzają współużytkowanymi zasobami. Maszyny wieloprocesorowe i systemy rozproszone to architektury, w których kontrola współbieżności odgrywa ważną rolę. Współbieżność występuje zarówno na poziomie sprzętu, jak i oprogramowania. Wiele urządzeń działa jednocześnie, procesory mają wewnętrzną równoległość i działają na kilku instrukcjach jednocześnie, systemy mają wiele procesorów, a systemy współdziałają poprzez komunikację sieciową. Współbieżność występuje na poziomie aplikacji w przetwarzaniu sygnałów, w nakładaniu się We / Wy i przetwarzaniu, w komunikacji oraz w współdzieleniu zasobów między procesami lub między wątkami w tym samym procesie.

Dwa procesy (lub wątki) wykonujące się w tym samym systemie, dzięki czemu ich wykonywanie jest przeplatane w czasie, są współbieżne: procesy (wątki) współużytkują zasoby procesora. Podoba mi się następująca definicja: dwa procesy (wątki) wykonujące się w tym samym systemie są współbieżne wtedy i tylko wtedy, gdy drugi proces (wątek) rozpocznie wykonywanie, gdy pierwszy proces (wątek) jeszcze nie zakończył wykonywania.

Współbieżność staje się równoległością, gdy procesy (lub wątki) są wykonywane na różnych procesorach (lub rdzeniach tego samego procesora). Równoległość w tym przypadku nie jest „wirtualna”, ale „prawdziwa”.

Gdy te procesory należą do tej samej maszyny, nazywamy to obliczeniem „równoległym”; gdy procesory należą do różnych maszyn , mogą być rozproszone geograficznie, określamy to jako „rozproszone”.

Dlatego Distributed Computing jest podzbiorem Compallel Computing, który jest podzbiorem Compurrent Computing.

Oczywiście prawdą jest, że ogólnie przetwarzanie równoległe i rozproszone uważa się za różne. Obliczenia równoległe są powiązane ze ściśle powiązanymi aplikacjami i służą do osiągnięcia jednego z następujących celów:

  1. Szybsze rozwiązywanie problemów wymagających intensywnych obliczeń;
  2. Rozwiązuj większe problemy w tym samym czasie;
  3. Rozwiązuj problemy o tym samym rozmiarze z większą dokładnością w tym samym czasie.

W przeszłości pierwszym celem był główny powód przetwarzania równoległego: przyspieszenie rozwiązania problemu. W tej chwili, a gdy to możliwe, naukowcy wykorzystują obliczenia równoległe głównie do osiągnięcia drugiego celu (np. Są skłonni spędzić tyle samo czasu ile spędzili w przeszłości, rozwiązując równolegle problem wielkości aby rozwiązać problem teraz o rozmiarze ) lub trzecim (tzn. są skłonni spędzić tyle samo czasu co spędzili w przeszłości, rozwiązując równolegle problem wielkości aby teraz rozwiązać problem wielkościTx5xTxxale z większą dokładnością przy użyciu znacznie bardziej złożonego modelu, większej liczby równań, zmiennych i ograniczeń). Przetwarzanie równoległe może wykorzystywać pamięć współużytkowaną, przekazywanie wiadomości lub obie te funkcje (np. Wewnątrzwęzeł z pamięcią współużytkowaną za pomocą OpenMP, między-węzeł do przekazywania wiadomości za pomocą MPI); może również używać akceleratorów GPU. Ponieważ aplikacja działa na jednym równoległym superkomputerze, zwykle nie bierzemy pod uwagę takich problemów, jak awarie, partycja sieciowa itp., Ponieważ prawdopodobieństwo tych zdarzeń jest w praktyce bliskie zeru. Jednak duże równoległe aplikacje, takie jak symulacje zmian klimatu, które mogą działać przez kilka miesięcy, zwykle dotyczą awarii i używają mechanizmu kontrolnego / restartu, aby uniknąć ponownego uruchomienia symulacji od początku, jeśli pojawi się problem.

Przetwarzanie rozproszone jest powiązane z aplikacjami luźno sprzężonymi, w których celem (w przypadku rozproszonego superkomputera ) jest rozwiązywanie problemów, które byłyby zbyt duże lub których wykonanie można podzielić na różne komponenty, które mogłyby skorzystać z wykonania na różnych architekturach. Istnieje kilka modeli, w tym klient-serwer, peer-to-peer itp. Problemy związane z przetwarzaniem rozproszonym, takie jak bezpieczeństwo, awarie, partycja sieciowa itp. Muszą być wzięte pod uwagę w czasie projektowania, ponieważ w tym kontekście awarie są regułą i nie wyjątek.

Wreszcie, siatki i chmurze obliczeniowe są zarówno podzbiór rozproszonego. Paradygmat obliczeń gridowych pojawił się jako nowa dziedzina odróżniająca się od tradycyjnego przetwarzania rozproszonego ze względu na jego koncentrację na udostępnianiu zasobów na dużą skalę i innowacyjnych aplikacjach o wysokiej wydajności. Udostępniane zasoby zwykle należą do wielu różnych domen administracyjnych (tzw. Organizacje wirtualne ). Grid Computing, choć jest intensywnie wykorzystywany przez naukowców w ostatniej dekadzie, jest tradycyjnie trudny dla zwykłych użytkowników. Przetwarzanie w chmurze próbuje wypełnić lukę, umożliwiając zwykłym użytkownikom łatwe wykorzystywanie wielu maszyn, które znajdują się w tym samym centrum danych i nie są rozproszone geograficznie, za pomocą maszyn wirtualnychktóre mogą być montowane przez użytkowników w celu uruchomienia ich aplikacji. Ze względu na sprzęt, w szczególności zwykły brak wysokowydajnego połączenia sieciowego (takiego jak Infiniband itp.), Chmury nie są przeznaczone do uruchamiania równoległych aplikacji MPI. Aplikacje rozproszone działające w chmurach są zwykle implementowane w celu wykorzystania paradygmatu Mapa / Zmniejszenie. Nawiasem mówiąc, wiele osób myśli o Mapowaniu / zmniejszaniu jako o równoległym modelu przepływu danych.


2
Myślę, że ta odpowiedź jest nieco myląca; koncentruje się na rozproszonym przetwarzaniu o wysokiej wydajności (co jest rzeczywiście ściśle związane z równoległym przetwarzaniem o wysokiej wydajności), podczas gdy cała dziedzina przetwarzania rozproszonego jest znacznie szersza.
Jukka Suomela

Nie zgadzam się: odpowiedź obejmuje również rozproszone obliczenia o wysokiej wydajności, które zamiast tego są zwykle pomijane w obliczeniach rozproszonych. Rzeczywiście, omawiałem modele klient-serwer i peer-to-peer, bezpieczeństwo, awarie i problemy z partycjami sieciowymi, które są domeną przetwarzania rozproszonego.
Massimo Cafaro

+1. Niezła odpowiedź! Zastanawiam się, czy przetwarzanie rozproszone jest wykorzystywane do celów innych niż obliczenia równoległe? Innymi słowy, czy przetwarzanie rozproszone stanowi podzbiór przetwarzania równoległego, tj. Czy przetwarzanie rozproszone należy do przetwarzania równoległego? Btw, oto moje pytanie cs.stackexchange.com/questions/20064
Tim

1
@Tim, obliczenia rozproszone są również stosowane jako takie, niezależnie od obliczeń równoległych. Pomyśl na przykład o klasycznych algorytmach rozproszonych, takich jak wybór lidera, konsensus itp.
Massimo Cafaro

7

Nie jestem pewien, czy rozumiem pytanie. Nadal istnieje rozróżnienie między przetwarzaniem równoległym i rozproszonym. Fakt, że możesz korzystać z obu w tym samym obliczeniu, nie zmienia znaczenia tych pojęć.

I nie wiem, jakie wiadomości śledzisz, ale jestem pewien, że przetwarzanie równoległe nie stagnuje, zwłaszcza, że ​​uważam, że jest to przydatne znacznie częściej.

Jeśli potrzebujesz przetwarzać terabajty danych, najlepszym rozwiązaniem jest przetwarzanie rozproszone (być może połączone z obliczeniami równoległymi). Ale jeśli musisz obliczyć coś na komputerze stacjonarnym lub smartfonie, samo przetwarzanie równoległe prawdopodobnie zapewni najlepsze wyniki, biorąc pod uwagę, że połączenie internetowe może nie być zawsze dostępne, a kiedy jest, może być wolne.


-1, ponieważ ta odpowiedź tak naprawdę nie odpowiada na pytanie (tj. Objaśnia warunki).
Jukka Suomela

@JukkaSuomela, pytanie nie dotyczy wyjaśnienia warunków, ale ich rozróżnienia.
sick

6

Oto ostatni artykuł, który warto przeczytać:

Michel Raynal: Przetwarzanie równoległe vs. przetwarzanie rozproszone: wielkie zamieszanie?” , Proc. Euro-Par 2015 , doi: 10.1007 / 978-3-319-27308-2_4

Abstrakcyjny:

Ten krótki dokument przedstawiający stanowisko omawia fakt, że z dydaktycznego punktu widzenia paralelizm i przetwarzanie rozproszone są często mylone, a patrząc na ich głęboki charakter, odnoszą się do odrębnych fundamentalnych kwestii. Dlatego odpowiednie programy nauczania powinny być opracowane osobno dla każdego z nich. Postawa „wszystko jest we wszystkim (i na zasadzie wzajemności)” nie wydaje się być odpowiednim podejściem do uczenia studentów ważnych pojęć, które charakteryzują z jednej strony równoległość, a z drugiej strony przetwarzania rozproszonego.


4

W części wstępnej książki [1] autorzy przedstawiają inną perspektywę (inną niż te w innych odpowiedziach) na porównanie obliczeń rozproszonych i obliczeń równoległych.

Ogólnie mówiąc, celem przetwarzania równoległego jest zatrudnienie wszystkich procesorów do wykonania jednego dużego zadania. W przeciwieństwie do tego, każdy procesor w systemie rozproszonym ma na ogół swój częściowo niezależny program, ale z różnych powodów, w tym z dzielenia się zasobami, dostępności i odporności na uszkodzenia, procesory muszą koordynować swoje działania.

Z tej perspektywy paradygmat Map / Reduce mieści się głównie w kontekście obliczeń równoległych. Jeśli jednak chcemy, aby zaangażowane węzły osiągnęły konsensus w sprawie wspólnego lidera, stosując na przykład algorytm Paxos (wiki) , rozważamy typowy problem w obliczeniach rozproszonych.

[1] Przetwarzanie rozproszone. Podstawy, symulacje i zaawansowane tematy. Hagit Attiya i Jennifer Welch. 2004


0

Jest odpowiedzią który jest bardziej odpowiednie tutaj. Zasadniczo paralleldotyczy memory-shared multiprocessornatomiast distributeddotyczy ITS private-memory multicomputers. Oznacza to, że pierwsza jest pojedynczą maszyną wielordzeniową lub superskalarną, podczas gdy inna jest rozproszoną geograficznie siecią komputerów. To ostatnie oznacza mniej sprzężenia, a tym samym większą dostępność i odporność na uszkodzenia kosztem mniejszej wydajności. Wydajność jest obniżona, ponieważ potrzebujesz serializacji danych (de-) w każdej podróży w obie strony i jej dostarczania na większe odległości, podczas gdy możesz po prostu skierować obiekt w pamięci, aby przekazać go do innego procesora w równoległym procesorze.

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.