Programowanie Rozproszone i Równoległe

Podobne dokumenty
Programowanie systemów z pamięcią wspólną specyfikacja OpenMP. Krzysztof Banaś Obliczenia równoległe 1

Przetwarzanie Równoległe i Rozproszone

Wsparcie dla OpenMP w kompilatorze GNU GCC Krzysztof Lamorski Katedra Informatyki, PWSZ Chełm

Komputerowe Obliczenia Równoległe: Wstęp do OpenMP i MPI

16. Taksonomia Flynn'a.

Wprowadzenie do OpenMP

Budowa komputera. Magistrala. Procesor Pamięć Układy I/O

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

System obliczeniowy laboratorium oraz. mnożenia macierzy

Sprzęt komputerowy 2. Autor prezentacji: 1 prof. dr hab. Maria Hilczer

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

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

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

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

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

OpenMP. Programowanie aplikacji równoległych i rozproszonych. Wykład 2. Model programowania. Standard OpenMP. Dr inż. Tomasz Olas

Sprzęt komputerowy 2. Autor prezentacji: 1 prof. dr hab. Maria Hilczer

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

Wprowadzenie do zrównoleglania aplikacji z wykorzystaniem standardu OpenMP

Elementy składowe: Przenośność oprogramowania Model SPMD Szczegółowe wersje (bindings) dla różnych języków programowania

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

4. Procesy pojęcia podstawowe

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

4. Procesy pojęcia podstawowe

Przetwarzanie wielowątkowe przetwarzanie współbieżne. Krzysztof Banaś Obliczenia równoległe 1

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

O superkomputerach. Marek Grabowski

Architektura Systemów Komputerowych. Rozwój architektury komputerów klasy PC

Wydajność systemów a organizacja pamięci. Krzysztof Banaś, Obliczenia wysokiej wydajności. 1

Wprowadzenie do programowania współbieżnego

Budowa komputera. Magistrala. Procesor Pamięć Układy I/O

Programowanie Współbieżne

4. Procesy pojęcia podstawowe

Nowinki technologiczne procesorów

Programowanie współbieżne Wstęp do OpenMP. Rafał Skinderowicz

Open MP wer Rafał Walkowiak Instytut Informatyki Politechniki Poznańskiej Wiosna

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

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

RDZEŃ x86 x86 rodzina architektur (modeli programowych) procesorów firmy Intel, należących do kategorii CISC, stosowana w komputerach PC,

Przygotowanie kilku wersji kodu zgodnie z wymogami wersji zadania,

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

1 Podstawowe definicje i pojęcia współbieżności

Zaawansowane programowanie w C++ (PCP)

Przykładem jest komputer z procesorem 4 rdzeniowym dostępny w laboratorium W skład projektu wchodzi:

Obliczenia Wysokiej Wydajności

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

Programowanie maszyn z pamięcią wspólną w standardzie OpenMP.

Obliczenia Wysokiej Wydajności

dr inż. Jarosław Forenc

Programowanie współbieżne Wykład 7. Iwona Kochaoska

Algorytmy i Struktury Danych

Projektowanie oprogramowania systemów PROCESY I ZARZĄDZANIE PROCESAMI

Podstawy informatyki. System operacyjny. dr inż. Adam Klimowicz

Wprowadzenie do systemów operacyjnych

Program jest więc strukturą statyczną zapisaną na jakimś nośniku. Natomiast proces jest wykonującym się programem.

Architektury Komputerów. Tomasz Dziubich p.530, konsultacje czwartek i 11-12, dziubich@eti.pg.gda.pl

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

Programowanie współbieżne OpenMP wybrane wydajność. Rafał Skinderowicz

Wstęp do programowania 2

Nowoczesne technologie przetwarzania informacji

Wyklad 11 Języki programowania równoległego

Programowanie procesorów graficznych GPGPU

Programowanie maszyn z pamięcią wspólną w standardzie OpenMP.

Programowanie I. O czym będziemy mówili. Plan wykładu nieco dokładniej. Plan wykładu z lotu ptaka. Podstawy programowania w językach. Uwaga!

Przetwarzanie Rozproszone i Równoległe

Wykorzystanie architektury Intel MIC w obliczeniach typu stencil

Modele programowania równoległego. Pamięć współdzielona Rafał Walkowiak dla III roku Informatyki PP

Architektura mikroprocesorów TEO 2009/2010

Architektura komputera wg Neumana

PRZETWARZANIE RÓWNOLEGŁE I ROZPROSZONE. Mnożenie macierzy kwadratowych metodą klasyczną oraz blokową z wykorzystaniem OpenMP.

ξ II.UWr Wprowadzenie do STM

Tesla. Architektura Fermi

Architektura komputerów

Układ sterowania, magistrale i organizacja pamięci. Dariusz Chaberski

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

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE

