SlideShare ist ein Scribd-Unternehmen logo
1 von 25
Downloaden Sie, um offline zu lesen
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.
                                    SINGLE CORE

• Równoległość – wątki są wykonywanie fizycznie
  równolegle na różnych jednostkach obliczeniowych

                                    MULTI CORE
DEMO
Ray 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
DEMO
Tree Walk
Walk Tree

• Tabela wyników:
   Wysokość   Liczba       Czas –        Czas –       Czas -
    drzewa    węzłów   synchronicznie    wątki      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
Task Manager

                            LQ


                                 WG
                       LQ                  LQ



                                                T6
                      WG                   WG        T7
GLOBAL QUEUE




               T5
               T4                     LQ
               T3
               T2                WG
               T1
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ść
DEMO
Mnożenie macierzy
Imperative Data Parallelism

• Parallel class
   • Zbiór statycznych metod
   • Metody pomocnicze do tworzenia Task’ów
   • Realizacja podstawowych wzorców
      • For
      • ForEach
      • Invoke
DEMO
Liczby pierwsze
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;
Visual Studio Async CTP

• Nowy model programowania asynchronicznego
• Zrezygnowanie z używania metod zwrotnych
• Nowe słowa kluczowe: async, await
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);
}
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);
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")));
}
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
Więcej informacji…
       Channel 9
       http://channel9.msdn.com/tags/Parallel+Extensions/

       Microsoft Professional Developers Conference 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
PYTANIA ?
DZIĘKUJE

Weitere ähnliche Inhalte

Andere mochten auch

Okkar mal holt 2015
Okkar mal holt 2015Okkar mal holt 2015
Okkar mal holt 2015Margret2008
 
Cамостоятельная работа по теме: "графика в PascalABC"
Cамостоятельная работа по теме: "графика в PascalABC"Cамостоятельная работа по теме: "графика в PascalABC"
Cамостоятельная работа по теме: "графика в PascalABC"ValiaKuba
 
20130228 update rondje oss 1
20130228 update rondje oss 120130228 update rondje oss 1
20130228 update rondje oss 1pgvanderpoel
 
784 online prava i odgovornosti
784 online prava i odgovornosti784 online prava i odgovornosti
784 online prava i odgovornostiPogled kroz prozor
 
Compare and contrast_essay2 (2)
Compare and contrast_essay2 (2)Compare and contrast_essay2 (2)
Compare and contrast_essay2 (2)Weng Chuan
 
786 zaštita i sigurnost djece na internetu
786 zaštita i sigurnost djece na internetu786 zaštita i sigurnost djece na internetu
786 zaštita i sigurnost djece na internetuPogled kroz prozor
 
Աշխարհաստեղծման առասպելներ
Աշխարհաստեղծման առասպելներԱշխարհաստեղծման առասպելներ
Աշխարհաստեղծման առասպելներtun200427
 
Ensayo polar bears final
Ensayo polar bears finalEnsayo polar bears final
Ensayo polar bears finalyvonnebc
 
Stragety Management at Kemwell International Pvt Ltd.
Stragety Management at Kemwell International Pvt Ltd.Stragety Management at Kemwell International Pvt Ltd.
Stragety Management at Kemwell International Pvt Ltd.Lohith Lohi
 
776 primjereno,odgovorno i sigurno ponašanje na internetu
776 primjereno,odgovorno i sigurno ponašanje na internetu776 primjereno,odgovorno i sigurno ponašanje na internetu
776 primjereno,odgovorno i sigurno ponašanje na internetuPogled kroz prozor
 
775 primjereno,odgovorno i sigurno ponašanje na internetu
775 primjereno,odgovorno i sigurno ponašanje na internetu775 primjereno,odgovorno i sigurno ponašanje na internetu
775 primjereno,odgovorno i sigurno ponašanje na internetuPogled kroz prozor
 
Relazione Tirocinio
Relazione TirocinioRelazione Tirocinio
Relazione TirocinioIlariaCata
 

