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

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

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

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.

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

Architektura mikroprocesorów TEO 2009/2010

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

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

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

Budowa Mikrokomputera

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

Algorytmy i Struktury Danych

Nowoczesne technologie przetwarzania informacji

Programowanie 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

Systemy operacyjne i sieci komputerowe Szymon Wilk Superkomputery 1

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

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

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

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

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

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

Obliczenia Wysokiej Wydajności

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

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

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

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

Programowanie z wykorzystaniem technologii CUDA i OpenCL Wykład 1

Wydajność obliczeń a architektura procesorów. Krzysztof Banaś Obliczenia Wysokiej Wydajności 1

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

Projektowanie. Projektowanie mikroprocesorów

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

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

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

Obliczenia Wysokiej Wydajności

Kryptografia na procesorach wielordzeniowych

Dydaktyka Informatyki budowa i zasady działania komputera

Programowanie procesorów graficznych GPGPU

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

Wykorzystanie architektury Intel MIC w obliczeniach typu stencil

O superkomputerach. Marek Grabowski

Raport Hurtownie Danych

i3: internet - infrastruktury - innowacje

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

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

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

16. Taksonomia Flynn'a.

Wykład 2. Mikrokontrolery z rdzeniami ARM

INŻYNIERIA OPROGRAMOWANIA

UTK ARCHITEKTURA PROCESORÓW 80386/ Budowa procesora Struktura wewnętrzna logiczna procesora 80386

Budowa komputera Komputer computer computare

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

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

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 Linux.

Programowanie współbieżne i rozproszone

PRZEWODNIK PO PRZEDMIOCIE

Zaawansowane programowanie w języku C++

Systemy na Chipie. Robert Czerwiński

Architektura komputerów

Podsystem graficzny. W skład podsystemu graficznego wchodzą: karta graficzna monitor

SYSTEMY OPERACYJNE WYKŁAD 1 INTEGRACJA ZE SPRZĘTEM

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

Podstawy Informatyki Systemy sterowane przepływem argumentów

GRIDY OBLICZENIOWE. Piotr Majkowski

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

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

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

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

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

Przygotowanie kilku wersji kodu zgodnie z wymogami wersji zadania,

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

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

Analiza ilościowa w przetwarzaniu równoległym

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Układ wykonawczy, instrukcje i adresowanie. Dariusz Chaberski

Numeryczna algebra liniowa

Systemy operacyjne III

MAGISTRALE ZEWNĘTRZNE, gniazda kart rozszerzeń, w istotnym stopniu wpływają na

Wykład Ćwiczenia Laboratorium Projekt Seminarium

Nowinki technologiczne procesorów

Architektura systemów komputerowych. dr Artur Bartoszewski

Historia modeli programowania

Architektura systemów komputerowych

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

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

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

Architektura komputerów

INŻYNIERIA OPROGRAMOWANIA

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

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

Tesla. Architektura Fermi

Spis treúci. Księgarnia PWN: Krzysztof Wojtuszkiewicz - Urządzenia techniki komputerowej. Cz. 1. Przedmowa Wstęp... 11

Architektura komputerów

Opracował: Jan Front

Programowanie Rozproszone i Równoległe

Procesory. Schemat budowy procesora

MIKROKONTROLERY I MIKROPROCESORY

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

Transkrypt:

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

2 Organizacja przedmiotu Wykład: 1 godzina tygodniowo (piątek, 10:15) 2 kolokwia w trakcie semestru Ocena końcowa: 0.5*(średnia z kolokw.)+0.5*projekt Projekt: od połowy semestru (termin wydawania zadań projektowych będzie podany na wykładzie z 2- tygodniowym wyprzedzeniem) Wykład: Iwona Kochańska iwona.kochanska@pg.edu.pl tel. 58 347 20 04 pokój EA 745 WETI PG Projekt: Mariusz Rudnicki mariusz.rudnicki@pg.edu.pl tel. 58 347 26 39 pokój EA 753 WETI PG

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

4 Programowanie współbieżne Programowanie współbieżne znaczne skrócenie czasu obliczeń rozwiązywanie problemów o większych rozmiarach danych Przykładowe zastosowania:

5 Procesory CISC CISC - Complex Instruction Set Computer (np. 6502, 8088) duży zbiór instrukcji o różnej złożoności niektóre kilku-bajtowe, do wykonania wymagają od kilku do kilkunastu cykli zegara, minimalizuje liczbę instrukcji potrzebnych do wykonania zadania (oszczędność RAM) szeroka gama trybów adresowania, rozkazy mogą operować bezpośrednio na pamięci (zamiast przesłania wartości do rejestrów i operowania na nich), dekoder rozkazów jest skomplikowany,

6 Procesory CISC Istotą architektury CISC jest to, iż pojedynczy rozkaz mikroprocesora wykonuje kilka operacji niskiego poziomu, jak na przykład pobranie z pamięci, operację arytmetyczną i zapisanie do pamięci. Współczesne procesory zgodne z x86 produkowane przez firmy Intel, AMD i VIA przetwarzają rozkazy procesora x86 na proste mikropolecenia pracujące według idei RISC, często wykonujące się równolegle.