HPC na biurku. Wojciech De bski

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Programowanie współbieżne Wykład 1. Rafał Skinderowicz

Architektura komputerów

Podstawy Informatyki Systemy sterowane przepływem argumentów

Nowinki technologiczne procesorów

Programowanie współbieżne Wykład 1. Rafał Skinderowicz

Programowanie komputerów

Metody optymalizacji soft-procesorów NIOS

Od uczestników szkolenia wymagana jest umiejętność programowania w języku C oraz podstawowa znajomość obsługi systemu Windows.

Mariusz Rudnicki PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO CZ.1

PROCESOR Z ODBLOKOWANYM MNOŻNIKIEM!!! PROCESOR INTEL CORE I7 4790K LGA1150 BOX

5. Model komunikujących się procesów, komunikaty

Open MP wer Rafał Walkowiak Instytut Informatyki Politechniki Poznańskiej Jesień 2014

Java - wprowadzenie. Programowanie Obiektowe Mateusz Cicheński

Systemy operacyjne. Paweł Pełczyński

OWS1 (systemy z pamięcią współdzieloną) Rafał Walkowiak Wersja: wiosna 2017

Programowanie współbieżne i rozproszone

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

Wydajność systemów a organizacja pamięci. Krzysztof Banaś, Obliczenia wysokiej wydajności. 1

PRZEWODNIK PO PRZEDMIOCIE

Programowanie maszyn z pamięcią wspólną w standardzie OpenMP ciąg dalszy.

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.

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Transkrypt:

Programowanie Rozproszone i Równoległe OpenMP (www.openmp.org) API do pisania wielowątkowych aplikacji Zestaw dyrektyw kompilatora oraz procedur bibliotecznych dla programistów Ułatwia pisanie programów wielowątkowych (multithreded, MT) w Fortranie, C, C++ Rozwijane i standaryzowane od ponad 20 lat

Prawo Moore a

Sprzęt / Oprogramowanie Pisz swoje oprogramowanie według uznania, a twórcy sprzętu zadbają o wydajność. Efekt: generacje inżynierów-ignorantów oprogramowania, używających upośledzonych wydajnościowo języków programowania (Java) co było OK, dopóki myślenie o wydajności spoczywa po stronie sprzętu.

power wall Wzrost zużycia mocy https://en.wikipedia.org/wiki/list_of_cpu_power_dissipation_figures

Moc procesora C Pojemność miara zdolności obwodu do magazynowania energii C = q/v q = CV C pojemność V napięcie f częstotliwość W - moc W Praca: przeniesienie ładunku q poprzez różnicę potencjału (od 0 do V): W = q * V Dla obwodu q = CV zatem W = CV 2 P Moc to praca wykonana w jednostce czasu (f częstotliwość) P = W * f P = CV 2 f

C pojemność V napięcie f częstotliwość W - moc Dodawanie rdzeni

Nowe zasady hardware / software + Twórcy sprzętu dostarczają coraz więcej rdzeni, twórcy oprogramowania muszą się dostosować (wszystko przepisać). Nie ma alternatywy.

Współbieżność vs równoległość Współbieżność (concurrency) stan układu, w którym wiele zadań jest w logicznym stanie aktywności w tym samym czasie Równoległość (parallelism) stan układu, w którym wiele zadań rzeczywiście wykonywanych jest w tym samym czasie

Współbieżne równoległe aplikacje Aplikacja współbieżna: aplikacja, dla której obliczenia są logicznie wykonywane równocześnie ze względu na semantykę aplikacji. Problem jest zasadniczo współbieżny. Aplikacja równoległa: aplikacja, dla której obliczenia są wykonywane jednocześnie, aby ukończyć problem w krótszym czasie. Problem z natury nie wymaga współbieżności... ale można go opracować sekwencyjnie.

Dostosowanie programu

OpenMP

Definicje OpenMP

Składnia OpenMP Większość konstrukcji w OpenMP to dyrektywy kompilujące. #pragma omp construct [clause [clause] ] Przykład: #pragma omp parallel num_threads(4) Prototypy funkcji i typy w pliku nagłówkowym: #include <omp.h> Większość konstrukcji OpenMP stosuje się do "bloku strukturalnego". Blok strukturalny: blok jednej lub więcej instrukcji z jednym punktem wejścia na początku i jednym punktem wyjścia na końcu. exit() może wystąpić wewnątrz bloku strukturalnego

Hello world Zaczniemy od trywialnego programu w Języku C W zależności od kompilatora, należy dodać odpowiednie opcje oraz ustawić zmienne systemowe. Przykład dla popularnego kompilatora gcc gcc main.c -o program uruchomienie (linux):./program

Hello world wraz z OpenMP Dodajemy odpowiednie znaczniki #pragma Liczba wątków: omp_get_num_threads() Sprawdzimy, co się dzieje, gdy zmieniamy wartość OMP_NUM_THREADS oraz ID gcc -fopenmp main.c -o program oraz ustawiamy zmienną export OMP_NUM_THREADS=4

