Task Parallel Library

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

REKURENCJA W JĘZYKU HASKELL. Autor: Walczak Michał

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

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

Interfejsy w Java. Przetwarzanie równoległe. Wątki.

Dynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy)

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

Programowanie Równoległe i Rozproszone. Algorytm Kung a. Algorytm Kung a. Programowanie Równoległe i Rozproszone Wykład 8. Przygotował: Lucjan Stapp

Wykład 5 Wybrane zagadnienia programowania w C++ (c.d.)

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

Numeryczna algebra liniowa

Stworzenie klasy nie jest równoznaczne z wykorzystaniem wielowątkowości. Uzyskuje się ją dopiero poprzez inicjalizację wątku.

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

Analiza efektywności przetwarzania współbieżnego

msgbox("akcja: Początek, argument: " + argument.tostring()); Thread.Sleep(1000); //opóźnienie msgbox("akcja: Koniec"); return DateTime.Now.

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

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

Kurs języka Python. Wątki

Zaawansowany kurs języka Python

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

Programowanie i struktury danych 1 / 44

Wątek - definicja. Wykorzystanie kilku rdzeni procesora jednocześnie Zrównoleglenie obliczeń Jednoczesna obsługa ekranu i procesu obliczeniowego

Instrukcja projektowa cz. 2


Kryptografia na procesorach wielordzeniowych

Spis treści. I. Skuteczne. Od autora... Obliczenia inżynierskie i naukowe... Ostrzeżenia...XVII

Struktury danych: stos, kolejka, lista, drzewo

Przygotowanie kilku wersji kodu zgodnie z wymogami wersji zadania,

Moc płynąca z kart graficznych

4. Procesy pojęcia podstawowe

Algorytmy dla maszyny PRAM

Równoległe algorytmy sortowania. Krzysztof Banaś Obliczenia równoległe 1

Kurs rozszerzony języka Python

WIELOWĄTKOWOŚĆ. Waldemar Korłub. Platformy Technologiczne KASK ETI Politechnika Gdańska

Algorytmy i Struktury Danych

Wstęp do programowania

Wielowątkowość mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011

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

Jadro Linux 2.6. a zadania czasu rzeczywistego. Artur Lewandowski. Jądro Linux 2.6 p.1/14

Programowanie procesorów graficznych GPGPU

Literatura. adów w cyfrowych. Projektowanie układ. Technika cyfrowa. Technika cyfrowa. Bramki logiczne i przerzutniki.

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.

Teoretyczne podstawy informatyki

Programowanie współbieżne i rozproszone

Współbieżność i równoległość w środowiskach obiektowych. Krzysztof Banaś Obliczenia równoległe 1

Metodyka i Technika Programowania 1

4. Procesy pojęcia podstawowe

Architektura potokowa RISC

Operacje grupowego przesyłania komunikatów. Krzysztof Banaś Obliczenia równoległe 1

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

Algorytmy sortujące 1

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

Wykorzystanie architektury Intel MIC w obliczeniach typu stencil

Tesla. Architektura Fermi

Przetwarzanie potokowe pipelining

Wstęp. Przetwarzanie równoległe. Krzysztof Banaś Obliczenia równoległe 1

O superkomputerach. Marek Grabowski

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

Nowinki technologiczne procesorów

Grafem nazywamy strukturę G = (V, E): V zbiór węzłów lub wierzchołków, Grafy dzielimy na grafy skierowane i nieskierowane:

Java Podstawy. Michał Bereta

INFORMATYKA W SZKOLE. Podyplomowe Studia Pedagogiczne. Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227

Programowanie współbieżne Wykład 10 Synchronizacja dostępu do współdzielonych zasobów. Iwona Kochańska

Programowanie funkcyjne wprowadzenie Specyfikacje formalne i programy funkcyjne

Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach?

Kolejki FIFO (łącza nazwane)

6. Pętle while. Przykłady

Operacje grupowego przesyłania komunikatów

