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.
źródło
Odpowiedzi:
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.
źródło
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:
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ściT x 5x T x x ale 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.
źródło
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.
źródło
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:
źródło
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.
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
źródło
Jest odpowiedzią który jest bardziej odpowiednie tutaj. Zasadniczo
parallel
dotyczymemory-shared multiprocessor
natomiastdistributed
dotyczy ITSprivate-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.źródło