Hello world wraz z OpenMP Wersja programu w Języku C++ Klauzula: zamiast wartości 5 może być też zmienna. num_threads(5) g++ -fopenmp main.cc -o program (można też: export OMP_NUM_THREADS=4 )

Liczba wątków w OpenMP Kilka sposobów ustawienia liczby wątków: Zmienna systemowa (środowiskowa) OMP_NUM_THREADS Funkcja biblioteczna omp_set_num_threads( int ) Klauzula num_threads( int ) Zasada: im bliżej bloku równoległego następuje ustawienie liczby wątków, tym jest ono ważniejsze (najdalej zmienna środowiskowa, najbliżej klauzula).

Komputery z pamięcią współdzieloną Komputer z pamięcią współdzieloną (shared): dowolny komputer złożony z wielu elementów przetwarzających, które współdzielą przestrzeń adresową. Dwie klasy: Symetryczny procesor (symmetric multiprocessor) wieloprocesowy (SMP): wspólna przestrzeń adresowa z dostępem równoczasowym dla każdego procesora, gdzie system operacyjny traktuje każdy proces w ten sam sposób Procesor z niejednolitą przestrzenią adresową (Non Uniform address space pocessor, NUMA): różne obszary pamięci mają różne koszty dostępu... można przedstawić to jako pamięć podzieloną na pamięć "Blisko" i "Daleko"

Shared Memory Machines: SMP Cray-2... ostatni komputer SMP na dużą skalę Wyprodukowany w 1985 roku z 4- calowymi głowicami: 1,9 GFLOPS szczytowej wydajności (najszybszy superkomputer na świecie do 1990 r.). Jednostki wektorowe w każdej "głowicy" miały równorzędny dostęp do pamięci zorganizowanej w bankach w celu obsługi równoległego dostępu do pamięci o dużej przepustowości

Intel Core i7-970: SMP? 6 cores, 2-way multithreaded, 6-wide superscalar, quad-issue, 4-wide SIDM (on 3 of 6 pipelines) 4.5 KB (6 x 768 B) Architectural Registers, 192 KB (6 x 32 KB) L1 Cache, 1.5 MB (6 x 256 KB) L2 cache, 12 MB L3 Cache 1.17 Billion Transistors on 32 nm process @ 2.6 GHz Hierarchia pamięci podręcznej oznacza, że różne procesy mają różne koszty dostępu do różnych zakresów adresowych to jest własność procesorów NUMA

Komputery z pamięcią współdzieloną Współdzielone komputery pamięci są wszędzie... większość laptopów i serwerów ma wielordzeniowe procesory wieloprocesorowe Wspólna przestrzeń adresowa i modele programowania zachęcają nas do myślenia o nich w systemach SMP Rzeczywistość jest bardziej złożona... każdy procesor wieloprocesorowy z pamięcią podręczną jest systemem NUMA. Zaczniemy od traktowania systemu jako SMP, ale ze świadomością, że wiele prac optymalizacyjnych może się z tego powodu nie powieść

Programowanie (shared memory) Proces: Instancja wykonywanego programu Zawartość wykonawcza działającego programu, tj. zasoby związane z wykonaniem programu

Programowanie (shared memory) Proces: System Operacyjny dzieli proces na wątki (poprzez defragmentację stosu) Każdy wątek ma swój kawałek stosu, ale współdzielą np. Text, Data, Heap (stertę) Wątki udostępniają stan procesu wielu wątkom. To znacznie zmniejsza koszt przełączania kontekstu

Pamięć współdzielona Przykład programu: jeden proces i wiele wątków wątki współpracują poprzez czytanie/zapis w pamięci współdzielonej Planer S.O. decyduje który wątek kiedy jest wykonywany Synchronizacja: zapewnienie, że każda kolejność wykonania wątków da poprawny wynik

OpenMP: współpraca wątków OpenMP to model wielowątkowego, współdzielonego adresowania wątki komunikują się poprzez dzielenie zmiennych Niezamierzone udostępnianie danych powoduje warunki wyścigu stan wyścigu: kiedy wynik programu zmienia się, gdy wątki są zaplanowane inaczej Aby kontrolować warunki wyścigu użyj synchronizacji, aby chronić przed konfliktem danych Synchronizacja jest kosztowna zmień sposób dostępu do danych, aby zminimalizować potrzebę synchronizacji

OpenMP: uwagi OpenMP nie zmodyfikuje za nas kodu źródłowego To nie jest automatyczne zrównoleglanie algorytmu OpenMP zrobi tylko to, co mu każe za pomocą dyrektyw programista OpenMP nie odpowiada za błędy. Używasz na własne ryzyko! Wynik pracy programu może zależeć od liczby użytych wątków i w szczególności może być błędny!