Nowoczesne technologie przetwarzania informacji



Podobne dokumenty
Programowanie równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz

Programowanie współbieżne Wykład 2. Iwona Kochańska

Zapoznanie z technikami i narzędziami programistycznymi służącymi do tworzenia programów współbieżnych i obsługi współbieżności przez system.

16. Taksonomia Flynn'a.

Obliczenia równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz

Tworzenie programów równoległych. Krzysztof Banaś Obliczenia równoległe 1

Programowanie procesorów graficznych GPGPU

Tworzenie programów równoległych cd. Krzysztof Banaś Obliczenia równoległe 1

Skalowalność obliczeń równoległych. Krzysztof Banaś Obliczenia Wysokiej Wydajności 1

Analiza ilościowa w przetwarzaniu równoległym

Tworzenie programów równoległych. Krzysztof Banaś Obliczenia równoległe 1

PROGRAMOWANIE WSPÓŁCZESNYCH ARCHITEKTUR KOMPUTEROWYCH DR INŻ. KRZYSZTOF ROJEK

Algorytmy i Struktury Danych

Architektura komputerów

Architektura mikroprocesorów TEO 2009/2010

Podstawy Informatyki Systemy sterowane przepływem argumentów

Programowanie współbieżne i rozproszone

Architektura komputerów

Architektury komputerów Architektury i wydajność. Tomasz Dziubich

Literatura. 11/16/2016 Przetwarzanie równoległe - wstęp 1

Literatura. 3/26/2018 Przetwarzanie równoległe - wstęp 1

Programowanie współbieżne Wstęp do obliczeń równoległych. Rafał Skinderowicz

i3: internet - infrastruktury - innowacje

Klasyfikacje systemów komputerowych, modele złożoności algorytmów obliczeniowych

Programowanie procesorów graficznych GPGPU. Krzysztof Banaś Obliczenia równoległe 1

Algorytmy dla maszyny PRAM

Podstawy Techniki Mikroprocesorowej wykład 13: MIMD. Dr inż. Jacek Mazurkiewicz Katedra Informatyki Technicznej

Systemy wieloprocesorowe i wielokomputerowe

Systemy wbudowane. Uproszczone metody kosyntezy. Wykład 11: Metody kosyntezy systemów wbudowanych

Wprowadzenie. Co to jest klaster? Podział ze względu na przeznaczenie. Architektury klastrów. Cechy dobrego klastra.

Obliczenia Wysokiej Wydajności

Wykład 2 Podstawowe pojęcia systemów równoległych, modele równoległości, wydajność obliczeniowa, prawo Amdahla/Gustafsona

10/14/2013 Przetwarzanie równoległe - wstęp 1. Zakres przedmiotu

Obliczenia Wysokiej Wydajności

O superkomputerach. Marek Grabowski

Spis treści. 1 Wprowadzenie. 1.1 Podstawowe pojęcia. 1 Wprowadzenie Podstawowe pojęcia Sieci komunikacyjne... 3

Projektowanie algorytmów równoległych. Zbigniew Koza Wrocław 2012

Przygotowanie kilku wersji kodu zgodnie z wymogami wersji zadania,

Równoległość i współbieżność

Równoległość i współbieżność

Analiza efektywności przetwarzania współbieżnego. Wykład: Przetwarzanie Równoległe Politechnika Poznańska Rafał Walkowiak Grudzień 2015

Nazwa Wydziału Nazwa jednostki prowadzącej moduł Nazwa modułu kształcenia Kod modułu Język kształcenia Efekty kształcenia dla modułu kształcenia

Wprowadzenie do architektury komputerów. Taksonomie architektur Podstawowe typy architektur komputerowych

Jak ujarzmić hydrę czyli programowanie równoległe w Javie. dr hab. Piotr Bała, prof. UW ICM Uniwersytet Warszawski

Numeryczna algebra liniowa