7 Procesory RISC RISC - Reducted Instruction Set Computer mały zbiór instrukcji, instrukcje są proste - potrzeba mniej tranzystorów, niż w CISC, do realizacji zadania potrzeba więcej wywołań instrukcji niż w CISC, ale: pamięć jest coraz tańsza i lepiej upakowana kompilatory są coraz bardziej wydajne każda instrukcja mieści sie w pojedynczym słowie binarnym (kod instrukcji + adres + dane) wykonanie każdej instrukcji zajmuje tyle samo czasu przetwarzanie potokowe (Pipelining) - kiedy jedna instrukcja jest wykonywana, następna jest odczytywana z pamięci

Procesory SPARC SPARC - Scalable Processor ARChitecture Zaprojektowana przez firmę Sun Microsystems (1985), od 1989 r. rozwijana przez organizacje SPARC International. Wersje: 32-bitowa (SPARC version 8) 64-bitowa (SPARC version 9) Architektura otwarta model programowy mikroprocesora (Instruction Set Architecture, ISA) jest publicznie dostępny (dokumentacja). otwarta implementacja (GNU LGPL) - kod w języku VHDL procesora LEON. Zastosowania: wysokowydajne serwery, stacje robocze, systemy wbudowane 8

Przykłady procesorów CISC i RISC 9

Rozwój procesorów SPARC 10

11

12

13 Graphics Processing Unit (GPU) Współcześnie możliwości wykonywania obliczeń równoległych nie ograniczają się tylko do CPU od wielu lat możliwe jest wykonywanie obliczeń na GPU Nvidia Tesla K40, moc 1.43TFLOPS, 2880 CUDA cores Tesla P100, 3584 rdzenie CUDA, moc 5.3TFLOPS oraz 10.6 TFLOPS dla obl. zmiennoprzecinkowych pojedynczej precyzji, (zródło Nvidia). CUDA (ang. Compute Unified Device Architecture) opracowana przez firmę Nvidia uniwersalna architektura procesorów wielordzeniowych (głównie kart graficznych) umożliwiająca wykorzystanie ich mocy obliczeniowej do rozwiązywania ogólnych problemów numerycznych w sposób wydajniejszy niż w tradycyjnych, sekwencyjnych procesorach ogólnego zastosowania.

Jednostki w obliczeniach równoległych MIPS liczba milionów operacji stałoprzecinkowych wykonywanych w ciągu sekundy Flop (floating point operation) operacja zmiennoprzecinkowa. Liczba zmiennoprzecinkowa (double) zajmuje 8 bajtów. Flops/s (FLOPS) liczba operacji zmiennoprzecinkowych na sekundę 14

15 Superkomputer Superkomputer komputer znacznie przewyższający możliwościami powszechnie używane komputery, w szczególności dysponujący wielokrotnie większą mocą obliczeniową. Określenie to pojawiło się w latach 60. w odniesieniu do komputerów produkowanych przez CDC i później przez przedsiębiorstwo Cray Elementy architektury Blue Gene: chip, karta, węzeł, szafa, system (Wikipedia)

16 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. Listopad 2012 - najszybszym komputerem był Titan wyprodukowany przez Cray i zainstalowany w DOE/SC/Oak Ridge National Laboratory. moc 17.59 PFLOPS (17.59 10 15 ) PFLOPS Architektura: 18 688 AMD Opteron 6274 16-core CPUs, 18 688 Nvidia Tesla K20X GPUs zużycie energii 8.2 MW koszt: 97 mln $ powierzchnia 404 m2

17 TOP500 Czerwiec 2013 - Tianhe-2 (ang. Skyriver-2) - superkomputer stworzony dla potrzeb Uniwersytetu Technologii Obronnych w Chinach. 33.86 PFLOPS (33.86 10 15 ) PFLOPS architektura: 16000 węzłów, 3120000 rdzeni - Intel Xeon E5-2692 12C 2.2 zużycie energii 17.8 MW pamięć 1024000 GB powierzchnia 404 m2 Czerwiec 2016 - chiński Sunway TaihuLight moc 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 energie 15.37MW, ok. 6 GFLOPS/W koszt ok. 273 mln. $

18 Prawo Moore a W 1965 roku Gordon Moore, szef laboratorium firmy Fairchild Semiconductor, opublikował w branżowym elektronicznym periodyku artykuł, w którym przedstawił prognozę: Liczba dyskretnych komponentów możliwych do upakowania w pojedynczym czipie komputerowym będzie się co rok podwajała, podczas gdy cena tychże czipów pozostanie stała. Gordon Moore stał się później współzałożycielem Intela, a jego prognoza stała się zarówno napędzającą firmy ideą postępu w branży półprzewodników, jak i standardem, którego przestrzeganie jest konieczne, by w tej branży w ogóle przetrwać. Od 1980 podwajanie liczby komponentów chipu co 2 lata

