obliczenia równoległe

obliczenia równoległe definicja

obliczenia równoległe to rodzaj architektury obliczeniowej, w której kilka procesorów wykonuje jednocześnie wiele mniejszych obliczeń w podziale na ogólnie większy, złożony problem.

Diagram z LLNL pokazuje ogólną architekturę obliczeń równoległych używaną do podziału większych, złożonych problemów na mniejsze obliczenia.
FAQ

co to jest równoległe przetwarzanie?

przetwarzanie równoległe odnosi się do procesu dzielenia większych problemów na mniejsze, niezależne, często podobne części, które mogą być wykonywane jednocześnie przez wiele procesorów komunikujących się za pośrednictwem pamięci współdzielonej, których wyniki są łączone po zakończeniu jako część ogólnego algorytmu. Głównym celem obliczeń równoległych jest zwiększenie dostępnej mocy obliczeniowej w celu szybszego przetwarzania aplikacji i rozwiązywania problemów.

równoległa Infrastruktura obliczeniowa zazwyczaj mieści się w jednym centrum danych, gdzie kilka procesorów jest zainstalowanych w szafie serwerowej; żądania obliczeniowe są dystrybuowane w małych kawałkach przez serwer aplikacji, które są następnie wykonywane jednocześnie na każdym serwerze.

istnieją zasadniczo cztery rodzaje równoległych obliczeń, dostępne zarówno od firmowych, jak i otwartych dostawców równoległych obliczeń-równoległość na poziomie bitowym , równoległość na poziomie instrukcji, równoległość zadań lub równoległość na poziomie superwordu:

  • równoległość na poziomie bitowym: zwiększa rozmiar słowa procesora, co zmniejsza ilość instrukcji, które procesor musi wykonać, aby wykonać operację na zmiennych większych niż długość słowa.
  • równoległość na poziomie instrukcji: podejście sprzętowe działa na równoległości dynamicznej, w której procesor decyduje w czasie pracy, które instrukcje wykonać równolegle; podejście programowe działa na równoległości statycznej, w którym kompilator decyduje, które instrukcje wykonać równolegle
  • równoległość Zadań: wektoryzacja, która może wykorzystywać równoległość kodu inline

Aplikacje równoległe są zazwyczaj klasyfikowane jako drobnoziarnisty równoległość, w którym podzadania będą komunikować się kilka razy na sekundę; Gruboziarnisty równoległość, w którym podzadania nie komunikują się kilka razy na sekundę; lub żenujący równoległość, w którym podzadania rzadko komunikują się kilka razy na sekundę; lub żenujący równoległość, w którym podzadania rzadko komunikują się kilka razy na sekundę.albo nigdy się nie komunikować. Mapowanie w obliczeniach równoległych służy do rozwiązywania problemów równoległych poprzez zastosowanie prostej operacji na wszystkich elementach sekwencji bez konieczności komunikacji między podzadaniami.

popularyzacja i ewolucja obliczeń równoległych w XXI wieku przyszła w odpowiedzi na skalowanie częstotliwości procesora uderzające w ścianę mocy. Zwiększenie częstotliwości zwiększa ilość mocy używanej w procesorze, a skalowanie częstotliwości procesora nie jest już możliwe po pewnym momencie; dlatego programiści i producenci zaczęli projektować równoległe oprogramowanie systemowe i produkować energooszczędne procesory z wieloma rdzeniami, aby rozwiązać problem zużycia energii i przegrzania jednostek centralnych.

znaczenie obliczeń równoległych nadal rośnie wraz z rosnącym wykorzystaniem procesorów wielordzeniowych i GPU. Procesory graficzne współpracują z procesorami, aby zwiększyć przepustowość danych i liczbę jednoczesnych obliczeń w aplikacji. Korzystając z mocy równoległości, GPU może wykonać więcej pracy niż CPU w określonym czasie.

podstawy architektury komputerów równoległych

