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

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

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

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

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

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

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

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

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

Obliczenia Wysokiej Wydajności

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

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

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.

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

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

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

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

Algorytmy i Struktury Danych

PRZEWODNIK PO PRZEDMIOCIE

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

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

i3: internet - infrastruktury - innowacje

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

Obliczenia Wysokiej Wydajności

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

O superkomputerach. Marek Grabowski

GRIDY OBLICZENIOWE. Piotr Majkowski

Systemy operacyjne i sieci komputerowe Szymon Wilk Superkomputery 1

Programowanie współbieżne i rozproszone

Nowoczesne technologie przetwarzania informacji

INŻYNIERIA OPROGRAMOWANIA

Poziom kwalifikacji: I stopnia. Liczba godzin/tydzień: 2W E, 2L PRZEWODNIK PO PRZEDMIOCIE

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

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

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

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

Programowanie Rozproszone i Równoległe

Wykorzystanie architektury Intel MIC w obliczeniach typu stencil

Technika mikroprocesorowa. Linia rozwojowa procesorów firmy Intel w latach

Wprowadzenie do programowania współbieżnego

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

Wydajność systemów a organizacja pamięci, czyli dlaczego jednak nie jest aż tak źle. Krzysztof Banaś, Obliczenia wysokiej wydajności.

Architektura mikroprocesorów TEO 2009/2010

Programowanie z wykorzystaniem technologii CUDA i OpenCL Wykład 1

Zaawansowane programowanie w języku C++

Systemy operacyjne III

Budowa Mikrokomputera

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

Zagadnienia egzaminacyjne INFORMATYKA. stacjonarne. I-go stopnia. (INT) Inżynieria internetowa STOPIEŃ STUDIÓW TYP STUDIÓW SPECJALNOŚĆ

Programowanie procesorów graficznych GPGPU

Wykład Ćwiczenia Laboratorium Projekt Seminarium

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

Opis efektów kształcenia dla modułu zajęć

Architektura komputerów

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

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

Bibliografia: pl.wikipedia.org Historia i rodzaje procesorów w firmy Intel

Procesory. Schemat budowy procesora

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

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

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

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

Raport Hurtownie Danych

Tesla. Architektura Fermi

Program Obliczeń Wielkich Wyzwań Nauki i Techniki (POWIEW)

Składowanie, archiwizacja i obliczenia modelowe dla monitorowania środowiska Morza Bałtyckiego

PRZEWODNIK PO PRZEDMIOCIE

XIV International PhD Workshop OWD 2012, October 2012 NOWOCZESNE TECHNIKI WYKONYWANIA ZAAWANSOWANYCH OBLICZEŃ NUMERYCZNYCH

Numeryczna algebra liniowa

Przetwarzanie Rozproszone i Równoległe

System obliczeniowy laboratorium oraz. mnożenia macierzy

Programowanie procesorów graficznych NVIDIA (rdzenie CUDA) Wykład nr 1

Dydaktyka Informatyki budowa i zasady działania komputera

Maciej Sypniewski. lato 2014, Politechnika Warszawska, Wydział Elektroniki i Technik Informacyjnych

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

Nowinki technologiczne procesorów

Modelowanie procesów współbieżnych

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

16. Taksonomia Flynn'a.

Klasyfikacja sprzętu i oprogramowania nowoczesnego banku. Informatyka bankowa, AE w Poznaniu, dr Grzegorz Kotliński

Egzamin / zaliczenie na ocenę*

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

CUDA Median Filter filtr medianowy wykorzystujący bibliotekę CUDA sprawozdanie z projektu

Przygotowanie kilku wersji kodu zgodnie z wymogami wersji zadania,

INŻYNIERIA OPROGRAMOWANIA

Zał nr 4 do ZW. Dla grupy kursów zaznaczyć kurs końcowy. Liczba punktów ECTS charakterze praktycznym (P)

SYLABUS DOTYCZY CYKLU KSZTAŁCENIA realizacja w roku akademickim 2016/2017

SYLABUS DOTYCZY CYKLU KSZTAŁCENIA realizacja w roku akademickim 2016/2017

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

SYSTEMY OPERACYJNE WYKŁAD 1 INTEGRACJA ZE SPRZĘTEM

Budowa i użytkowanie klastrów w opaciu o układy Cell BE oraz GPU

