programowanie równoległe
DESCRIPTION
Programowanie równoległe. Wojciech Grześkowiak. 2010/11/12. Agenda. Rynek procesorów Idea programowania równoległego Parallel Extensions na platformie .NET Task Parallel Library od kuchni Parallel LINQ Visual Studio Async CTP Podsumowanie Bibliografia Pytania. Rynek procesorów. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Programowanie równoległe](https://reader036.vdocuments.net/reader036/viewer/2022062315/568164e5550346895dd749b6/html5/thumbnails/1.jpg)
Programowanie równoległe
Wojciech Grześkowiak 2010/11/12
![Page 2: Programowanie równoległe](https://reader036.vdocuments.net/reader036/viewer/2022062315/568164e5550346895dd749b6/html5/thumbnails/2.jpg)
Agenda• Rynek procesorów• Idea programowania równoległego• Parallel Extensions na platformie .NET• Task Parallel Library od kuchni• Parallel LINQ• Visual Studio Async CTP• Podsumowanie• Bibliografia• Pytania
![Page 3: Programowanie równoległe](https://reader036.vdocuments.net/reader036/viewer/2022062315/568164e5550346895dd749b6/html5/thumbnails/3.jpg)
Rynek procesorów
• Prawo Moore’a
Liczba tranzystorów w układzie elektrycznym
podwaja się co 18-24 miesiące. • Kres procesorów jednordzeniowych• Alternatywa:
Procesory wielordzeniowe
![Page 4: Programowanie równoległe](https://reader036.vdocuments.net/reader036/viewer/2022062315/568164e5550346895dd749b6/html5/thumbnails/4.jpg)
Rynek procesorów – Intel™
?
![Page 5: Programowanie równoległe](https://reader036.vdocuments.net/reader036/viewer/2022062315/568164e5550346895dd749b6/html5/thumbnails/5.jpg)
Przyszłość …• Analitycy z firmy Forrester Research
przewidują, że już w 2012 roku rozbudowane procesory wyposażone w 64 rdzenie będą instalowane w komputerach domowych.• Już niedługo zabraknie programistów z doświadczeniem w tworzeniu aplikacji wykorzystujących przetwarzanie równoległe. – Dan Reed
… To już ostatni dzwonek, aby przekonać młodych programistów o wartości przetwarzania
równoległego - dodaje
![Page 6: Programowanie równoległe](https://reader036.vdocuments.net/reader036/viewer/2022062315/568164e5550346895dd749b6/html5/thumbnails/6.jpg)
Procesory wielordzeniowe"Różnica jest taka jak między szybkim sportowym autem, a autobusem szkolnym. Pierwszy szybko przewiezie dwie osoby, a drugi, choć trochę wolniej - czterdzieści„
– Dan Reed
![Page 7: Programowanie równoległe](https://reader036.vdocuments.net/reader036/viewer/2022062315/568164e5550346895dd749b6/html5/thumbnails/7.jpg)
Równoległe a Współbieżne• Współbieżność – wykonywane wątki są przełączane co
pewien ustalony (krotki) czas, przez co mamy wrażenie równoległego ich wykonywania.
• Równoległość – wątki są wykonywanie fizycznie równolegle na różnych jednostkach obliczeniowych
SINGLE CORE
MULTI CORE
![Page 8: Programowanie równoległe](https://reader036.vdocuments.net/reader036/viewer/2022062315/568164e5550346895dd749b6/html5/thumbnails/8.jpg)
DEMORay Tracing
![Page 9: Programowanie równoległe](https://reader036.vdocuments.net/reader036/viewer/2022062315/568164e5550346895dd749b6/html5/thumbnails/9.jpg)
Parallel Extension
• Biblioteka .NET napisana w C#• Przenośne, lekkie środowisko
uruchomieniowe• Wsparcie wielowątkowości• Wspólny model wyjątków
Nowość na platformie .NET w wersji 4.0
![Page 10: Programowanie równoległe](https://reader036.vdocuments.net/reader036/viewer/2022062315/568164e5550346895dd749b6/html5/thumbnails/10.jpg)
DEMOTree Walk
![Page 11: Programowanie równoległe](https://reader036.vdocuments.net/reader036/viewer/2022062315/568164e5550346895dd749b6/html5/thumbnails/11.jpg)
Walk Tree
Wysokość drzewa
Liczba węzłów
Czas –synchronicznie
Czas – wątki
Czas - równolegle
10 2047 49,238 s 190,833 s 27,779 s9 1023 25,310 s 63,875 s 13,771 s8 511 12,674 s 23,630 s 7,030s7 255 6,375 s 10,237 s 3,511 s
• Tabela wyników:
![Page 12: Programowanie równoległe](https://reader036.vdocuments.net/reader036/viewer/2022062315/568164e5550346895dd749b6/html5/thumbnails/12.jpg)
Task Manager
WG
WG
WG
WG
T1
T2
T3
T4
T5
GLO
BAL
QU
EUE
LQ
LQ
LQ
LQ
T7
T6
![Page 13: Programowanie równoległe](https://reader036.vdocuments.net/reader036/viewer/2022062315/568164e5550346895dd749b6/html5/thumbnails/13.jpg)
Imperative Task Parallelism
Task zamiast Thread• Zalety• Brak nakładu związanego z przełączaniem
kontekstu• Mniejsze zużycie pamięci• Równomierny rozkład pracy• Skalowalność
![Page 14: Programowanie równoległe](https://reader036.vdocuments.net/reader036/viewer/2022062315/568164e5550346895dd749b6/html5/thumbnails/14.jpg)
Mnożenie macierzy
DEMO
![Page 15: Programowanie równoległe](https://reader036.vdocuments.net/reader036/viewer/2022062315/568164e5550346895dd749b6/html5/thumbnails/15.jpg)
Imperative Data Parallelism• Parallel class• Zbiór statycznych metod• Metody pomocnicze do tworzenia Task’ów• Realizacja podstawowych wzorców• For• ForEach• Invoke
![Page 16: Programowanie równoległe](https://reader036.vdocuments.net/reader036/viewer/2022062315/568164e5550346895dd749b6/html5/thumbnails/16.jpg)
Liczby pierwsze
DEMO
![Page 17: Programowanie równoległe](https://reader036.vdocuments.net/reader036/viewer/2022062315/568164e5550346895dd749b6/html5/thumbnails/17.jpg)
Declarative Data Parallelism• PLINQ to „Równoległy” Linq to Objects• Prawie N – krotny wzrost wydajności• Minimalny wpływ na dotychczasowy Linq
var q = from p in people.AsParallel()where p.age < MaxAge &&
p.age > MinAge &&p.state == STATE
order by age ascendingselect p;
![Page 18: Programowanie równoległe](https://reader036.vdocuments.net/reader036/viewer/2022062315/568164e5550346895dd749b6/html5/thumbnails/18.jpg)
Visual Studio Async CTP
• Nowy model programowania asynchronicznego• Zrezygnowanie z używania metod zwrotnych• Nowe słowa kluczowe: async, await
![Page 19: Programowanie równoległe](https://reader036.vdocuments.net/reader036/viewer/2022062315/568164e5550346895dd749b6/html5/thumbnails/19.jpg)
Visual Studio Async CTPpublic void displayPageTitle(){ var client = new WebClient(); client.DownloadStringCompleted += whenCompeted; client.DownloadStringAsync( new Uri("http://www.pw.edu.pl"));}
void whenCompleted(object sender, EventArgs e){ WriteLinePageTitle(e.Result);}
![Page 20: Programowanie równoległe](https://reader036.vdocuments.net/reader036/viewer/2022062315/568164e5550346895dd749b6/html5/thumbnails/20.jpg)
Visual Studio Async CTPpublic async void displayPageTitle(){ WriteLinePageTitle( await new WebClient().DownloadStringTaskAsync( new Uri("http://www.pw.edu.pl")));}
public static Task<string> DownloadStringTaskAsync( this WebClient webClient, Uri address);
![Page 21: Programowanie równoległe](https://reader036.vdocuments.net/reader036/viewer/2022062315/568164e5550346895dd749b6/html5/thumbnails/21.jpg)
Visual Studio Async CTPpublic async void displayPageTitle(){ WriteLinePageTitle( await new WebClient().DownloadStringTaskAsync( new Uri("http://www.pw.edu.pl")));
WriteLinePageTitle( await new WebClient().DownloadStringTaskAsync( new Uri("http://www.elka.pw.edu.pl")));
WriteLinePageTitle( await new WebClient().DownloadStringTaskAsync( new Uri("http://www.samsung.com")));}
![Page 22: Programowanie równoległe](https://reader036.vdocuments.net/reader036/viewer/2022062315/568164e5550346895dd749b6/html5/thumbnails/22.jpg)
Kilka rad...
• Operacje wykonywane równolegle powinny być czasochłonne.
• Przekształcajmy jedynie pętle zewnętrzne
• Szukajmy w naszych aplikacjach niezależnych zadań i uruchamiajmy je równolegle. np. rekurencja
• Unikajmy synchronizacji
![Page 23: Programowanie równoległe](https://reader036.vdocuments.net/reader036/viewer/2022062315/568164e5550346895dd749b6/html5/thumbnails/23.jpg)
Więcej informacji…Channel 9 http://channel9.msdn.com/tags/Parallel+Extensions/
MSDNhttp://msdn.microsoft.com/en-us/concurrency/
MSDN Blogshttp://blogs.msdn.com/pfxteamhttp://blogs.msdn.com/nativeconcurrencyhttp://www.danielmoth.com/Blog/http://www.bluebytesoftware.com/blog/
Microsoft Professional Developers Conference 2010http://microsoftpdc.com
Mój Bloghttp://blog.fones.pl
![Page 24: Programowanie równoległe](https://reader036.vdocuments.net/reader036/viewer/2022062315/568164e5550346895dd749b6/html5/thumbnails/24.jpg)
PYTANIA ?
![Page 25: Programowanie równoległe](https://reader036.vdocuments.net/reader036/viewer/2022062315/568164e5550346895dd749b6/html5/thumbnails/25.jpg)
DZIĘKUJE