Andere mochten auch (20)

Okkar mal holt 2015
Okkar mal holt 2015Okkar mal holt 2015
Okkar mal holt 2015
 
3085 9164-1-pb
3085 9164-1-pb3085 9164-1-pb
3085 9164-1-pb
 
Gestion y sistemas de la calidad
Gestion y sistemas de la calidadGestion y sistemas de la calidad
Gestion y sistemas de la calidad
 
Cамостоятельная работа по теме: "графика в PascalABC"
Cамостоятельная работа по теме: "графика в PascalABC"Cамостоятельная работа по теме: "графика в PascalABC"
Cамостоятельная работа по теме: "графика в PascalABC"
 
20130228 update rondje oss 1
20130228 update rondje oss 120130228 update rondje oss 1
20130228 update rondje oss 1
 
784 online prava i odgovornosti
784 online prava i odgovornosti784 online prava i odgovornosti
784 online prava i odgovornosti
 
Compare and contrast_essay2 (2)
Compare and contrast_essay2 (2)Compare and contrast_essay2 (2)
Compare and contrast_essay2 (2)
 
786 zaštita i sigurnost djece na internetu
786 zaštita i sigurnost djece na internetu786 zaštita i sigurnost djece na internetu
786 zaštita i sigurnost djece na internetu
 
Աշխարհաստեղծման առասպելներ
Աշխարհաստեղծման առասպելներԱշխարհաստեղծման առասպելներ
Աշխարհաստեղծման առասպելներ
 
Termodinamica
TermodinamicaTermodinamica
Termodinamica
 
Ensayo polar bears final
Ensayo polar bears finalEnsayo polar bears final
Ensayo polar bears final
 
Stragety Management at Kemwell International Pvt Ltd.
Stragety Management at Kemwell International Pvt Ltd.Stragety Management at Kemwell International Pvt Ltd.
Stragety Management at Kemwell International Pvt Ltd.
 
Slide share center presentation
Slide share center presentationSlide share center presentation
Slide share center presentation
 
763 sigurnost na internetu
763 sigurnost na internetu763 sigurnost na internetu
763 sigurnost na internetu
 
Trabajo de iva o empresa
Trabajo de iva o empresaTrabajo de iva o empresa
Trabajo de iva o empresa
 
776 primjereno,odgovorno i sigurno ponašanje na internetu
776 primjereno,odgovorno i sigurno ponašanje na internetu776 primjereno,odgovorno i sigurno ponašanje na internetu
776 primjereno,odgovorno i sigurno ponašanje na internetu
 
788 online prava
788 online prava788 online prava
788 online prava
 
775 primjereno,odgovorno i sigurno ponašanje na internetu
775 primjereno,odgovorno i sigurno ponašanje na internetu775 primjereno,odgovorno i sigurno ponašanje na internetu
775 primjereno,odgovorno i sigurno ponašanje na internetu
 
759 sigurniji internet 2013
759 sigurniji internet 2013759 sigurniji internet 2013
759 sigurniji internet 2013
 
Relazione Tirocinio
Relazione TirocinioRelazione Tirocinio
Relazione Tirocinio
 

Ähnlich wie Programowanie Równolegle - Parallel Extensions

HYC - Angular stań się kanciastym
HYC - Angular stań się kanciastymHYC - Angular stań się kanciastym
HYC - Angular stań się kanciastymDariusz Jagieło
 
Spa i .net core
Spa i .net coreSpa i .net core
Spa i .net coreVimanet
 
Using Red Gate SQL Doc for database documentation
Using Red Gate SQL Doc for database documentationUsing Red Gate SQL Doc for database documentation
Using Red Gate SQL Doc for database documentationMariusz Koprowski
 
Webinar - Podstawy Node.js
Webinar - Podstawy Node.jsWebinar - Podstawy Node.js
Webinar - Podstawy Node.jsWojciech Kaniuka
 
