programowanie równolegle - parallel extensions

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

Upload: wojciech-grzeskowiak

Post on 26-Jun-2015

257 views

Category:

Technology


1 download

DESCRIPTION

Prezentacja z 2010 roku nt programowania równoległego przy pomocy rozwiązania Parallel Extensions.

TRANSCRIPT

Page 1: Programowanie Równolegle - Parallel Extensions

Programowanie równoległe

Wojciech Grześkowiak 2010/11/12

Page 2: Programowanie Równolegle - Parallel Extensions

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ównolegle - Parallel Extensions

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ównolegle - Parallel Extensions

Rynek procesorów – Intel™

Page 5: Programowanie Równolegle - Parallel Extensions

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ównolegle - Parallel Extensions

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ównolegle - Parallel Extensions

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ównolegle - Parallel Extensions

DEMO

Ray Tracing

Page 9: Programowanie Równolegle - Parallel Extensions

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ównolegle - Parallel Extensions

DEMO

Tree Walk

Page 11: Programowanie Równolegle - Parallel Extensions

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 s

9 1023 25,310 s 63,875 s 13,771 s

8 511 12,674 s 23,630 s 7,030s

7 255 6,375 s 10,237 s 3,511 s

• Tabela wyników:

Page 12: Programowanie Równolegle - Parallel Extensions

Task Manager

WG

WG

WG

WG

T1

T2

T3

T4

T5

GL

OB

AL

QU

EU

E

LQ

LQ

LQ

LQ

T7 T6

Page 13: Programowanie Równolegle - Parallel Extensions

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ównolegle - Parallel Extensions

Mnożenie macierzy

DEMO

Page 15: Programowanie Równolegle - Parallel Extensions

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ównolegle - Parallel Extensions

Liczby pierwsze

DEMO

Page 17: Programowanie Równolegle - Parallel Extensions

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 ascending select p;

Page 18: Programowanie Równolegle - Parallel Extensions

Visual Studio Async CTP

• Nowy model programowania asynchronicznego

• Zrezygnowanie z używania metod zwrotnych

• Nowe słowa kluczowe: async, await

Page 19: Programowanie Równolegle - Parallel Extensions

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); }

Page 20: Programowanie Równolegle - Parallel Extensions

Visual Studio Async CTP

public 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ównolegle - Parallel Extensions

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"))); }

Page 22: Programowanie Równolegle - Parallel Extensions

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ównolegle - Parallel Extensions

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

Page 24: Programowanie Równolegle - Parallel Extensions

PYTANIA ?

Page 25: Programowanie Równolegle - Parallel Extensions

DZIĘKUJE