Programowanie równoległe: opis, technologia, zadania i korzyści

Pomysły obliczeń równoległych i przetwarzanie informacji dawna przywilejem specjalistów i bardzo istotny problem z punktu widzenia realizacji. Jeszcze niedawno nabrały specjalnego znaczenia i masowego zainteresowania. Prawdopodobnie to jest rozwój technologii internetowych dał nowy impuls i programowania równoległego nabytej jako nowy użytkownik. Wynikało to nie tylko z oczywistego postępu technologii i języków programowania. To faktycznie wytworzyło odwrotny efekt dla zrozumienia procesu równoległego.


Technologie programowania równoległego zmieniły się radykalnie. Początkowe zastosowanie urządzeń komputerowych, takich jak kalkulatory sprawnie przeniesione do ich stosowania jako ładowarki multimedialnych. Ścisłe rozwiązania architektoniczne ustąpiły semantyki i funkcjonalności dystrybucji elastyczne oprogramowanie dla wykonawców „sprzętowych”.

obliczenie równoległa:

Po pierwsze, fundamenty w programowaniu architektury urządzeń obliczeniowych równolegle treści i realizacji. Zaproponowano klasyfikację opartą na pojęciu przepływu. Sekwencja rozkazów, danych funkcjonalnie kompletne algorytmu sekwencyjnego postrzegane jako obiekt, który może być wykonywane równolegle z innym podobnym obiekcie.
W tym podejściu, istota każdego przedmiotu nie wspomniano jednak niewielką wartość dzieli się na równoległych sekcji kodu, które mogą być wykonywane niezależnie od siebie, tj wejściu i wyjściu każdej z nici nie pokrywają danych. Każdy strumień nie zależał odz innego wątku i jeśli potrzebował danych z innego wątku, a następnie przełączył się w tryb gotowości.