Zegar - układ wysyłający regularne impulsy o stałej szerokości (J) i częstotliwości (f)

Analiza efektywności przetwarzania współbieżnego

Zadania badawcze prowadzone przez Zakład Technik Programowania:

Tworzenie programów równoległych. Krzysztof Banaś Obliczenia równoległe 1

Przetwarzanie Równoległe i Rozproszone

21 Model z pamięcią współdzieloną (model PRAM) - Parallel Random Access Machine

Systemy operacyjne III

Równoległy algorytm wyznaczania bloków dla cyklicznego problemu przepływowego z przezbrojeniami

PRZEWODNIK PO PRZEDMIOCIE

Mikroprocesory rodziny INTEL 80x86

PODSTAWY PRZETWARZANIA RÓWNOLEGŁEGO INFORMACJI

Dr inż. hab. Siergiej Fialko, IF-PK,

Algorytmy Równoległe i Rozproszone Część IV - Model PRAM

Tryby komunikacji między procesami w standardzie Message Passing Interface. Piotr Stasiak Krzysztof Materla

Procesory wielordzeniowe (multiprocessor on a chip) Krzysztof Banaś, Obliczenia wysokiej wydajności.

Budowa Mikrokomputera

dr inż. Jarosław Forenc

procesów Współbieżność i synchronizacja procesów Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

Procesory wielordzeniowe (multiprocessor on a chip) Krzysztof Banaś, Obliczenia wysokiej wydajności.

3.Przeglądarchitektur

4. Procesy pojęcia podstawowe

COMPUTER ORGANIZATION AND DESIGN The Hardware/Software Interface. Wprowadzenie do systemów wieloprocesorowych

Budowa komputera Komputer computer computare

USŁUGI HIGH PERFORMANCE COMPUTING (HPC) DLA FIRM. Juliusz Pukacki,PCSS

Metody optymalizacji soft-procesorów NIOS

Programowanie współbieżne... (1) Andrzej Baran 2010/11

PROGRAMOWANIE WSPÓŁCZESNYCH ARCHITEKTUR KOMPUTEROWYCH DR INŻ. KRZYSZTOF ROJEK

Programowanie w modelu równoległości danych oraz dzielonej globalnej pamięci wspólnej. Krzysztof Banaś Obliczenia równoległe 1

Co to jest lista top500. Omów mikrotechnologię Core

Jacek Naruniec. lato 2014, Politechnika Warszawska, Wydział Elektroniki i Technik Informacyjnych

Programowanie w modelu równoległości danych oraz dzielonej globalnej pamięci wspólnej. Krzysztof Banaś Obliczenia równoległe 1

HPC na biurku. Wojciech De bski

Obliczenia równoległe. Wojciech Kwedlo Wydział Informatyki PB pokój 205

Tesla. Architektura Fermi

Porównanie wydajności CUDA i OpenCL na przykładzie równoległego algorytmu wyznaczania wartości funkcji celu dla problemu gniazdowego

Larrabee GPGPU. Zastosowanie, wydajność i porównanie z innymi układami

Wydajność obliczeń równoległych. Krzysztof Banaś Obliczenia Wysokiej Wydajności 1

Programowanie niskopoziomowe. dr inż. Paweł Pełczyński

Programowanie z wykorzystaniem technologii CUDA i OpenCL Wykład 1

dr inż. Jarosław Forenc

Klasyfikacja systemów komputerowych. Architektura von Neumanna Architektura harwardzka Zmodyfikowana architektura harwardzka. dr inż.

Wstęp. Historia i przykłady przetwarzania współbieżnego, równoległego i rozproszonego. Przetwarzanie współbieżne, równoległe i rozproszone

Introduction to Computer Science

Wstęp do programowania równoległego

Alternatywne modele programowania równoległego

Architektura Komputerów

Procesy i wątki. Krzysztof Banaś Obliczenia równoległe 1