19 Prawo Moore a Dave House: choć tempo przyrostu liczby elementów maleje, to same tranzystory stają się szybsze. To zaś powinno oznaczać, że moc obliczeniowa układu scalonego powinna podwajać się co ok. 18 miesięcy. (współczesna postać prawa Moore a). Ten wykładniczy wzrost towarzyszył nam jeszcze do końca lat zerowych XXI wieku a potem zaczęto coraz częściej mówić o tym, że Prawo Moore'a się skończyło. Intel w 2003 roku sugerował, że koniec może nastąpić przed 2018 roku, kiedy to efekty kwantowe sprawią, że tranzystory nie będą mogły już być dalej miniaturyzowane.

20 Prawo Moore a Robert Dennard: w miarę zmniejszania tranzystorów ich gęstość energetyczna pozostaje stała tak więc zużycie energii pozostaje proporcjonalne do powierzchni. Mniejsze tranzystory potrzebują mniejszego napięcia i natężenia prądu, tak więc wraz z kolejnymi generacjami czipów o coraz większej liczbie tranzystorów, będą one wydzielały mniej ciepła i zużywały mniej energii. Ta zasada zawiodła! Poniżej pewnych rozmiarów tranzystorów pojawiają się prądy upływu, prowadzące do eskalującego się nagrzewania układu (przez pętlę dodatniego sprzężenia zwrotnego). Kres zasady skalowania Dennarda doprowadził do tego, że zamiast podkręcać zegary, postawiono na zwiększenie liczby rdzeni i optymalizację wydajności pojedyńczych wątków. Dzięki temu udało się utrzymać obowiązywanie Prawa Moore'a w jego współczesnej postaci!

Wykładniczy wzrost wydajności obliczeniowej 21

22 Zrównoleglenie 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: równoległość na poziomie bitów: szersze magistrale i liczba bitów w rejestrach procesora (8, 16, 32, 64 bity) równoległość na poziomie instrukcji: równoległe wykonywanie wielu rozkazów 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 (współbieżnych)

23 Programowanie lata 60 i 70 Programowanie w językach asemblerowych Wzrost mocy obliczeniowej powodował, ze 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 -> języki wysokiego poziomu: Fortran i C

24 Programowanie lata 80 i 90 Języki Fortran i C 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 Języki obiektowe: C++, Java, C# Lepsze narzędzia: środowiska programistyczne, biblioteki Rozwój metodologii tworzenia oprogramowania: wzorce projektowe, odpowiednie dokumentowanie, testowanie

25 Programowanie - 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 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ść pisania oprogramowania korzystającego z większej liczby wątków w tym samym czasie

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

Cele programowania współbieżnego 27 Większa responsywność (płynność) programu wykonywanie intensywnych obliczeniowo żądań w osobnych watkach, a nie w wątku GUI Uproszczona obsługa asynchronicznych zdarzeń np. komunikacja przez gniazda sieciowe wymaga czekania na odpowiedź (ang. bloking I/O). w aplikacji wielowątkowej każda komunikacja może być obsługiwana w osobnych wątkach, po jednym na połączenie

28 Narzędzia C/C++ brak obsługi wielowątkowości w standardzie aż do standardu C++11 z 2011 r. biblioteka POSIX Threads (pthreads) Windows Threads boost (Asio, Thread, Interprocess) Źródło: http://www.modernescpp.com/index.php/multithreading-in-modern-c

29 Narzędzia Java obsługa wielowątkowości od początku, zdefiniowany model pamięci uwzględniający wykonanie wielowątkowe, bogata biblioteka standardowa

Narzędzia MPI Message Passing Interface protokół komunikacyjny przesyłania komunikatów miedzy procesami w programach współbieżnych najpopularniejszy standard dla superkomputerów wysoka wydajność i skalowalność implementacja dla wielu języków programowania (C, C++, Ada, Fortran, C#) mała wygoda użycia w porównaniu do np. OpenMP 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 30

31 Co jeśli nie program równoległy? 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) Wykorzystanie istniejącego oprogramowania równoległego do wykonania np. zastosowanie baz danych z wbudowaną obsługą równoległości Optymalizacja programu sekwencyjnego, tak by spełniał założenia odnośnie czasu działania Nowe rozkazy procesora umożliwiające przyspieszenie wybranych operacji Zastosowanie algorytmu o mniejszej złożoności obliczeniowej

Trudności programowania równoległego 32 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ć zadania pomiędzy watkami jak Dzielic czas procesora pomiędzy watkami watki o różnych priorytetach Zamiast pojedynczego przepływu sterowania mamy ich wiele dodatkowa logika niezbędna do zarządzania i komunikacji pomiędzy watkami, np. mechanizmy synchronizacji, współbieżne struktury danych

33 Trudności programowania równoległego Nowa kategoria bledów możliwych przy współbieżnym wykonywaniu obliczeń: wyścigi w dostępie do danych (ang. data race) 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 sie objawiać tylko w specyficznych sytuacjach, np. przy dużej liczbie wątków i dla konkretnych danych wejściowych