Pomysł ten doprowadził do powstania czterech architektur:
  • SISD to prosty strumień poleceń i prosty strumień danych;
  • MISD - polecenia wielu strumieni i prosty strumień danych;
  • SIMD jest prostym strumieniem poleceń i mnogim przepływem danych;
  • MIMD jest wielowymiarowym strumieniem poleceń i mnogim przepływem danych.
  • Pomysły te istniały przez stosunkowo długi czas, ale nie prowadziły do ​​efektów specjalnych. Dziś jest opowieść o trudnym początku. Ale ten początek stworzył fundament dla współczesnych osiągnięć.

    Brak koncepcji architektonicznej: brak semantyki

    Podobnie jak budowa budynku mieszkalnego, architektura systemu komputerowego nie dotyczyła semantyki. Jak żyją mieszkańcy w domu, które mogą naprawić i decydują się na montaż mebli, nigdy nie martwią się budowniczymi. Na samym początku równoległego systemu programowania nie nadawano znaczenia algorytmowi, który musiałby zostać wykonany. Sam procesor podzielił kod i dane na sekcje wykonywane równolegle. Dało to zauważalny wzrost wydajności, ale było podekscytowane, w szczególności:
  • problem alokacji pamięci między procesami;
  • logika oczekiwania jednego przepływu wyników innego przepływu;
  • mechanizm ochrony pamięci jednego procesu z innego procesu;
  • logika interakcji niezależnych procesorów, ziaren;
  • logika przełączania między procesami;
  • wymiana danych "w locie" między procesami
  • Deweloperzy bardziej skupili się na mechanizmach sprzętowych, które zostały pozbawioneRównoległe wielowątkowe programowanie ma zdolność do semantyki i nie pozwala programistom odpowiednio zarządzać procesami.

    Przemysłowe zastosowanie równoległości

    komputerach pierwszych Cel i wyrafinowanych obliczeń matematycznych, zastosowań przemysłowych i nie dotyczą życia codziennego, mobilności i Internetu. Naturalnie, gdy problemy programowania równoległego są tak "ograniczone", trudno oczekiwać ciekawych osiągnięć. Kiedy komputery stały się masowo produkowane, istniały Internet i urządzenia mobilne, wymagania dotyczące równoległości zmieniły się dramatycznie, a programiści musieli radykalnie zmienić styl i szybkość pracy. Pierwsza jaskółka to idea przesyłania wiadomości między procesami. Interfejs komunikacyjny MPI, programowanie równoległe, potrzeby programistów i oczekiwania konsumentów stały się etapem pośrednim.
    System
    Windows i podobny pomysł stały i faktycznie jego regulacje: równoległości oraz wiadomości - jedną jednostkę dla wszystkich wieloprocesorowych, wielordzeniowych, aw rzeczywistości - dla każdego systemu informacyjnego.

    Od przetwarzania do przetwarzania informacji

    Obliczanie jest prywatnym przypadkiem przetwarzania informacji. Od równoległych architektur wdrażanych przez sprzęt do oprogramowania mobilnego: równoległe języki programowania stały się własnością historii. Współczesny język zapewnia rzeczywiste równoległe procesy, ale do tego nie musi mieć specjalnych operatorów w składni ani dodatkowychbiblioteki do języka. "Przemysłowe" myślenie w programowaniu, kiedy równoległe wielowątkowe programowanie jest celem, a nie środkiem, nie było długie. Do jakich podstawowych rezultatów to doprowadziło, trudno powiedzieć. Jednak nie ma wątpliwości, że programowanie to było przed erą programowania Internet stał się podstawą do odróżniania dobrych pomysłów i potencjału współczesnych języków i narzędzi.

    Komponent sprzętowy

    Pierwsze komputery były potwory zajmował czwartą boisku i wydziela tyle ciepła można łatwo ogrzać małe miasto, zamiast wydawać pieniądze na budowę elektrowni.
    Następna generacja komputerów - osobista. Osobowości zostały umieszczone na pulpicie, a telefony komórkowe można nosić na ramionach. Personalki szybko zmieniane i nabyte nowoczesny wygląd, dał życie do laptopów, tabletów i innych urządzeń i telefonów komórkowych stały się wygodnym wielofunkcyjnych smartfonów.
    Producent podzespołów elektronicznych w pełni sił zaangażowanych pomysł ostatnich lat, a teraz jest równoległe programowanie dowolnego urządzenia, niezależnie od tego, jak odnosi się do konkretnego programista. Dziś liczba rdzeni procesora, liczby procesorów, poziom technologii, równoległości i funkcjonalność kodu krytycznym, nawet dla niewtajemniczonych użytkownika.

    Aparat matematyczny

    Teoria wykresów i utrzymania masy, jako warianty prywatne, obliczenia linii i krzywych dla reprezentacji wizualnejinformacje stanowiące podstawę kart graficznych spowodowały wyraźną funkcjonalność komponentu sprzętowego, który otrzymał status i jakość standardu. Możesz mówić o liczbie rdzeni w procesorze urządzenia, ale procesor do wyświetlania informacji od dawna jest jednym z nich i zajmuje się ich działalnością. Karta graficzna może mieć nie tylko jeden procesor, a nie jeden rdzeń, ale urządzenie matematyczne, które jest wszczepiane. Procesor komputera po prostu formułuje proste polecenia do wyświetlania informacji lub próbki z pamięci wideo, drugi - problem procesora kart wideo. W rzeczywistości obliczenia matematyczne były od dawna oddzielane od głównego procesora przez koprocesor matematyczny. W tej chwili jest to również normą rzeczy. W rzeczywistości, biorąc pod uwagę równoległe programowanie na poziomie sprzętowym, można sobie wyobrazić nowoczesny komputer, jako zestaw równoległych roboczych podsystemów, które zapewniają programistom wszystko, co niezbędne do wdrożenia różnorodnych pomysłów rozproszonych i równoległych przetwarzaniu informacji.
    Uważa się, że podstawowe zasoby sprzętowe dla dowolnego systemu informatycznego są w idealnym stanie i stabilnie się rozwijają. Programista może tylko napisać kod wysokiej jakości.

    Programowanie obiektowe

    W programowaniu klasycznym algorytm jest sekwencją poleceń. W programowaniu obiektowym algorytm decyzyjny jest zbiorem obiektów, z których każdy ma swoje własne dane i metody.
    Za pomocą metod obiekty wchodzą w interakcje ze sobą, a tym samym, w jaki sposób będą wykonywane przez część sprzętową komputera(devaysa), programista martwi się najmniej. Jednak logika interakcji z obiektem należy do kompetencji programisty. Zasadniczo system informacyjny zbudowany na obiektach jest systemem abstrakcji, który pozwala na różne opcje tworzenia obiektów różnych typów i miejsc docelowych. Opisywane na poziomie abstrakcji systemy informacyjne mogą zapewniać różne kombinacje obiektów, w tym tworzenie samych tych ostatnich. Mówiąc prościej, gdy programowanie obiektowe trudno jest połączyć wykonanie obiektu jądra lub procesora, aby zapewnić równoległe wykonanie. To znacznie spowolni cały proces. Jeden obiekt może istnieć w kilkudziesięciu instancjach, ale nie oznacza to, że istnienie każdego z nich powinno poczekać, aż zostanie ukończone istnienie poprzedniego.

    Klastry i rozproszona sieć równoległa

    Nowoczesne oprogramowanie internetowe do rozwiązywania skomplikowanych, unikatowych zadań oferuje jedyne możliwe rozwiązanie: pracę ręczną! Do codziennych i komercyjnych zastosowań wykorzystywane są liczne i różnorodne systemy zarządzania witryną. Charakterystyczną cechą programowania w Internecie:
  • niepewność;
  • mnogość;
  • symultaniczność.
  • Podczas tworzenia witryny programista (często zespół programistów) nie wie, ilu użytkowników będzie musiało zaakceptować zasób internetowy, ale wie na pewno, że strona musi zapewniać temu samemu klientowi minimalny czas odpowiedzi na dowolne działanie. Oczywistym rozwiązaniem jest umieszczenie witryny na zbiorze serwerów lub klastrów na podstawie terytorialnej, a następnie każdy region będziesłużyć konkretnemu serwerowi. Ale nowoczesna strona nie tylko dostarcza informacji, ale także wykorzystuje je. Na przykład sklep internetowy może sprzedawać powietrze i jeśli jeden produkt został zakupiony w Moskwie, powinna ona zniknąć z konsumentem we Władywostoku.
    Zrób przetwarzanie rozproszone informacje faktycznie oznacza dostarczenie równoległego funkcjonowania samej funkcjonalności na różnych serwerach dla różnych grup konsumentów, pod warunkiem, że działania konsumenckie są wyświetlane w systemie i nie są ze sobą sprzeczne. W tym kontekście programowanie równoległe nabiera zupełnie innego znaczenia. Wcześniej deweloper umieścić w ramach mechanizmu kąt główki do realizacji równoległości, nie odnosząc się do tego samego problemu, ale teraz deweloper najmniej zaniepokojony, jak realizowany równolegle do poziomu sprzętu lub narzędzi, jest on zainteresowany równolegle do klientów, czyli na samym problemie zakresu sieci Zasób

    Klaster jako opcja do równoległego wdrożenia

    Uważa się, że klaster jest rodzajem rozproszonego przetwarzania informacji równolegle. Jest to zestaw komputerów połączonych szybkimi liniami komunikacyjnymi. Charakterystyczne jest, że klaster może składać się z wielu komputerów, które mogą znajdować się w różnych miejscach na świecie, ale z definicji klastra - pojedynczą jednostkę. Systemy zarządzania witryną oparte na klastrach nie umożliwiają bezpośredniej kontroli komponentów klastrów przez komputery, ale zapewniają ukryte, równoległe zarządzanie wszystkimi procesami na poziomierozwiązane zadanie. Deweloper, pracując z klastrami, może zaplanować i wdrożyć własną funkcję równoległego przetwarzania rozproszonego. To bardzo znaczący postęp w nowoczesnym designie.

    "Życie" współczesnego obiektu

    Obecnie bardzo trudno jest znaleźć zasoby internetowe oparte na statycznych lub dynamicznych stronach, uformowanych w całości. Nowoczesna strona to zbiór dynamicznych stron, które są wypełniane równolegle z technologią AJAX. Aktualna strona dynamiczna składa się z różnych treści, każda strona strony może być pobierana niezależnie, w zależności od zachowania użytkownika. W tym kontekście programowanie obiektowe pokazuje, że nie cały jego potencjał jest ujawniany. Rzeczywiście, zachowanie klienta prowadzi do żądania serwera, aby zaktualizować część strony. Żądanie jest realizowane, tworzona jest masa obiektów, serwer wysyła wynik z powrotem. Następnym żądaniem jest ponownie masa obiektów, wynik jest zwracany ponownie. W rzeczywistości okazuje się, że przy nowoczesnym podejściu serwer "nie pamięta" co, kiedy i gdzie wysłał. Przy każdym zabiegu powtarza minimalne niezbędne czynności, tworzy wszystkie te same obiekty systemowe.
    Programista nie może zmienić logiki serwera, ale może łatwo emulować własny serwer na swoim fizycznym poziomie. Powstanie zupełnie nowa jakość rozproszonego przetwarzania równoległego informacji. Własny serwer zachowa wymagany system obiektów w aktualnym stanie, co znacznie przyspieszy przetwarzanie żądań z jednej strony i ze wszystkich stron,otwarty na całą przestrzeń sieciową dla określonego zasobu sieciowego.

    Powiązane publikacje