Podstawy programowania obliczeń równoległych

Architektura komputerów

SYSTEMY OPERACYJNE: STRUKTURY I FUNKCJE (opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX)

WYBRANE ZAGADNIENIA PRZETWARZANIA RÓWNOLEGŁEGO I ROZPROSZONEGO ORAZ KLASTRÓW KOMPUTEROWYCH

Architektura von Neumanna

Moc płynąca z kart graficznych

Pojęcia podstawowe. Oprogramowanie systemów równoległych i rozproszonych. Wykład 1. Klasyfikacja komputerów równoległych I

4. Procesy pojęcia podstawowe

Transkrypt:

Projekt Nowe metody nauczania w matematyce Nr POKL.09.04.00-14-133/11 Nowoczesne technologie przetwarzania informacji Mgr Maciej Cytowski (ICM UW) Lekcja 2: Podstawowe mechanizmy programowania równoległego w ramach Europejskiego Funduszu Społecznego

Programowanie równoległe Początki programowania równoległego to lata 1960 1970 Obecnie programowanie równoległe oparte jest na: znanych od dekad modeli programowania równoległego (MPI, OpenMP), nowych paradygmatów programowania równoległego (CUDA, OpenCL), językach przyszłości tworzonych dla przyszłych architektur komputerowych (X10, Chapel, Fortress). Znajomość technik programowania równoległego to obowiązek każdego programisty w ramach Europejskiego Funduszu Społecznego 2

Czym są obliczenia równoległe? Obliczenia równoległe to takie, w których wiele operacji obliczeniowych wykonuje się jednocześnie w ramach dostępnych jednostek obliczeniowych (procesorów, rdzeni, węzłów obliczeniowych). Bardzo często duże problemy obliczeniowe mogą być podzielone na mniejsze podproblemy, które mogą wykonywać się jednocześnie. Przez wiele lat obliczenia równoległe wykonywane były jedynie w branży HPC (High Performance Computing). Dzisiaj wiedza o programowaniu równoległym i umiejętności przeprowadzania równoległych obliczeń potrzebne są wszystkim w ramach Europejskiego Funduszu Społecznego 3

Ograniczenia programowania równoległego Jaką maksymalną wydajność może uzyskać nasz program, jeśli: użyjemy szybszego procesora, użyjemy kilku lub wielu procesorów. Odpowiedzi na takie pytania szukano w latach 60tych XX wieku. w ramach Europejskiego Funduszu Społecznego 4

Gene Amdahl Urodzony 16 listopada 1922 w USA w rodzinie skandynawskich imigrantów Architekt komputerowy w firmie IBM, pracujący nad systemami typu mainframe. Założyciel Amdahl Corporation. Bardzo znana publikacja: Validity of the single processor approach to achieving large scale computing capabilities, IBM Sunnyvale, California, AFIPS Spring Joint Computer Conference, 1967 Na podstawie pracy G.Amdahla sformułowane zostało jedno z najbardziej znanych praw w dziedzinie obliczeń równoległych Prawo to do dziś nazywane Prawem Amdahl'a wyraża ograniczenia w prowadzeniu obliczeń równoległych w ramach Europejskiego Funduszu Społecznego 5

Prawo Amdahl a Potencjalne możliwe przyśpieszenie S algorytmu o jest równe: n liczba procesów T1 S( n) T n F 1 1 F n T_ - czas wykonania algorytmu F udział części nierównoległej w ramach Europejskiego Funduszu Społecznego 6

http://en.wikipedia.org/wiki/parallel_computing w ramach Europejskiego Funduszu Społecznego 7

Krytyka prawa Amdahl a Prawo i teoria Amdahl a znalazła wielu krytyków Główny zarzut: prawo Amdahl a ma zastosowanie tylko dla aplikacji z niezmiennym rozmiarem zadania Maksymalne przyśpieszenie: 2x w ramach Europejskiego Funduszu Społecznego 8