Architektura komputerów

Nowinki technologiczne procesorów

MESco. Testy skalowalności obliczeń mechanicznych w oparciu o licencje HPC oraz kartę GPU nvidia Tesla c2075. Stanisław Wowra

Wprowadzenie. Klastry komputerowe. Superkomputery. informatyka +

Zagadnienia egzaminacyjne INFORMATYKA. Stacjonarne. I-go stopnia. (INT) Inżynieria internetowa STOPIEŃ STUDIÓW TYP STUDIÓW SPECJALNOŚĆ

PRZEWODNIK PO PRZEDMIOCIE

Analiza ilościowa w przetwarzaniu równoległym

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

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

Transkrypt:

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

Wprowadzenie

Plan wykładu Historia, znaczenie i cele współbieżności w informatyce. Podstawowe pojęcia, prawo Moore a i bariery technologiczne. Sposoby realizacji współbieżnego wykonywania programów. Własności bezpieczeństwa i żywotności programów współbieżnych. Problem wzajemnego wykluczania i sposoby jego rozwiązania - programowe oraz sprzętowe. Algorytmy synchronizacyjne. 2

Plan wykładu cd. Współbieżne struktury danych Alternatywne modele współbieżności. Przestrzenie krotek, notacja Linda, pamięć transakcyjna. Podstawy programowania współbieżnego w środowisku rozproszonym. Algorytmy wzajemnego wykluczania rozproszonego, rozproszone algorytmy uzgadniania. Modele obliczeń równoległych. Miary oceny algorytmów równoległych. Wprowadzenie do OpenMP 3

Literatura w języku polskim 1. Ben-Ari M., Podstawy programowania współbieżnego i rozproszonego, WNT. 2. Herlihy M., Shavit N., Sztuka programowania wieloprocesorowego, PWN. 3. Czech Z., Wprowadzenie do obliczeń równoległych, PWN. 4. Goetz B. i inni, Java. Współbieżność dla praktyków, Helion. 5. Horstmann C. S., Cornell G., Java. Techniki zaawansowane, Helion. 4

Literatura w języku angielskim 1. Pacheco P., Parallel Programming with MPI, Morgan Kaufmann, 1996. 2. Quinn M. J., Parallel Programming in C with Mpi and OpenMP, McGraw-Hill Education, 2008. 5

Motywacje Kiedyś (lata 90 i wcześniej) większość komputerów typu desktop miała pojedynczy procesor Rysunek 1: Intel Pentium 100 MHz CPU. Autor Janne Karaste. Komputery wieloprocesorowe były drogie i niedostępne dla przeciętnego Kowalskiego wykorzystywane głównie przez duże instytucje, które mogły sobie na nie pozwolić 6

Motywacje Obecnie dzięki procesorom wielordzeniowym każdy ma dostęp do równoległości co więcej jesteśmy na nią skazani ze względu na bariery technologiczno / fizyczne Rysunek 2: Quad-Core AMD Opteron, 2008, Advanced Micro Devices, Inc. (AMD) 7

Motywacje 2016 Rysunek 3: Intel Xeon E7 v4, 24 rdzenie, 60 MB cache. Dla zastosowań serwerowych. 8

GPU Współcześnie możliwości wykonywania obliczeń równoległych nie ograniczają się tylko do CPU od kilku lat możliwe jest wykonywanie obliczeń na GPU Rysunek 4: Nvidia Tesla K40, moc 1.43TFLOPS, 2880 CUDA cores Dla porównania Core i7 975 (3.33GHz) ok. 52 GFLOPS 9

GPU 2016 Rysunek 5: Tesla P100, 3584 rdzenie CUDA, moc 5.3TFLOPS oraz 10.6 TFLOPS dla obl. zmiennoprzecinkowych pojedynczej precyzji, przepustowość pamięci 720 GB/s, TDP 300W (źródło Nvidia). 10

Historia Początki programowania współbieżnego to lata 60 XX wieku Pojawienie się kontrolerów dla urządzeń we/wy, które mogły wykonywać operacje równolegle do obliczeń wykonywanych przez CPU Komunikacja między urządzeniami we/wy a CPU za pomocą przerwań przestań wykonywać bieżący program i zacznij wykonywać inną sekwencję instrukcji wielozadaniowość Przerwania mogą zdarzyć się w dowolnym momencie Początek lat 70 pierwsze komputery wieloprocesorowe (D825 w 1962 r., 4-procesory) 11