Programowanie obiektowe

Struktura drzewa w MySQL. Michał Tyszczenko

Programowanie w języku C++ Grażyna Koba

Sortowanie - wybrane algorytmy

8. Wektory. Przykłady Napisz program, który pobierze od użytkownika 10 liczb, a następnie wypisze je w kolejności odwrotnej niż podana.

CUDA. cudniejsze przyk ady

Narzędzia informatyczne w językoznawstwie

Bash i algorytmy. Elwira Wachowicz. 20 lutego

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 4. Karol Tarnowski A-1 p.

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

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

Logiczny model komputera i działanie procesora. Część 1.

Architektura komputerów

1 Powtórzenie wiadomości

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

Wątki w Android OS. Matt Rutkowski. GynSoft sp. z o.o. matt@gynsoft.net

Sortowanie przez wstawianie Insertion Sort

Temat: Liniowe uporzdkowane struktury danych: stos, kolejka. Specyfikacja, przykładowe implementacje i zastosowania. Struktura słownika.

Przykładowe sprawozdanie. Jan Pustelnik

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

PętlaforwOctave. Roman Putanowicz 13 kwietnia 2008

Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych

Programowanie w Sieci Internet. Python: Wątki. Kraków, 12 grudnia 2014 r. mgr Piotr Rytko Wydział Matematyki i Informatyki

Systemy operacyjne. Zajęcia 11. Monitory

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

Optymalizacja skalarna. Piotr Bała. Wykład wygłoszony w ICM w czercu 2000

Wstęp do programowania

Metody optymalizacji soft-procesorów NIOS

2. Tablice. Tablice jednowymiarowe - wektory. Algorytmy i Struktury Danych

Programowanie obiektowe

Transkrypt:

Task Parallel Library Daan Leijen, Wolfram Schulte, and Sebastian Burckhardt prezentacja Michał Albrycht

Agenda O potrzebie zrównoleglania Przykłady użycia TPL Tasks and Replicable Tasks Rozdzielanie zadań Workgroup WorkThread Duplicating Queue Wydajność 2

Problem ze zrównoleglaniem Przyrost mocy obliczeniowej procesorów, nie poprzez przyspieszanie zegarów, a poprzez dodawanie dodatkowych rdzeni. Aby w pełni wykorzystac moc procesora, należy jednocześnie obciążyć wszystkie dostępne rdzenie. Własnoręczne kodowanie obsługi puli wątków, w celu zrównoleglenia jednej pętli for jest demotywujące. 3

Mnożenie macierzy - sekwencyjnie 4

Mnożenie macierzy - TPL 5

Mnożenie macierzy TPL cz.2 Pobiera trzy argumenty: od (włącznie), do (wyłącznie) oraz delegację. Delegacja to odpowiednik funkcji nienazwanych w C# (lub jeśli ktoś woli lambda wyrażeń). Delegacja pobiera indeks, a jako treść zawiera niezmieniony algorytm mnożenia macierzy. Automatycznie zostały przechwycone zmienne m1, m2 i result. 6

TPL krótki opis Podstawowe jednostki: Task i ReplicableTask Brak gwarancji zrównoleglenia Kolejka zadań przydzielona do grupy wątków Work-stealing strategy 7

QuickSort - sekwencyjnie 8

QuickSort TPL 9

Agregacja Chcemy policzyć sumę liczb pierwszych mniejszych od 10000. 10

Agregacja - TPL Pierwsza delegacja jest stosowana do każdego elementu. Druga stosowana jest do lokalnej zmiennej agregującej i wyników pierwszej delegacji. 11

Fibonacci Wywołanie f2.value czeka na zakończenie obliczeń i przekazuje wartość. Wszystkie prawe gałęzie liczone równolegle. 12

Task Reprezentuje skończone zadanie obliczeniowe. Konstruktor pobiera akcje do wykonania. Wyjątki przekazuje przy wywołaniu Wait(). Wykonywany na puli wątków. 13

