190 likes | 354 Views
czyli programowanie równoległe != współbieżne na platformie .NET Framework 4.0. Parallel Extension. Wojciech Grześkowiak w.grzeskowiak@gmail.com. Agenda. Rzut oka na rynek procesorów Idea programowania równoległego Pierwszy kontakt z Parallel Extension Task Parallel Library od kuchni
E N D
czyli programowanie równoległe != współbieżne na platformie .NET Framework 4.0 ParallelExtension Wojciech Grześkowiak w.grzeskowiak@gmail.com
Agenda • Rzut oka na rynek procesorów • Idea programowania równoległego • Pierwszy kontakt z ParallelExtension • TaskParallelLibrary od kuchni • LINQ po raz drugi • Podsumowanie
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
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
Przyszłość … • Analitycy z firmy ForresterResearch 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
Równoległe != 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. SINGLE CORE • Równoległość – wątki są wykonywanie fizycznie równolegle na różnych jednostkach obliczeniowych MULTI CORE
Ray Tracing DEMO
ParallelExtension • Biblioteka .NET napisana w C# • Lekkie środowisko uruchomieniowe • Wsparcie wielowątkowości • Wspólny model wyjątków Wejdzie w skład mscorlib w przyszłej wersji platformy
Walk Tree ImperativeTaskParallelism DEMO
Task Manager LQ LQ LQ T6 T7 T5 LQ T4 GLOBAL QUEUE T3 T2 T1
ImperativeTaskParallelism Task zamiast Thread • Zalety • Brak nakładu związanego z przełączaniem kontekstu • Mniejsze zużycie pamięci • Równomierny rozkład pracy • Skalowalność
Matrix Imperative Data Parallelism DEMO
Imperative Data Parallelism • Parallelclass • Zbiór statycznych metod • Metody pomocnicze do tworzenia Task’ów • Realizacja podstawowych wzorców • For • ForEach • Invoke
PrimeNumbers Declarative Data Parallelism DEMO
Declarative Data Parallelism • PLINQ to „Równoległy” Linq to Objects • N – krotny wzrost wydajności • Minimalny wpływ na dotychczasowy Linq var q = from p inpeople.AsParallel() wherep.age < MaxAge && p.age > MinAge && p.state == STATE order by ageascending select p;
Kilka rad... • Szukajmy w naszych aplikacjach nie zależnych zadań i uruchamiajmy je równolegle. np. rekurencja • Unikajmy synchronizacji • Operacje wykonywane równolegle powinny być czasochłonne. • Przekształcajmy jedynie pętle zewnętrzne
(video) Literatura Channel 9 http://channel9.msdn.com/tags/Parallel+Extensions/ http://channel9.msdn.com/tags/pdc2008.parallelism/ MSDN http://msdn.microsoft.com/en-us/concurrency/ MSDN Blogs http://blogs.msdn.com/pfxteam http://blogs.msdn.com/nativeconcurrency http://www.danielmoth.com/Blog/ http://www.bluebytesoftware.com/blog/ Microsoft Connect https://connect.microsoft.com/VisualStudio/