4Developers 2015: Orleans - aplikacje, które skalują i dystrybuują się same -...
4Developers 2015: Orleans - aplikacje, które skalują i dystrybuują się same -...4Developers 2015: Orleans - aplikacje, które skalują i dystrybuują się same -...
4Developers 2015: Orleans - aplikacje, które skalują i dystrybuują się same -...PROIDEA
 
Aplikacje internetowe (2010)
Aplikacje internetowe (2010)Aplikacje internetowe (2010)
Aplikacje internetowe (2010)Adrian Kalbarczyk
 
Jak podwoić wartość kodu .NET?
Jak podwoić wartość kodu .NET?Jak podwoić wartość kodu .NET?
Jak podwoić wartość kodu .NET?javOnet
 
AADays 2015 - Jak to zrobic w JavaScript
AADays 2015 - Jak to zrobic w JavaScriptAADays 2015 - Jak to zrobic w JavaScript
AADays 2015 - Jak to zrobic w JavaScriptJacek Okrojek
 
tRPC - czy to koniec GraphQL?
tRPC - czy to koniec GraphQL?tRPC - czy to koniec GraphQL?
tRPC - czy to koniec GraphQL?Brainhub
 
Michał Dec - Quality in Clouds
Michał Dec - Quality in CloudsMichał Dec - Quality in Clouds
Michał Dec - Quality in Cloudskraqa
 
Extjs & netzke
Extjs & netzkeExtjs & netzke
Extjs & netzkeGaldoMedia
 
Wjug from java to big data
Wjug   from java to big dataWjug   from java to big data
Wjug from java to big dataPiotr Guzik
 
Elitmind @ Azure User Group #16 Warszawa - Michał Krajewski
Elitmind @  Azure User Group #16 Warszawa - Michał Krajewski Elitmind @  Azure User Group #16 Warszawa - Michał Krajewski
Elitmind @ Azure User Group #16 Warszawa - Michał Krajewski Elitmind
 
Wprowadzenie do Kubernetesa. K8S jako nowy Linux.
Wprowadzenie do Kubernetesa. K8S jako nowy Linux.Wprowadzenie do Kubernetesa. K8S jako nowy Linux.
Wprowadzenie do Kubernetesa. K8S jako nowy Linux.Wojciech Barczyński
 
4Developers 2015: Property-based testing w języku Scala - Paweł Grajewski
4Developers 2015: Property-based testing w języku Scala - Paweł Grajewski4Developers 2015: Property-based testing w języku Scala - Paweł Grajewski
4Developers 2015: Property-based testing w języku Scala - Paweł GrajewskiPROIDEA
 
Cloud computing na bazie Windows Azure, Tomek Kopacz, Microsoft
Cloud computing na bazie Windows Azure, Tomek Kopacz, MicrosoftCloud computing na bazie Windows Azure, Tomek Kopacz, Microsoft
Cloud computing na bazie Windows Azure, Tomek Kopacz, MicrosoftBiznes 2.0
 

Ähnlich wie Programowanie Równolegle - Parallel Extensions (20)

HYC - Angular stań się kanciastym
HYC - Angular stań się kanciastymHYC - Angular stań się kanciastym
HYC - Angular stań się kanciastym
 
Scala
ScalaScala
Scala
 
SPA i .Net Core
SPA i .Net CoreSPA i .Net Core
SPA i .Net Core
 
Spa i .net core
Spa i .net coreSpa i .net core
Spa i .net core
 
Using Red Gate SQL Doc for database documentation
Using Red Gate SQL Doc for database documentationUsing Red Gate SQL Doc for database documentation
Using Red Gate SQL Doc for database documentation
 
Webinar - Podstawy Node.js
Webinar - Podstawy Node.jsWebinar - Podstawy Node.js
Webinar - Podstawy Node.js
 
Iron Python I Dlr
Iron Python I DlrIron Python I Dlr
Iron Python I Dlr
 