Paralell.Do Przypadek szczególny, dla dwóch operacji 14

Replicable Tasks Konstruktor pobiera akcję do wykonania. Różni się od Task tym, że będzie wykonywane wielokrotnie. Nie jest dostępny dla programisty. 15

Future i ReplicableFuture Future i ReplicableFuture to odpowiedniki Task i ReplicableTask przekazujące wyniki. 16

Podział pracy Worker group dla każdego procesora. Worker group zawiera od jednego do kilku wątków (Worker thread). W danej chwili pracuje tylko jeden wątek z danej Worker group. Jeśli dany Worker thread zostaje zablokowany, dodatkowy Worker jest dodawany do grupy. 17

Podział pracy Na każdą Worker group przypada jedna, dwustronna kolejka zadań. Dostępne operacje to Push, Pop, Take. Push i Pop to standardowe operacje dodawanie i zdjęcia zadania z kolejki. Jeśli Worker Thread widzi, że nie ma już zadań w kolejce, to staje się złodziejem. Operacja Take kradnie zadanie z końca innej kolejki zadań. 18

Podział pracy Task może być w jednym z 3 stanów: Init, Running, Done Kiedy wątek chce wykonać pobrane zadanie, to zachowuje się różnie w zależności od jego stanu: Init - zaczyna wykonywać zadanie Running ktoś mu ukradł zadanie, czeka na jego zakończenie Done ktoś mu ukradł, ale już skończył liczyć Stan Init jest najczęstszym przypadkiem, dlatego jego opłaca się optymalizować. 19

Podział pracy Implementacja kolejki zadań ma bezpośredni wpływ na skuteczność kradzieży, a więc również na wydajność. Dotychczas podobne rozwiązania były oparte o THE protocol wymyślony przez Dijkstrę w 1965r. Jednak to wymaga silnego modelu pamięci. Atomowe CompareAndSwap() do operowaniu na stanie zadania. Wymaga słabego modelu pamięci. 20

Total Sort Order Aby zachodził TSO, należy spełnić 4 aksjomaty L zawsze daje ostanią wartość trzymaną w pamięci Architektura x86 nie spełnia TSO! Spełnia, po przyjęciu dodatkowych założeń. 21

Duplicating Queue Implementuje dwustronną kolejkę zadań. Operacje: Push, Pop, Take. Take zwiększa head o 1 (kradnie z początku). Pop zmniejsza tail o 1. Push zwieksza tail o 1. TailMin zapobiega gubieniu elementów. 22

Duplicating Queue wykorzystanie TSO Operacja Take() bierze locka do kolejki. Operacje Push() i Pop() tylko czasami biorą locka. Ponieważ pracuje tylko jeden Worker Thred to jednoczesny dostęp może być tylko pomiędzy jednym złodziejem (tym który założył locka) i aktualnie działającym wątkiem. Worker Thread może widzieć nieaktualny head. Złodziej może widzieć nieaktualne tail. 23

Duplicating Queue head == tail => kolejka jest pusta. Gdyby nie tailmin można by zgubić zadanie. Działanie Duplicating Queue zostało formalnie zweryfikowane przy użyciu narzędzia CheckFence. 24

Wydajność Mnożenie macierzy: Parallel.For vs ręcznie dostrojony ThreadPool 99% wydajności na maszynie z 1 procesorem! 25

Wydajność Standardowy zestaw testów zaczerpnięty z CILK i Java fork/join library 26

Wydajność Drobna przeróbka w MSAGLu. Dostajemy 50% szybszy program. Jeśli zrównoleglimy 50% programu, to dostaniemy program najwyżej 2 razy szybszy. 27

Wydajność Duplicating Queue Porównanie wydajności Duplicating Queue i rozwiązania opartego o THE protocol 28

Bibliografia Prezentacja artukułu The Design of a Task Parallel Library, OOPSLA 2009 29

Dziękuję 30