programowanie równoległe

Post on 23-Feb-2016

56 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

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

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

top related