1 / 25

Programowanie równoległe

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.

africa
Télécharger la présentation

Programowanie równoległe

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. Agenda • Rynek procesorów • Idea programowania równoległego • ParallelExtensions na platformie .NET • TaskParallelLibrary od kuchni • Parallel LINQ • Visual Studio Async CTP • Podsumowanie • Bibliografia • Pytania

  3. Rynekprocesoró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

  4. Rynek procesorów – Intel™ ?

  5. 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

  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. SINGLE CORE • Równoległość – wątki są wykonywanie fizycznie równolegle na różnych jednostkach obliczeniowych MULTI CORE

  8. DEMO Ray Tracing

  9. ParallelExtension • 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 • Tabela wyników:

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

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

  14. DEMO Mnożenie macierzy

  15. Imperative Data Parallelism • Parallelclass • Zbiór statycznych metod • Metody pomocnicze do tworzenia Task’ów • Realizacja podstawowych wzorców • For • ForEach • Invoke

  16. DEMO Liczby pierwsze

  17. 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 inpeople.AsParallel() wherep.age < MaxAge && p.age > MinAge && p.state == STATE order by ageascending select p;

  18. Visual Studio Async CTP • Nowy model programowania asynchronicznego • Zrezygnowanie z używania metod zwrotnych • 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 asyncvoid displayPageTitle() { WriteLinePageTitle( await new WebClient().DownloadStringTaskAsync( new Uri("http://www.pw.edu.pl"))); }  public static Task<string> DownloadStringTaskAsync( this WebClientwebClient,  Uri address);

  21. Visual Studio Async CTP public asyncvoid 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... • Szukajmy w naszych aplikacjach niezależ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

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

  24. PYTANIA ?

  25. DZIĘKUJE

More Related