Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Programowanie równoległe Wojciech Grześkowiak2010/11/12.

Podobne prezentacje


Prezentacja na temat: "Programowanie równoległe Wojciech Grześkowiak2010/11/12."— Zapis prezentacji:

1 Programowanie równoległe Wojciech Grześkowiak2010/11/12

2 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

3 Rynek procesorów Prawo Moorea Liczba tranzystorów w układzie elektrycznym podwaja się co 18-24 miesiące. Kres procesorów jednordzeniowych Alternatywa: Procesory wielordzeniowe

4 Rynek procesorów – Intel ?

5 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

6 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

7 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

8 DEMO Ray Tracing

9 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

10 DEMO Tree Walk

11 Walk Tree Wysokość drzewa Liczba węzłów Czas – synchronicznie Czas – wątki Czas - równolegle 10204749,238 s190,833 s27,779 s 9102325,310 s63,875 s13,771 s 851112,674 s23,630 s7,030s 72556,375 s10,237 s3,511 s Tabela wyników:

12 Task Manager WG T1 T2 T3 T4 T5 T5 GLOBAL QUEUE LQ T7 T6

13 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ść

14 Mnożenie macierzy DEMO

15 Imperative Data Parallelism Parallel class Zbiór statycznych metod Metody pomocnicze do tworzenia Tasków Realizacja podstawowych wzorców For ForEach Invoke

16 Liczby pierwsze DEMO

17 Declarative Data Parallelism PLINQ to Równoległy Linq to Objects Prawie N – krotny wzrost wydajności Minimalny wpływ na dotychczasowy Linq AsParallel() var q = from p in people.AsParallel() where p.age < MaxAge && p.age > MinAge && p.state == STATE order by age ascending select p; AsParallel() var q = from p in people.AsParallel() where p.age < MaxAge && p.age > MinAge && p.state == STATE order by age ascending select p;

18 Visual Studio Async CTP Nowy model programowania asynchronicznego Zrezygnowanie z używania metod zwrotnych asyncawait Nowe słowa kluczowe: async, await

19 Visual Studio Async CTP public 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); }

20 Visual Studio Async CTP public async void displayPageTitle() { WriteLinePageTitle( await new WebClient().DownloadStringTaskAsync( new Uri("http://www.pw.edu.pl"))); } public static Task DownloadStringTaskAsync( this WebClient webClient, Uri address);

21 Visual Studio Async CTP public 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"))); }

22 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

23 Więcej informacji… Channel 9 http://channel9.msdn.com/tags/Parallel+Extensions/ 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 Professional Developers Conference 2010 http://microsoftpdc.com Mój Blog http://blog.fones.pl

24 PYTANIA ?

25 DZIĘKUJE


Pobierz ppt "Programowanie równoległe Wojciech Grześkowiak2010/11/12."

Podobne prezentacje


Reklamy Google