Programowanie równoległe
description
Transcript of Programowanie równoległe
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
• Prawo Moore’a
Liczba tranzystorów w układzie elektrycznym
podwaja się co 18-24 miesiące. • Kres procesorów jednordzeniowych• Alternatywa:
Procesory wielordzeniowe
Rynek procesorów – Intel™
?
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
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
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
DEMORay Tracing
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
DEMOTree Walk
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:
Task Manager
WG
WG
WG
WG
T1
T2
T3
T4
T5
GLO
BAL
QU
EUE
LQ
LQ
LQ
LQ
T7
T6
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ść
Mnożenie macierzy
DEMO
Imperative Data Parallelism• Parallel class• Zbiór statycznych metod• Metody pomocnicze do tworzenia Task’ów• Realizacja podstawowych wzorców• For• ForEach• Invoke
Liczby pierwsze
DEMO
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;
Visual Studio Async CTP
• Nowy model programowania asynchronicznego• Zrezygnowanie z używania metod zwrotnych• Nowe słowa kluczowe: async, await
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);}
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);
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")));}
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
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
PYTANIA ?
DZIĘKUJE