Zastosowania komputerów równoległych Podstawowa motywacja dla powstania komputerów równoległych to: znaczne skrócenie czasu obliczeń rozwiązywanie problemów o większych rozmiarach danych Przykładowe zastosowania: symulacje reakcji chemicznych symulacje meteorologiczne prognozowanie pogody obronność symulacje zastosowania broni symulacje eksplozji jądrowych prognozowanie zmian klimatycznych analiza sekwencji DNA modelowanie struktur białek astrofizyka projektowanie leków 12

Miary wydajności komputerów Wydajność obliczeniową komputerów mierzy się w jednostkach liczby operacji wykonywanych w ciągu sekundy FLOPS liczba operacji zmiennoprzecinkowych wykonywanych w ciągu sekundy (FLoating point Operations Per Second) Wielokrotności: MFLOPS = 10 6 (lata 60) GFLOPS = 10 9 (Cray-2 1985 r.) TFLOPS = 10 12 (IntelASCIRed, 1997r.) PFLOPS = 10 15 (IBM Roadrunner, 2008 r.) EFLOPS = 10 18 (do 2020?) MIPS liczba milionów operacji stałoprzecinkowych wykonywanych w ciągu sekundy 13

TOP500 Projekt TOP500 (www.top500.org) od 1993 publikuje listę najszybszych superkomputerów na świecie na podstawie testów wykorzystujących m.in. oprogramowanie do obliczeń numerycznych z dziedziny algebry liniowej. Rysunek 6: Komputer Roadrunner, University of California, Los Alamos National Laboratory, USA 14

TOP500 cd. W listpadzie 2012 najszybszym komputerem był Titan wyprodukowany przez Cray i zainstalowany w DOE/SC/Oak Ridge National Laboratory. Ma moc 17.59 PFLOPS (17.59 10 15 ) Teoretycznie maks. 27 PFLOPS Architektura: 18,688 AMD Opteron 6274 16-core CPUs 18,688 Nvidia Tesla K20X GPUs Jego zużycie energii wynosi 8.2 MW. Koszt: 97 mln $ Powierzchnia 404 m 2 Dla porównania: Pierwszy komercyjny komputer, UNIVAC I (1952 r.), miał moc ok. 1 KFLOPS (10 3 ), czyli był ponad 10 16 razy wolniejszy 15

TOP500 cd. W czerwcu 2013 roku najszybszym komputerem był Tianhe-2 (ang. Skyriver-2) - superkomputer stworzony dla potrzeb Uniwersytetu Technologii Obronnych w Chinach. Używany do symulacji, analiz dotyczących bezpieczeństwa Ma moc 33.86 PFLOPS (33.86 10 15 ) 16000 węzłów, 3120000 rdzeni - Intel Xeon E5-2692 12C 2.2 GHz Zapotrzebowanie na energię: 17,8 MW Pamięć 1024000 GB System: Kylin Linux 16

TOP500 2016 W czerwcu 2016 r. najszybszym komputerem został chiński Sunway TaihuLight Ma moc (wg. testu LINPACK) ok. 93 PFLOPS (93 10 15 ) 40960 węzłów z 10669600 rdzeni Procesory z 256 rdzeniami w architekturze RISC Pamięć 1310720 GB Zapotrzebowanie na energię 15.37MW, ok. 6 GFLOPS/W System operacyjny Sunway RaiseOS 2.0.5 Koszt ok. 273 mln. $ 17

Prawo Moore a Prawo Moore a opisuje trend w historii rozwoju mocy obliczeniowej komputerów moc komputerów podwaja się co 18 miesięcy. Obserwacja ta została poczyniona przez założyciela firmy Intel G. E. Moore a, który przedstawił ją w 1965 r. Trend ten utrzymywał się przez ponad pół wieku, jednak ze względu na bariery technologiczne uległ spowolnieniu. Rysunek 8: Gordon Moore 18

Prawo Moore a cd. Liczba tranzystorów Data wprowadzenia Rysunek 9: Wzrost liczby tranzystorów w procesorach w latach 1971 2011 19

