Zanim zajmiemy się obliczeniami równoległymi, najpierw spójrzmy na tło obliczeń oprogramowania komputerowego i dlaczego zawiodło ono we współczesnej erze.
Programy komputerowe były pisane konwencjonalnie dla obliczeń szeregowych. Oznaczało to, że aby rozwiązać problem, algorytm dzieli problem na mniejsze instrukcje. Te dyskretne instrukcje są następnie wykonywane na Centralnej Jednostce Przetwarzania komputera jedna po drugiej. Tylko po zakończeniu jednej instrukcji, zaczyna się następna.
Przykładem z życia wziętym mogą być ludzie stojący w kolejce po bilet do kina, gdzie jest tylko kasjer, który wydaje bilet jedna po drugiej. Złożoność tej sytuacji wzrasta, gdy są 2 kolejki i tylko jeden kasjer.
Więc, w skrócie Obliczenia Seryjne są następujące:
- W tym, stwierdzenie problemu jest rozbite na dyskretne instrukcje.
- Potem instrukcje są wykonywane jedna po drugiej.
- Tylko jedna instrukcja jest wykonywana w dowolnym momencie.
Spójrz na punkt 3. Powodowało to ogromny problem w przemyśle komputerowym, ponieważ tylko jedna instrukcja była wykonywana w dowolnym momencie. Było to ogromne marnotrawstwo zasobów sprzętowych, ponieważ tylko jedna część sprzętu będzie działać dla konkretnej instrukcji i czasu. Ponieważ instrukcje problemowe stawały się coraz cięższe i obszerniejsze, podobnie jak ilość czasu wykonywania tych instrukcji. Przykładem procesorów są Pentium 3 i Pentium 4.
Teraz wróćmy do naszego rzeczywistego problemu. Z pewnością można powiedzieć, że złożoność zmniejszy się, gdy będą 2 kolejki i 2 kasjerów wydających bilety 2 osobom jednocześnie. To jest właśnie przykład obliczeń równoległych.
Obliczenia równoległe –
Jest to użycie wielu elementów przetwarzających jednocześnie do rozwiązania dowolnego problemu. Problemy są podzielone na instrukcje i są rozwiązywane współbieżnie, ponieważ każdy zasób, który został zastosowany do pracy, pracuje w tym samym czasie.
Zalety obliczeń równoległych w stosunku do obliczeń szeregowych są następujące:
- Oszczędza czas i pieniądze, ponieważ wiele zasobów pracujących razem skróci czas i zmniejszy potencjalne koszty.
- Może być niepraktyczne do rozwiązywania większych problemów na obliczeniach szeregowych.
- Może wykorzystać zasoby nielokalne, gdy zasoby lokalne są ograniczone.
- Obliczenia szeregowe „marnują” potencjalną moc obliczeniową, dlatego też obliczenia równoległe lepiej wykorzystują sprzęt.
Typy równoległości:
- Paralelizm na poziomie bitów: Jest to forma obliczeń równoległych, która opiera się na rosnącym rozmiarze procesora. Zmniejsza on liczbę instrukcji, które system musi wykonać, aby wykonać zadanie na danych o dużym rozmiarze.
Przykład: Rozważmy scenariusz, w którym 8-bitowy procesor musi obliczyć sumę dwóch 16-bitowych liczb całkowitych. Musi on najpierw zsumować 8 bitów niższego rzędu, a następnie dodać 8 bitów wyższego rzędu, co wymaga dwóch instrukcji do wykonania operacji. Procesor 16-bitowy może wykonać tę operację za pomocą tylko jednej instrukcji. - Równoległość na poziomie instrukcji: Procesor może zaadresować tylko mniej niż jedną instrukcję dla każdej fazy cyklu zegara. Te instrukcje mogą być ponownie uporządkowane i pogrupowane, które są później wykonywane współbieżnie bez wpływu na wynik programu. Jest to tak zwany paralelizm na poziomie instrukcji.
- Paralelizm zadaniowy: Równoległość zadań polega na dekompozycji zadania na podzadania, a następnie przydzieleniu każdego z nich do wykonania. Procesory wykonują zadania współbieżnie.
Dlaczego obliczenia równoległe?
- Cały świat rzeczywisty działa w dynamicznej naturze tzn. wiele rzeczy dzieje się w określonym czasie, ale w różnych miejscach współbieżnie. Dane te są bardzo duże i trudne do zarządzania.
- Realny świat danych wymaga bardziej dynamicznej symulacji i modelowania, a dla osiągnięcia tego samego, obliczenia równoległe są kluczem.
- Obliczenia równoległe zapewniają współbieżność i oszczędzają czas i pieniądze.
- Złożone, duże zbiory danych i zarządzanie nimi może być zorganizowane tylko i wyłącznie przy użyciu podejścia obliczeń równoległych.
- Zapewnia efektywne wykorzystanie zasobów. Sprzęt jest gwarantowany do efektywnego wykorzystania, podczas gdy w obliczeniach seryjnych tylko część sprzętu została wykorzystana, a reszta stała bezczynnie.
- Ale niepraktyczne jest wdrażanie systemów czasu rzeczywistego przy użyciu obliczeń seryjnych.
Zastosowania obliczeń równoległych:
- Bazy danych i eksploracja danych.
- Symulacja systemów w czasie rzeczywistym.
- Nauka i inżynieria.
- Zaawansowana grafika, rozszerzona rzeczywistość i wirtualna rzeczywistość.
Limitacje obliczeń równoległych:
- Odnosi się do takich kwestii jak komunikacja i synchronizacja pomiędzy wieloma podzadaniami i procesami, co jest trudne do osiągnięcia.
- Algorytmy muszą być zarządzane w taki sposób, aby mogły być obsługiwane w mechanizmie równoległym.
- Algorytmy lub program muszą mieć niskie sprzężenie i wysoką spójność. Ale trudno jest stworzyć takie programy.
- Więcej technicznie uzdolnionych i biegłych programistów może dobrze zakodować program oparty na równoległości.
Przyszłość obliczeń równoległych: Graf obliczeniowy przeszedł wielkie przejście od obliczeń seryjnych do obliczeń równoległych. Gigant technologiczny taki jak Intel zrobił już krok w kierunku obliczeń równoległych poprzez zastosowanie procesorów wielordzeniowych. Obliczenia równoległe zrewolucjonizują sposób pracy komputerów w przyszłości, dla lepszego dobra. Z całym światem łączącym się ze sobą jeszcze bardziej niż wcześniej, obliczenia równoległe odgrywają większą rolę w pomaganiu nam w utrzymaniu tego stanu rzeczy. Wraz z szybszymi sieciami, systemami rozproszonymi i komputerami wieloprocesorowymi, staje się ona jeszcze bardziej potrzebna.
Uwaga czytelnicy! Nie przestawaj się uczyć teraz. Zdobądź wszystkie ważne koncepcje Teorii CS dla wywiadów SDE z Kursem Teorii CS w przyjaznej dla studenta cenie i stań się gotowy do pracy w przemyśle.