Główna zawartość
Podstawy informatyki - program rozszerzony
Kurs: Podstawy informatyki - program rozszerzony > Rozdział 4
Lekcja 4: Obliczenia równoległe i rozproszoneObliczenia rozproszone
Rozwiązanie złożonego problemu może wymagać naprawdę bardzo dużych zasobów obliczeniowych. Istnieją wprawdzie superkomputery, ale nie każdy ma do nich dostęp. Alternatywą jest sposób znany jako distributed computing, obliczenia rozproszone. Dzięki temu możemy wykonywać obliczenia na wielu urządzeniach naraz, pod warunkiem, że są one podłączone do sieci.
Rozproszenie procesów równoległych
Obliczenia rozproszone często korzystają z obliczeń równoległych. Obliczenia równoległe na jednym komputerze polegają na wykorzystaniu wielu procesorów do równoległego przetwarzania zadań, natomiast rozproszone obliczenia równoległe wykorzystują wiele komputerów do przetwarzania tych zadań.
Rozważmy nasz przykładowy program, który wykrywa koty na obrazach. Komputer zarządzający obliczeniami rozproszonymi wysyłałby informacje o obrazie do każdego ze współpracujących komputerów, a każdy z nich przesyłałby z powrotem swoje wyniki.
Ocena wydajności
Obliczenia rozproszone mogą poprawić wydajność wielu rozwiązań, wykorzystując setki lub tysiące komputerów działających równolegle. Możemy zmierzyć zyski, obliczając współczynnik wzrostu wydajności: czas potrzebny na rozwiązanie sekwencyjne podzielony przez czas potrzebny na rozwiązanie rozproszone, równoległe. Jeśli rozwiązanie sekwencyjne zajmuje 60 minut, a rozwiązanie rozproszone 6 minut, to wydajność wzrosła 10 razy.
Wydajność rozwiązań rozproszonych może jednak również cierpieć z powodu ich rozproszonej natury. Komputery muszą komunikować się przez sieć, wysyłając wiadomości z wartościami wejściowymi i wyjściowymi. Wysłanie wiadomości tam i z powrotem zajmuje pewną ilość czasu, a czas ten dodaje się do ogólnego czasu pracy nad rozwiązaniem. Aby rozproszone rozwiązanie obliczeniowe było warte zachodu, czas zaoszczędzony przez rozproszenie operacji musi być większy niż czas dodany przez narzut komunikacyjny.
W najprostszej architekturze obliczeń rozproszonych komputer zarządzający musi komunikować się z każdym komputerem-wykonawcą:
W przypadku bardziej złożonej architektury węzły robocze muszą komunikować się z innymi węzłami roboczymi. Jest to na przykład konieczne, gdy używamy rozproszonych obliczeń do trenowania głęboko uczącej się sieci.start superscript, 1, end superscript
Jednym ze sposobów na skrócenie czasu komunikacji jest wykorzystanie klastrów komputerowych: komputerów umieszczonych w sieci lokalnej, które pracują nad podobnymi zadaniami. W klastrze komputerowym wiadomość nie musi pokonywać dużych odległości, a co ważniejsze, nie jest przesyłana przez publiczny Internet.
Technologia obliczeń klastrowych ma swoje ograniczenia; utworzenie klastra wymaga przestrzeni fizycznej, wiedzy z zakresu obsługi sprzętu i oczywiście (niemałych) nakładów finansowych na zakup wszystkich urządzeń i infrastruktury sieciowej.
Na szczęście wiele firm oferuje usługi cloud computing, czyli obliczeń w chmurze, które dają programistom na całym świecie dostęp do zarządzanych klastrów. Firmy te zarządzają operacjami sprzętowymi, dostarczają narzędzia do wgrywania programów i pobierają opłaty w zależności od wykorzystania.
Rozproszenie funkcjonalności
Inną formą obliczeń rozproszonych jest wykorzystanie różnych urządzeń do realizacji różnych funkcji niezbędnych do rozwiązania postawionego problemu.
Na przykład, wyobraź sobie ogród zoologiczny z szeregiem kamer bezpieczeństwa. Każda kamera rejestruje materiał wideo w formacie cyfrowym. Kamery wysyłają swoje dane wideo do klastra komputerowego znajdującego się w siedzibie zoo, a ten uruchamia algorytmy analizy wideo w celu wykrycia uciekających zwierząt. Klaster wysyła również dane wideo do serwera w chmurze obliczeniowej, który analizuje terabajty danych wideo, aby odkryć trendy w czasie.
Każde urządzenie obliczeniowe w tej rozproszonej sieci pracuje nad inną częścią problemu, na podstawie swoich mocnych i słabych stron. Same kamery bezpieczeństwa nie mają wystarczającej mocy obliczeniowej, aby wykryć uciekające zwierzęta, ani wystarczającej przestrzeni dyskowej na nagrania obrazów z innych kamer (co mogłoby pomóc algorytmowi w śledzeniu ruchu). Lokalny klaster dysponuje przyzwoitą mocą obliczeniową i dodatkową pamięcią, może więc wykonać pilne zadanie wykrywania uciekających zwierząt. Jednak klaster odracza zadanie, które wymaga największego przetwarzania i przechowywania (ale niekoniecznie musi być zrealizowane w czasie rzeczywistym), do serwera obliczeniowego w chmurze.
Ta forma przetwarzania rozproszonego oparta jest o uznanie, że świat jest wypełniony szeregiem urządzeń komputerowych o różnych możliwościach, a ostatecznie niektóre problemy są najlepiej rozwiązywane przez wykorzystanie sieci tych urządzeń.
W rzeczywistości Ty też bierzesz udział w gigantycznym przykładzie przetwarzania rozproszonego: w sieci. Twój komputer wykonuje wiele czynności, aby przeczytać tę witrynę: wysyła żądania HTTP, aby uzyskać dane witryny, interpretuje JavaScript, który ładuje witryna, i stale aktualizuje ekran, gdy przewijasz stronę. Równolegle, nasze serwery również wykonują wiele zadań, odpowiadając na Twoje żądania HTTP, a także wysyłają dane do zaawansowanych serwerów analitycznych w celu dalszego przetwarzania.
Każda aplikacja, która korzysta z Internetu, jest przykładem przetwarzania rozproszonego, ale każda aplikacja podejmuje różne decyzje dotyczące sposobu dystrybucji przetwarzania. Inny przykład: inteligentni asystenci domowi wykonują lokalnie niewielką ilość przetwarzania języka, aby stwierdzić, że użytkownik poprosił ich o pomoc, ale następnie wysyłają dźwięk do serwerów o dużej mocy, aby przetworzyć pełne pytanie.
Internet umożliwia obliczenia rozproszone na wielką, światową skalę, zarówno w celu dystrybucji obliczeń równoległych, jak i dystrybucji funkcjonalności. Informatycy, programiści i przedsiębiorcy stale odkrywają nowe sposoby wykorzystania obliczeń rozproszonych, aby lepiej wykorzystywać tę ogromną sieć komputerów.
🙋🏽🙋🏻♀️🙋🏿♂️Masz pytania związane z tym zagadnieniem? Możesz zadać swoje pytanie poniżej!
Chcesz dołączyć do dyskusji?
Na razie brak głosów w dyskusji