Prawo Moore a bariery Tranzystor nie może być mniejszy od atomu Prędkość światła jest ograniczona Przykładowo, procesor o mocy 1 TFLOPS może wykonywać 10 12 operacji na sek. pod warunkiem, że pobierze dane z pamięci. Zakładając, że słowo danych ma być dostarczane w każdym cyklu, to droga jaką może pokonać w tym czasie światło wynosi 3 10 8 [m/s] 10 12 [s] = 0, 0003m, czyli 0,3 mm! Procesor Pamięć (1 TFLOPS) 0,3 mm (1 TB) Problemem jest nie tylko upakowanie elementów, ale również dostarczenie odpowiedniej ilości energii oraz odprowadzenie 20

Prawo Moore a c.d. Gdy nie można skrócić czasu trwania cyklu (zwiększyć taktowania procesora), pozostaje zwiększyć liczbę wykonywanych w tym samym czasie operacji zrównoleglenie. Równoległość na poziomie procesora: Szersze magistrale i liczba bitów w rejestrach procesora (8, 16, 32, 64 bity) równoległość na poziomie bitów Na poziomie instrukcji równoległe wykonywanie więcej, niż jednego rozkazu w tym samym czasie przetwarzanie potokowe. Procesory wielordzeniowe przetwarzanie wielu wątków w tym samym czasie Komputery równoległe wymagają programów równoległych 21

Postęp technologiczny a rozwój oprogramowania Postęp technologiczny stwarza nowe możliwości, ale i nowe problemy. To put it quite bluntly: as long as there were no machines, programming was no problem at all; when we had a few weak computers, programming became a mild problem, and now we have gigantic computers, programming has become an equally gigantic problem. E. Dijkstra, 1972 Turing Award Lecture 22

Lata 60 i 70 Programowanie w językach asemblerowych Wzrost mocy obliczeniowej powodował, że komputery mogły rozwiązywać bardziej złożone zadania konieczność zastosowania bardziej złożonego oprogramowania Problem z przenośnością oprogramowania potrzeba języków programowania o wyższym stopniu abstrakcji bez utraty wydajności Rozwiązanie: języki wysokiego poziomu, takie jak Fortran i C 23

Lata 80 i 90 Problem: trudność w tworzeniu i utrzymaniu złożonych aplikacji wymagających milionów linii kodu pisanych przez setki programistów Rozwój komputerów osobistych i ich mocy obliczeniowej dodatkowo zwiększył zapotrzebowanie na oprogramowanie Wydajność komputerów nie była problemem dzięki prawu Moore a Rozwiązanie: języki obiektowe takie jak C++, Java, C# Lepsze narzędzia: środowiska programistyczne, biblioteki Rozwój metodologii tworzenia oprogramowania: wzorce projektowe, odpowiednie dokumentowanie, testowanie (jednostkowe, integracyjne i inne) 24

Współcześnie Programiści mogą tworzyć oprogramowanie bez konieczności dogłębnej znajomości sprzętu, dostępne języki programowania i biblioteki zapewniają wysoki poziom abstrakcji Problem: wcześniej, by program działał szybciej wystarczyło poczekać na nowszy procesor o większej częstotliwości taktowania Obecnie uzyskania wydajności zgodnej z prawem Moore a wymaga wyjścia poza programowanie sekwencyjne wzrost taktowania procesorów uległ spowolnieniu rośnie liczba rdzeni w procesorach konieczność stworzenia oprogramowania korzystającego z większej liczby wątków w tym samym czasie 25

Cele programowania współbieżnego 1. Większa wydajność: jeżeli mamy do dyspozycji 4 rdzenie procesora, a program wykorzystuje jedynie jeden, to 75% mocy pozostaje niewykorzystane a co jeżeli mielibyśmy do dyspozycji komputer ze 100 procesorami? większa przepustowość we/wy jeżeli program jest jednowątkowy i korzysta z urządzeń we/wy, to często musi czekać bezczynnie, aż urządzenie prześle mu dane; program wielowątkowy może w tym czasie pobierać dane z wielu źródeł lub wykonywać inne operacje 2. Prostota modelowania niektóre problemy można podzielić na podzadania, które mogą być wykonywane niezależnie od siebie, np. serwer www 26