Prawo Gustafsona (1988) S( P) P ( P 1) Każdy wystarczająco duży problem może być efektywnie zrównoleglony P ilość procesorów, S przyśpieszenie, alfa część programu, której nie da się zrównoleglić w ramach Europejskiego Funduszu Społecznego 9

Skalowalność Speed-up przyśpieszenie - stosunek czasu wykonania algorytmu i liczby użytych procesów skalowalność zmiana czasu wykonania programu mierzona dla zmiennej liczby procesorów lub zmiennego rozmiaru zadania program równoległy jest uznawany za optymalny gdy jego skalowalność jest bliska liniowej w zastosowaniach znane jest mało programów optymalnych dla liczby procesorów większej od kilkunastu Rodzaje skalowalności: Strong scalability stały rozmiar problemu, zmienna liczba procesów Weak scalability stała liczba procesów, zmienny rozmiar zadania w ramach Europejskiego Funduszu Społecznego 10

Model idealnego komputera równoległego PRAM = Parallel Random Access Machine n jednostek obliczeniowych oraz globalna jednorodna pamięć jednostki są sterowane wspólnym zegarem, ale mogą wykonywać różne instrukcje w każdym cyklu Model PRAM ignoruje wpływ i koszty komunikacji między komponentami komputera równoległego. Modele PRAM służą do projektowania i analizy algorytmów. Realizacja komputera typu PRAM dla dużej liczby n, jest technicznie bardzo złożona i kosztowna. w ramach Europejskiego Funduszu Społecznego 11

Taksonomia Flynna SISD = Single Instruction Single Data Klasyczny komputer skalarny wykonujący kolejne instrukcje, jedna po drugiej na pojedynczych danych SIMD = Single Instruction Multiple Data Procesor / komputer potrafi wykonać pojedynczą instrukcję dla całego potoku (wektora) danych (procesor wektorowy) Zakłada równoległość danych MISD = Multiple Instruction Single Data Komputer potrafi wykonać jednocześnie zbiór instrukcji na jednej danej MIMD = Multiple Instruction Multiple Data Zbiór procesorów może wykonywać równolegle i niezależnie instrukcje na wielu danych Najczęściej spotykana forma równoległości sprzętowej w ramach Europejskiego Funduszu Społecznego 12

Rozszerzenia modelu MIMD SPMD = Single Program Multiple Data pojedynczy program jest uruchamiany w wielu kopiach na różnych zestawach danych najbardziej rozpowszechniony sposób tworzenia programów równoległych MPMD = Multiple Program Multiple Data wiele niezależnych procesorów wykonuje równolegle różne programy w ramach Europejskiego Funduszu Społecznego 13

Współczesne typy architektur równoległych Modele, języki oraz mechanizmy programowania równoległego są ściśle związane z typem architektury równoległej. Przedstawione zostaną podstawowe typy architektur. w ramach Europejskiego Funduszu Społecznego 14

Model pamięci współdzielonej Procesory współdzielą globalną przestrzeń adresową Technologia: ograniczona liczba procesorów Szybka komunikacja i synchronizacja Równoległe typy danych: shared, private Ochrona dostępu do danych współdzielonych Komunikacja poprzez zmienne współdzielone Równoległe wątki Modele programowania: OpenMP, Pthreads, OpenCL w ramach Europejskiego Funduszu Społecznego 15

Model pamięci współdzielonej Procesory operują na prywatnej, lokalnej pamięci Technologia: duża liczba procesorów Mechanizmy komunikacji i synchronizacji Operowanie na danych lokalnych Komunikacja poprzez połączenie sieciowe Koszt komunikacji rośnie z liczbą procesorów Równoległe procesy Modele programowania: MPI Obecnie wiele architektur to architektury o równoległości hierarchicznej. Węzły obliczeniowe są wielordzeniowe. Popularny model programowania to MPI + OpenMP. w ramach Europejskiego Funduszu Społecznego 16