Architektura komputerów równoległych istnieje w szerokiej gamie komputerów równoległych, klasyfikowanych według poziomu, na którym sprzęt obsługuje równoległość. Równoległa architektura komputera i techniki programowania współpracują ze sobą, aby skutecznie wykorzystać te maszyny. Klasy równoległych architektur komputerowych obejmują:

  • multi-core computing: Procesor wielordzeniowy to układ scalony procesora komputerowego z dwoma lub więcej oddzielnymi rdzeniami procesorowymi, z których każdy wykonuje instrukcje programu równolegle. Rdzenie są zintegrowane z wieloma matrycami w jednym pakiecie chipowym lub z pojedynczym układem scalonym i mogą implementować architektury takie jak wielowątkowość, superscalar, vector lub VLIW. Architektury wielordzeniowe są klasyfikowane jako jednorodne, które zawierają tylko identyczne rdzenie, lub heterogeniczne, które zawierają rdzenie, które nie są identyczne.
  • wieloprocesor symetryczny: wieloprocesorowa Architektura sprzętu komputerowego i oprogramowania, w której dwa lub więcej niezależnych, jednorodnych procesorów jest sterowanych przez jedną instancję systemu operacyjnego, która traktuje wszystkie procesory jednakowo i jest podłączona do jednej, współdzielonej pamięci głównej z pełnym dostępem do wszystkich wspólnych zasobów i urządzeń. Każdy procesor ma prywatną pamięć podręczną, może być podłączony za pomocą sieci mesh na chipie i może pracować nad dowolnym zadaniem, bez względu na to, gdzie dane dla tego zadania znajdują się w pamięci.
  • przetwarzanie rozproszone: Rozproszone komponenty systemu znajdują się na różnych komputerach sieciowych, które koordynują swoje działania poprzez komunikację za pośrednictwem czystego HTTP, złączy podobnych do RPC i kolejek wiadomości. Istotne cechy systemów rozproszonych obejmują niezależne awarie komponentów i współbieżność komponentów. Programowanie rozproszone jest zazwyczaj klasyfikowane jako architektury klient-serwer, trójwarstwowe, N-warstwowe lub peer-to-peer. W obliczeniach rozproszonych i równoległych istnieje wiele nakładania się, a terminy te są czasami używane zamiennie.
  • Massively parallel computing: odnosi się do użycia wielu komputerów lub procesorów komputerowych do jednoczesnego wykonywania zestawu obliczeń równolegle. Jedno podejście polega na grupowaniu kilku procesorów w ściśle zorganizowany, scentralizowany klaster komputerowy. Innym podejściem jest grid computing, w którym wiele szeroko rozpowszechnionych komputerów współpracuje i komunikuje się za pośrednictwem Internetu, aby rozwiązać konkretny problem.

Inne architektury komputerów równoległych obejmują wyspecjalizowane Komputery równoległe, przetwarzanie klastrowe, przetwarzanie siatkowe, procesory wektorowe, specyficzne dla aplikacji Układy scalone, obliczenia ogólnego przeznaczenia na jednostkach przetwarzania grafiki (GPGPU) i rekonfigurowalne obliczenia z programowalnymi tablicami bramek. Pamięć główna w dowolnej równoległej strukturze komputera jest albo rozproszona, albo współdzielona.

oprogramowanie do obliczeń równoległych rozwiązania i techniki

języki programowania współbieżnego, interfejsy API, biblioteki i modele programowania równoległego zostały opracowane w celu ułatwienia obliczeń równoległych na sprzęcie równoległym. Niektóre równoległe rozwiązania i techniki obliczeniowe obejmują:

  • application checkpointing: technika, która zapewnia odporność na awarie systemów obliczeniowych, rejestrując wszystkie bieżące Stany zmiennych aplikacji, umożliwiając aplikacji przywrócenie i ponowne uruchomienie od tego momentu w przypadku awarii. Checkpointing jest kluczową techniką dla wysoce równoległych systemów obliczeniowych, w których obliczenia o wysokiej wydajności są prowadzone przez dużą liczbę procesorów.
  • automatyczna równoległość: odnosi się do konwersji kodu sekwencyjnego na kod wielowątkowy w celu użycia wielu procesorów jednocześnie w maszynie wieloprocesorowej pamięci współdzielonej (SMP). Techniki automatycznej równoległości obejmują Analizowanie, analizę, planowanie i generowanie kodu. Typowe przykłady popularnych kompilatorów i narzędzi równoległych to Paradigm compiler, Polaris compiler, Rice Fortran d compiler, SUIF compiler i Vienna Fortran compiler.
  • języki programowania równoległego: języki programowania równoległego są zazwyczaj klasyfikowane jako pamięć rozproszona lub współdzielona. Podczas gdy języki programowania pamięci rozproszonej wykorzystują przekazywanie wiadomości do komunikacji, języki programowania pamięci współdzielonej komunikują się poprzez manipulowanie zmiennymi pamięci współdzielonej.

różnica między przetwarzaniem równoległym a przetwarzaniem w chmurze

przetwarzanie w chmurze to ogólny termin, który odnosi się do dostarczania skalowalnych usług, takich jak bazy danych, przechowywanie danych, sieć, serwery i oprogramowanie, przez Internet w razie potrzeby, na zasadzie pay-as-you-go.