Cele programowania współbieżnego c.d. 3. Większa responsywność (płynność) programu wykonywanie intensywnych obliczeniowo zadań w osobnych wątkach, a nie w wątku GUI 4. Uproszczona obsługa asynchronicznych zdarzeń np. komunikacja przez gniazdka sieciowe wymaga czekania na odpowiedź (ang. blocking I/O). W aplikacji wielowątkowej każde komunikacja może być obsługiwana w osobnych wątkach, po jednym na połączenie 5. Systemy operacyjne udostępniają również biblioteki do nieblokującej obsługi I/O (ang. nonblocking I/O), niemniej jednak zastosowanie wątków + blokującego I/O może być wygodniejsze 27

Przykładowe narzędzia i biblioteki C/C++ brak obsługi wielowątkowości w standardzie aż do C++0x z 2011 r. biblioteka POSIX Threads (pthreads) Windows Threads boost (Asio, Thread, Interprocess) Java obsługa wielowątkowości od początku, zdefiniowany model pamięci uwzględniający wykonanie wielowątkowe, bogata biblioteka standardowa MPI Message Passing Interface protokół komunikacyjny przesyłania komunikatów między procesami w programach równoległych najpopularniejszy standard na superkomputerach wysoka wydajność i skalowalność implementacja dla wielu języków programowania (C, C++, Ada, Fortran, C#) brak obsługi wielowątkowości 28

Przykładowe narzędzia i biblioteki, c.d. OpenMP interfejs służący do tworzenia programów równoległych dla komputerów wieloprocesorowych z pamięcią wspólną dostępny dla C, C++, Fortran wygodniejszy w użyciu od MPI często stosowany łącznie z MPI MPI do komunikacji między węzłami klastra, OpenMP do komunikacji wewnątrz węzła Open Computing Language (OpenCL) otwarty standard ułatwiający pisanie programów do równoległego wykonania na różnych urządzeniach obliczeniowych, tj. CPU, GPU, FPGA oraz DSP 29

Alternatywy dla programów równoległych Uruchomienie wielu instancji tego samego programu dla różnych danych dobre, gdy dane wejściowe można podzielić na niezależne od siebie podzbiory uruchomienie wielu instancji, np. za pomocą skryptów powłoki (np. bash w linuxie) 30

Alternatywy c.d. Wykorzystanie istniejącego oprogramowania równoległego do wykonania Np. zastosowanie baz danych z wbudowaną obsługą równoległości program odpowiedzialny za obsługę GUI, natomiast przetwarzanie danych (równoległe) po stronie DBMS 31

Alternatywy c.d. Optymalizacja programu sekwencyjnego, tak by spełniał założenia odnośnie czasu działania Obecnie trudniejsze, ponieważ częstotliwość taktowania procesorów rośnie bardzo wolno Nowe rozkazy umożliwiające przyspieszenie wybranych operacji (SSE, MMX, AVX) Zastosowanie algorytmu o mniejszej złożoności obliczeniowej 32

Trudności programowania równoległego Pisanie poprawnych programów sekwencyjnych jest trudne, pisanie poprawnych programów współbieżnych jest o rząd wielkości trudniejsze. 33

Trudności programowania równoległego cd. Podział pracy obliczenia należy podzielić na zadania, które mogą być wykonywane jednocześnie nierówny podział negatywnie wpływa na wydajność (prawo Amdahla) jak rozdzielić rozdzielić zadania pomiędzy wątkami jak dzielić czas procesora pomiędzy wątkami wątki o różnych priorytetach Zamiast pojedynczego przepływu sterowania mamy ich wiele dodatkowa logika niezbędna do zarządzania i komunikacji pomiędzy wątkami, np. mechanizmy synchronizacji, współbieżne struktury danych 34

Trudności c.d. Nowa kategoria błędów możliwych przy współbieżnym wykonywaniu obliczeń: wyścigi w dostępie do danych (ang. data races) sytuacje prowadzące do niepoprawnych wartości zmiennych wynikające z równoczesnego niekontrolowanego dostępu do współdzielonej pamięci zaburzenia poprawnego wykonania zakleszczenia i zagłodzenia Trudniejsze debugowanie: program może działać poprawnie na jednym proc., ale niepoprawnie na większej liczbie błąd może się objawiać tylko w specyficznych sytuacjach, np. przy dużej liczbie wątków i dla konkretnych danych wejściowych 35