programowanie równoległe

25
Programowanie równoległe ojciech Grześkowiak 2010/11/12

Upload: africa

Post on 23-Feb-2016

56 views

Category:

Documents


0 download

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 Presentation

TRANSCRIPT

Page 1: Programowanie równoległe

Programowanie równoległe

Wojciech Grześkowiak 2010/11/12

Page 2: Programowanie równoległe

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

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

Rynek procesorów – Intel™

?

Page 5: Programowanie równoległe

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

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

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

DEMORay Tracing

Page 9: Programowanie równoległe

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

DEMOTree Walk

Page 11: Programowanie równoległe

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

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

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

Mnożenie macierzy

DEMO

Page 15: Programowanie równoległe

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

Liczby pierwsze

DEMO

Page 17: Programowanie równoległe

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

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

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

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

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

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

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

PYTANIA ?

Page 25: Programowanie równoległe

DZIĘKUJE