Model obliczeń akcelerowanych (hybrydowych) Węzły obliczeniowe wyposażone są w dodatkowe akceleratory (np. karty graficzne) Technologia: duża liczba węzłów wyposażonych w 1-4 kart GPU Mechanizmy odciążania czasochłonnych obliczeń na akceleratorach Skomplikowane modele programowania Ograniczenia komunikacji CPU - GPU Modele programowania: CUDA, OpenCL, HMPP w ramach Europejskiego Funduszu Społecznego 17

Mechanizmy programowania równoległego Zaprojektowanie wydajnego algorytmu równoległego wymaga znajomości podstawowych mechanizmów dostępnych w modelach równoległych. Przedstawione zostaną podstawowe mechanizmy programowania równoległego. w ramach Europejskiego Funduszu Społecznego 18

Mechanizmy podział zadania Dekompozycja problemu - podział na podproblemy metoda i sposób podziału determinuje typ równoległości Stopień i schemat zależności podproblemów prowadzi do projektu algorytmu Gdy znamy zależności pomiędzy podproblemami: wybieramy model algorytmu odpowiednią architekturę komputera równoległego Interesuje nas poprawne i szybkie rozwiązanie problemu w ramach Europejskiego Funduszu Społecznego 19

Mechanizmy - komunikacja Obliczenia realizowane równolegle na kilku komputerach w ramach jednego algorytmu często wymagają wymiany informacji Komunikacja realizowana jest poprzez wywołanie funkcji, która definiuje nadawcę, odbiorcę oraz typ i rodzaj wiadomości Istnieje wiele rodzajów komunikacji: Komunikacja punkt-punkt (synchroniczna i asynchroniczna) Komunikacja wspólna (np. redukcja, wszyscy-do-wszystkich) Pokazana w kolejnej lekcji na przykładzie biblioteki MPI (Message Passing Interface). w ramach Europejskiego Funduszu Społecznego 20

Mechanizmy - synchronizacja Obliczenia realizowane równolegle na kilku komputerach w ramach jednego algorytmu często wymagają zapewnienia, że wszystkie procesy realizują ten sam fragment algorytmu Synchronizacja realizowana jest poprzez wywołanie funkcji, która: blokuje wykonanie procesów równoległych, zwalnia blokadę w momencie gdy wszystkie procesy wywołały tą funkcję. Pokazana w kolejnej lekcji na przykładzie biblioteki MPI (Message Passing Interface). w ramach Europejskiego Funduszu Społecznego 21

Mechanizmy ochrona dostępu Obliczenia realizowane na architekturach o pamięci współdzielonej często operują na tzw. zmiennych współdzielonych Należy unikać sytuacji, w których jeden wątek odczytuje wartość zmiennej podczas gdy drugi realizuje zmianę wartości tej zmiennej Do ochrony dostępu służą różnego rodzaju mechanizmy: zamki, określanie zmiennych atomowych oraz regionów krytycznych. Pokazana w kolejnej lekcji na przykładzie OpenMP. w ramach Europejskiego Funduszu Społecznego 22

Mechanizmy - akceleracja Obliczenia na architekturach wyposażonych dodatkowo w akceleratory (np. karty graficzne) Wybieranie najbardziej obciążających obliczeniowo fragmentów programu i programowanie ich wykonania na dostępnym akceleratorze. Programowanie takich architektur jest trudne i czasochłonne. w ramach Europejskiego Funduszu Społecznego 23

Mechanizmy - równoważenie obciążenia (ang. load balancing) Load balancing = podział obliczeń pomiędzy dostępne procesory Aby zminimalizować czas wykonania programu równoległego należy zapewnić równomierne rozłożenie obliczeń. Nierówny podział obliczeń pomiędzy procesami prowadzi do niskiej skalowalności programu. w ramach Europejskiego Funduszu Społecznego 24