4Developers 2015: Orleans - aplikacje, które skalują i dystrybuują się same -...
4Developers 2015: Orleans - aplikacje, które skalują i dystrybuują się same -...4Developers 2015: Orleans - aplikacje, które skalują i dystrybuują się same -...
4Developers 2015: Orleans - aplikacje, które skalują i dystrybuują się same -...
 
Jaki framework wybrać
Jaki framework wybraćJaki framework wybrać
Jaki framework wybrać
 
Aplikacje internetowe (2010)
Aplikacje internetowe (2010)Aplikacje internetowe (2010)
Aplikacje internetowe (2010)
 
Jak podwoić wartość kodu .NET?
Jak podwoić wartość kodu .NET?Jak podwoić wartość kodu .NET?
Jak podwoić wartość kodu .NET?
 
AADays 2015 - Jak to zrobic w JavaScript
AADays 2015 - Jak to zrobic w JavaScriptAADays 2015 - Jak to zrobic w JavaScript
AADays 2015 - Jak to zrobic w JavaScript
 
tRPC - czy to koniec GraphQL?
tRPC - czy to koniec GraphQL?tRPC - czy to koniec GraphQL?
tRPC - czy to koniec GraphQL?
 
Michał Dec - Quality in Clouds
Michał Dec - Quality in CloudsMichał Dec - Quality in Clouds
Michał Dec - Quality in Clouds
 
Extjs & netzke
Extjs & netzkeExtjs & netzke
Extjs & netzke
 
Wjug from java to big data
Wjug   from java to big dataWjug   from java to big data
Wjug from java to big data
 
Elitmind @ Azure User Group #16 Warszawa - Michał Krajewski
Elitmind @  Azure User Group #16 Warszawa - Michał Krajewski Elitmind @  Azure User Group #16 Warszawa - Michał Krajewski
Elitmind @ Azure User Group #16 Warszawa - Michał Krajewski
 
Wprowadzenie do Kubernetesa. K8S jako nowy Linux.
Wprowadzenie do Kubernetesa. K8S jako nowy Linux.Wprowadzenie do Kubernetesa. K8S jako nowy Linux.
Wprowadzenie do Kubernetesa. K8S jako nowy Linux.
 
4Developers 2015: Property-based testing w języku Scala - Paweł Grajewski
4Developers 2015: Property-based testing w języku Scala - Paweł Grajewski4Developers 2015: Property-based testing w języku Scala - Paweł Grajewski
4Developers 2015: Property-based testing w języku Scala - Paweł Grajewski
 
Cloud computing na bazie Windows Azure, Tomek Kopacz, Microsoft
Cloud computing na bazie Windows Azure, Tomek Kopacz, MicrosoftCloud computing na bazie Windows Azure, Tomek Kopacz, Microsoft
Cloud computing na bazie Windows Azure, Tomek Kopacz, Microsoft
 

Programowanie Równolegle - Parallel Extensions

  • 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 Moore’a Liczba tranzystorów w układzie elektrycznym podwaja się co 18-24 miesiące. • Kres procesorów jednordzeniowych • Alternatywa: Procesory wielordzeniowe
  • 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. SINGLE CORE • Równoległość – wątki są wykonywanie fizycznie równolegle na różnych jednostkach obliczeniowych MULTI CORE
  • 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
  • 11. Walk Tree • Tabela wyników: Wysokość Liczba Czas – Czas – Czas - drzewa węzłów synchronicznie wątki 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
  • 12. Task Manager LQ WG LQ LQ T6 WG WG T7 GLOBAL QUEUE T5 T4 LQ T3 T2 WG T1
  • 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ść
  • 15. Imperative Data Parallelism • Parallel class • Zbiór statycznych metod • Metody pomocnicze do tworzenia Task’ów • Realizacja podstawowych wzorców • For • ForEach • Invoke
  • 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 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 • 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<string> 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... • 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 Developers Conference 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