Usługi Przetwarzania w chmurze mogą być publiczne lub prywatne, są w pełni zarządzane przez dostawcę i ułatwiają zdalny dostęp do danych, pracy i aplikacji z dowolnego urządzenia w dowolnym miejscu zdolnym do nawiązania połączenia z Internetem. Trzy najpopularniejsze kategorie usług to Infrastruktura jako usługa (IaaS), Platforma jako usługa (PaaS) i oprogramowanie jako usługa (SaaS).

przetwarzanie w chmurze jest stosunkowo nowym paradygmatem w rozwoju oprogramowania, który ułatwia szerszy dostęp do obliczeń równoległych za pośrednictwem rozległych, wirtualnych klastrów komputerowych, umożliwiając przeciętnemu użytkownikowi i mniejszym organizacjom wykorzystanie mocy przetwarzania równoległego i opcji pamięci masowej Zwykle zarezerwowanych dla dużych przedsiębiorstw.

różnica między przetwarzaniem równoległym a przetwarzaniem równoległym

przetwarzanie równoległe jest metodą w obliczeniach, w której oddzielne części ogólnego złożonego zadania są rozdzielane i uruchamiane jednocześnie na wielu procesorach, co skraca czas przetwarzania.

dzielenie i przypisywanie każdego zadania do innego procesora jest zwykle wykonywane przez informatyków za pomocą narzędzi programowych do przetwarzania równoległego, które będą również pracować, aby ponownie złożyć i odczytać dane, gdy każdy procesor rozwiąże swoje konkretne równanie. Proces ten odbywa się za pośrednictwem sieci komputerowej lub komputera z dwoma lub więcej procesorami.

przetwarzanie równoległe i przetwarzanie równoległe występują w parze, dlatego terminy te są często używane zamiennie; jednakże, gdy przetwarzanie równoległe dotyczy liczby rdzeni i procesorów działających równolegle w komputerze, przetwarzanie równoległe dotyczy sposobu, w jaki oprogramowanie zachowuje się w celu optymalizacji dla tego warunku.

różnica między przetwarzaniem sekwencyjnym i równoległym

przetwarzanie sekwencyjne, znane również jako obliczenia szeregowe, odnosi się do użycia pojedynczego procesora do wykonania programu, który jest podzielony na sekwencję dyskretnych instrukcji, każda wykonywana jedna po drugiej bez nakładania się w danym czasie. Oprogramowanie jest tradycyjnie programowane sekwencyjnie, co zapewnia prostsze podejście, ale jest znacznie ograniczone przez szybkość procesora i jego zdolność do wykonywania każdej serii instrukcji. Tam, gdzie maszyny jednoprocesorowe wykorzystują sekwencyjne struktury danych, struktury danych dla równoległych środowisk obliczeniowych są równoległe.

Pomiar wydajności w programowaniu sekwencyjnym jest o wiele mniej skomplikowany i ważny niż benchmarki w obliczeniach równoległych, ponieważ zazwyczaj obejmuje tylko identyfikację wąskich gardeł w systemie. Wzorce porównawcze w obliczeniach równoległych można osiągnąć za pomocą RAM testowania porównawczego i regresji wydajności, które wykorzystują różne metody pomiaru, takie jak traktowanie statystyczne i wielokrotne powtórzenia. Możliwość uniknięcia tego wąskiego gardła poprzez przenoszenie danych przez hierarchię pamięci jest szczególnie widoczna w obliczeniach równoległych na potrzeby nauki o danych, uczenia maszynowego obliczeń równoległych i obliczeń równoległych sztucznej inteligencji.

obliczenia sekwencyjne są przeciwieństwem obliczeń równoległych. Podczas gdy przetwarzanie równoległe może być bardziej złożone i wiązać się z większymi kosztami z góry, zaleta szybszego rozwiązania problemu często przewyższa koszt nabycia sprzętu do przetwarzania równoległego.

czy OmniSci oferuje równoległe rozwiązanie obliczeniowe?

Platforma OmniSci wykorzystuje ogromną równoległą moc obliczeniową procesorów graficznych do analizy Big Data, dając analitykom big data i analitykom danych możliwość interaktywnego zapytań, wizualizacji i zasilania przepływów pracy z danymi w miliardach rekordów w milisekundach. Platforma OmniSci została zaprojektowana w celu przezwyciężenia ograniczeń skalowalności i wydajności starszych narzędzi analitycznych w obliczu skali, prędkości i atrybutów lokalizacji dzisiejszych dużych zbiorów danych.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *