SlideShare ist ein Scribd-Unternehmen logo
1 von 30
Καθημερινές τρήσεις τοσ
Task Parallel Library
        Παλαγηώηεο Καλαβόο
              DotNetZone
Ση είλαη
• Βηβιηνζήθε γηα Task Parallelism
• LINQ Provider γηα Data Processing
Γηαηί?
•   Οη επεμεξγαζηέο κηθξαίλνπλ
•   Οη απαηηήζεηο ησλ ρξεζηώλ απμάλνληαη
•   Σα αηηήκαηα απμάλνληαη
•   Ζ πνιππινθόηεηα ηνπ θώδηθα απμάλεηαη
•   Σα κπινθαξίζκαηα απμάλνληαη
Γηαηί όρη ...
• Απεπζείαο Threads ?
• Background Worker?
• ThreadPool.QueueUserWorkItem ?
΢ελάξηα
• Σαρύηεξε επεμεξγαζία ελόο όγθνπ
  δεδνκέλσλ
  – Number crunching
• Δθηέιεζε καθξνρξόλησλ εξγαζηώλ
• Δμππεξέηεζε κέγηζηνπ αξηζκνύ αηηεκάησλ
  – Social Sites, Web sites, Billing, Log
    aggregators
• Δξγαζίεο κε ζπρλά κπινθαξίζκαηα
  – REST clients, IT management apps
Πσο αληηκεησπίδνληαη - 1?
• Task Parallelism
  – ΢πάσ ην πξόβιεκα ζε βήκαηα
  – Μεηαηξέπσ θάζε βήκα ζε function
  – ΢πλδέσ ηα βήκαηα κε Continuations
• Σν TPL αλαζέηεη ηα tasks ζε threads όπσο
  ρξεηάδεηαη
• ΓΔΝ ρξεηάδεηαη λα νξίζσ αξηζκό Task ή
  Thread!
Πώο αληηκεησπίδνληαη – 2?
• Data Parallelism
  – ΢πάσ ηα δεδνκέλα ζε ηκήκαηα
  – Οξίδσ ηνλ αιγόξηζκν ζε έλα function
• To TPL δεκηνπξγεί ηα απαξαίηεηα tasks
• Σα tasks αλαηίζεληαη ζε threads
• ΓΔΝ ρξεηάδεηαη λα νξίζσ αξηζκό Task ή
  Thread!
Παξάδεηγκα




             Ραβαλί
΢ύγρξνλν Ραβαλί
•   Υηππάκε ηνπο θξόθνπο κε ηα 2/3 ηεο δάραξεο κέρξη λα αθξαηέςνπλ
•   Υηππάκε ηα αζπξάδηα κε ην 1/3 ηεο δάραξεο ζε ζθηθηή καξέγθα
•   θαη πξνζζέηνπκε ην κηζό κείγκα ζην κείγκα κε ηνπο θξόθνπο.
•   Ρίρλνπκε ην ζηκηγδάιη κε ην αιεύξη θαη ηελ θαξύδα,
•   πξνζζέηνπκε ηε ππόινηπε καξέγθα θαη αλαθαηεύνπκε
•   Αλαθαηεύνπκε θαη ηνπνζεηνύκε ζε κηα θόξκα
•   Φήλνπκε ζε πξνζεξκαζκέλν θνύξλν ζηνπο 170νC γηα 20-25 ιεπηά.
•   Αυήνοσμε να κρσώσει
•   Δηνηκάδνπκε ην ζηξόπη, βξάδνληαο λεξό, δάραξε, ιεκόλη γηα 3 ιεπηά.
•   Πεξηρύλνπκε ην ξαβαλί κε ην ζηξόπη δεζηό
•   Παζπαιίδνπκε κε ηλδηθή θαξύδα.
Παξάιιειν Ραβαλί
• Υηππάκε ηνπο θξόθνπο        • Υηππάκε ηα αζπξάδηα
            •   Πξνζζέηνπκε ην κηζό κείγκα
            •   Ρίρλνπκε ην ζπκηγδάιη
            •   Πξνζζέηνπκε ηελ ππόινηπε καξέγθα
            •   Αλαθαηεύνπκε
            •   Ρίρλνπκε ζηε θόξκα

• Φήλνπκε                        • Δηνηκάδνπκε ην ζηξόπη
                • Πεξηρύλνπκε
                • Παζπαιίδνπκε
Βαζηθέο Έλλνηεο Tasks
•   Tasks
•   Continuations
•   Task Schedulers – Οη δηθνί καο Allocators
•   Concurrent Collections
•   Δύθνια Thread Local Variables
Βαζηθέο Έλλνηεο Parallel LINQ
•   LINQ queries
•   Partitioners
•   Καηάιιειν γηα In-Memory processing
•   Βνιηθό όηαλ βαξηόκαζηε ηα Tasks
Σερληθέο
•   Parallel.For ή PLINQ
•   Recursion
•   Producer/Consumer
•   Pipelines
•   Task Iterators θαη Async CTP
•   Job Queues
•   Agents
Parallel.For/Parallel.ForEach
• Data Parallelism
• Μπνξνύκε λα νξίζνπκε
  – Μέγηζην αξηζκό threads
  – CancellationToken
  – TaskScheduler
Παξάδεηγκα
Γεκηνπξγία Thumbnails
Μία ηδέα από ην Faking It, IEEE Software, Sep 2011
ηνπ Γηνκήδε ΢πηλέιιε
PLINQ
• LINQ queries
• Potentially, multiple threads per item
• Πξνζνρή ζε races
  List<int> list = new List<int>();
  var q = src.AsParallel()
    .Select(x => { list.Add(x); return x; })
    .Where(x => true) .Take(100);
Recursion
• Ξεθηλάκε ην επόκελν βήκα πξηλ
  επεμεξγαζηνύκε ην ηξέρνλ
• Φνβεξή δηεπθόιπλζε ηα lambdas
• Πεξηνξηζκόο ηεο πεξηπινθόηεηαο
Producer/Consumer
• Ξερσξίδνπκε ηνλ θώδηθα πνπ δεκηνπξγεί
  input θαη output
• Δπθνιόηεξν synchronization
• Υάλεηαη ην call stack
Pipelines
• Κάζε βήκα εθηειείηαη μερσξηζηά
• ΢ύλδεζε κέζσ concurrent collections
• Δπόκελν βήκα – DataFlow
Job Queues
• Λίζηα από Jobs
• Βνιηθόηαην γηα throttling
  – SQLite writes
Agents
• Κόιπν από F#, Scala
• Αληαιιαγή κελπκάησλ
Έμπλπα Σξπθ
•   Απνθπγή Side Effects
•   Υξήζε Functional Style
•   Καζαξόο Κώδηθαο
•   ΣΟ ΜΔΓΑΛΟ ΚΟΛΠΟ:
•   Υξήζε έηνηκσλ, δνθηκαζκέλσλ
    αιγνξίζκσλ
    – IEEE, ACM Journals θαη βηβιηνζήθεο
ΝΑΗ TPL
• Απινπνίεζε παξάιιεινπ ή αζύγρξνλνπ
  θώδηθα
• Υξήζε έηνηκσλ βηβιηνζεθώλ
• ΢ελάξηα πνπ ΣΑΗΡΗΑΕΟΤΝ ζην Task ή ην
  Data Parallelism
ΟΥΗ TPL
• Όηαλ θόβνπκε κε καληνιίλν
• Γηα λα επηηαρύλνπκε «θαθνύο»
  αιγόξηζκνπο
• Γηα λα «επηηαρύλνπκε « ηε βάζε
  δεδνκέλσλ
  – ΢σζηή SQL θαη Indexes
  – Απνθπγή Cursors
  – Reporting DBs, Data Warehouse, OLAP
    Cubes
Όηαλ δελ θηάλεη ε TPL
• Functional γιώζζεο όπσο F#, Scala
• Distributed Frameworks όπσο Hadoop
Οη ηάζεηο
• Πεξηζζόηεξα requests από ιηγόηεξα threads
    – Stackless Python: No blocking calls allowed
•   Async Everything!
•   Πην functional θώδηθαο
•   Υξήζε message passing, agents
•   Δμεηδηθεπκέλα Framework θαη DSLs
    – Reactive Framework
    – R/Parallel
    – Hadoop
Βηβιία
• Parallel Programming with .NET, Microsoft
• Pro Parallel Programming with C#, Wiley
• Concurrent Programming on Windows,
  Pearson
• The Art of Concurrency, O’Reilly
Υξήζηκα Links
• Parallel FX Team
  http://blogs.msdn.com/b/pfxteam/
• ΗΔΔΔ Computer Society
  http://www.computer.org
• ACM http://www.acm.org
΢ρεηηθέο Παξνπζηάζεηο
• DEV11 – Async CTP: Say Goodbye to Callbacks
  Μαλώιεο Κειατδίηεο
• DEV18 – All About Reactive Extensions
  Άγγεινο Μπηκπνύδεο
• DEV13 – Lambda The Ultimate
  Νίθνο Παιιαδηλόο
Αμηνιόγεζε παξνπζηάζεσλ

• Πείηε καο ηελ γλώκε ζαο θαη κπείηε
  ζηελ θιήξσζε γηα ηα δώξα καο.
• ΢πκπιεξώζηε ην έληππν
  αμηνιόγεζεο θαη παξαδώζηε ην ζηελ
  γξακκαηεία.

Weitere ähnliche Inhalte

Ähnlich wie Real Life Task Parallel Library, ITProDevConnections 2011 (Greek) (6)

Περατζάδα στο Azure Event Hub
Περατζάδα στο Azure Event HubΠερατζάδα στο Azure Event Hub
Περατζάδα στο Azure Event Hub
 
Kourvoulis ptyxiaki
Kourvoulis ptyxiakiKourvoulis ptyxiaki
Kourvoulis ptyxiaki
 
The Server-SIde Story: Παράλληλος και ασύγχρονος προγραμματισμός στο .NET - I...
The Server-SIde Story: Παράλληλος και ασύγχρονος προγραμματισμός στο .NET - I...The Server-SIde Story: Παράλληλος και ασύγχρονος προγραμματισμός στο .NET - I...
The Server-SIde Story: Παράλληλος και ασύγχρονος προγραμματισμός στο .NET - I...
 
Τεχνολογίες Κοινωνικής Δικτύωσης στην Εκπαίδευση-Παρουσίαση εργαλείων
Τεχνολογίες Κοινωνικής Δικτύωσης στην Εκπαίδευση-Παρουσίαση εργαλείωνΤεχνολογίες Κοινωνικής Δικτύωσης στην Εκπαίδευση-Παρουσίαση εργαλείων
Τεχνολογίες Κοινωνικής Δικτύωσης στην Εκπαίδευση-Παρουσίαση εργαλείων
 
Ad hoc networks
Ad hoc networksAd hoc networks
Ad hoc networks
 
Jeliot
JeliotJeliot
Jeliot
 

Mehr von Panagiotis Kanavos

Πίθος - Αρχιτεκτονική και τεχνολογίες .NET
Πίθος - Αρχιτεκτονική και τεχνολογίες .NETΠίθος - Αρχιτεκτονική και τεχνολογίες .NET
Πίθος - Αρχιτεκτονική και τεχνολογίες .NET
Panagiotis Kanavos
 

Mehr von Panagiotis Kanavos (6)

The server side story: Parallel and Asynchronous programming in .NET - ITPro...
The server side story:  Parallel and Asynchronous programming in .NET - ITPro...The server side story:  Parallel and Asynchronous programming in .NET - ITPro...
The server side story: Parallel and Asynchronous programming in .NET - ITPro...
 
77o dotNETZone Meetup: Pattern matching expressions. One small step for one l...
77o dotNETZone Meetup: Pattern matching expressions. One small step for one l...77o dotNETZone Meetup: Pattern matching expressions. One small step for one l...
77o dotNETZone Meetup: Pattern matching expressions. One small step for one l...
 
65ο DotNetZone event: Tpl data flow και railway oriented programming
65ο DotNetZone event: Tpl data flow και railway oriented programming65ο DotNetZone event: Tpl data flow και railway oriented programming
65ο DotNetZone event: Tpl data flow και railway oriented programming
 
Ο βασιλιάς Git!
Ο βασιλιάς Git!Ο βασιλιάς Git!
Ο βασιλιάς Git!
 
Το Azure δεν είναι χορτοφάγο! - 59ο DotNetZone Event
Το Azure δεν είναι χορτοφάγο! - 59ο DotNetZone EventΤο Azure δεν είναι χορτοφάγο! - 59ο DotNetZone Event
Το Azure δεν είναι χορτοφάγο! - 59ο DotNetZone Event
 
Πίθος - Αρχιτεκτονική και τεχνολογίες .NET
Πίθος - Αρχιτεκτονική και τεχνολογίες .NETΠίθος - Αρχιτεκτονική και τεχνολογίες .NET
Πίθος - Αρχιτεκτονική και τεχνολογίες .NET
 

Real Life Task Parallel Library, ITProDevConnections 2011 (Greek)

  • 1. Καθημερινές τρήσεις τοσ Task Parallel Library Παλαγηώηεο Καλαβόο DotNetZone
  • 2. Ση είλαη • Βηβιηνζήθε γηα Task Parallelism • LINQ Provider γηα Data Processing
  • 3. Γηαηί? • Οη επεμεξγαζηέο κηθξαίλνπλ • Οη απαηηήζεηο ησλ ρξεζηώλ απμάλνληαη • Σα αηηήκαηα απμάλνληαη • Ζ πνιππινθόηεηα ηνπ θώδηθα απμάλεηαη • Σα κπινθαξίζκαηα απμάλνληαη
  • 4. Γηαηί όρη ... • Απεπζείαο Threads ? • Background Worker? • ThreadPool.QueueUserWorkItem ?
  • 5. ΢ελάξηα • Σαρύηεξε επεμεξγαζία ελόο όγθνπ δεδνκέλσλ – Number crunching • Δθηέιεζε καθξνρξόλησλ εξγαζηώλ • Δμππεξέηεζε κέγηζηνπ αξηζκνύ αηηεκάησλ – Social Sites, Web sites, Billing, Log aggregators • Δξγαζίεο κε ζπρλά κπινθαξίζκαηα – REST clients, IT management apps
  • 6. Πσο αληηκεησπίδνληαη - 1? • Task Parallelism – ΢πάσ ην πξόβιεκα ζε βήκαηα – Μεηαηξέπσ θάζε βήκα ζε function – ΢πλδέσ ηα βήκαηα κε Continuations • Σν TPL αλαζέηεη ηα tasks ζε threads όπσο ρξεηάδεηαη • ΓΔΝ ρξεηάδεηαη λα νξίζσ αξηζκό Task ή Thread!
  • 7. Πώο αληηκεησπίδνληαη – 2? • Data Parallelism – ΢πάσ ηα δεδνκέλα ζε ηκήκαηα – Οξίδσ ηνλ αιγόξηζκν ζε έλα function • To TPL δεκηνπξγεί ηα απαξαίηεηα tasks • Σα tasks αλαηίζεληαη ζε threads • ΓΔΝ ρξεηάδεηαη λα νξίζσ αξηζκό Task ή Thread!
  • 8. Παξάδεηγκα Ραβαλί
  • 9. ΢ύγρξνλν Ραβαλί • Υηππάκε ηνπο θξόθνπο κε ηα 2/3 ηεο δάραξεο κέρξη λα αθξαηέςνπλ • Υηππάκε ηα αζπξάδηα κε ην 1/3 ηεο δάραξεο ζε ζθηθηή καξέγθα • θαη πξνζζέηνπκε ην κηζό κείγκα ζην κείγκα κε ηνπο θξόθνπο. • Ρίρλνπκε ην ζηκηγδάιη κε ην αιεύξη θαη ηελ θαξύδα, • πξνζζέηνπκε ηε ππόινηπε καξέγθα θαη αλαθαηεύνπκε • Αλαθαηεύνπκε θαη ηνπνζεηνύκε ζε κηα θόξκα • Φήλνπκε ζε πξνζεξκαζκέλν θνύξλν ζηνπο 170νC γηα 20-25 ιεπηά. • Αυήνοσμε να κρσώσει • Δηνηκάδνπκε ην ζηξόπη, βξάδνληαο λεξό, δάραξε, ιεκόλη γηα 3 ιεπηά. • Πεξηρύλνπκε ην ξαβαλί κε ην ζηξόπη δεζηό • Παζπαιίδνπκε κε ηλδηθή θαξύδα.
  • 10. Παξάιιειν Ραβαλί • Υηππάκε ηνπο θξόθνπο • Υηππάκε ηα αζπξάδηα • Πξνζζέηνπκε ην κηζό κείγκα • Ρίρλνπκε ην ζπκηγδάιη • Πξνζζέηνπκε ηελ ππόινηπε καξέγθα • Αλαθαηεύνπκε • Ρίρλνπκε ζηε θόξκα • Φήλνπκε • Δηνηκάδνπκε ην ζηξόπη • Πεξηρύλνπκε • Παζπαιίδνπκε
  • 11. Βαζηθέο Έλλνηεο Tasks • Tasks • Continuations • Task Schedulers – Οη δηθνί καο Allocators • Concurrent Collections • Δύθνια Thread Local Variables
  • 12. Βαζηθέο Έλλνηεο Parallel LINQ • LINQ queries • Partitioners • Καηάιιειν γηα In-Memory processing • Βνιηθό όηαλ βαξηόκαζηε ηα Tasks
  • 13. Σερληθέο • Parallel.For ή PLINQ • Recursion • Producer/Consumer • Pipelines • Task Iterators θαη Async CTP • Job Queues • Agents
  • 14. Parallel.For/Parallel.ForEach • Data Parallelism • Μπνξνύκε λα νξίζνπκε – Μέγηζην αξηζκό threads – CancellationToken – TaskScheduler
  • 15. Παξάδεηγκα Γεκηνπξγία Thumbnails Μία ηδέα από ην Faking It, IEEE Software, Sep 2011 ηνπ Γηνκήδε ΢πηλέιιε
  • 16. PLINQ • LINQ queries • Potentially, multiple threads per item • Πξνζνρή ζε races List<int> list = new List<int>(); var q = src.AsParallel() .Select(x => { list.Add(x); return x; }) .Where(x => true) .Take(100);
  • 17. Recursion • Ξεθηλάκε ην επόκελν βήκα πξηλ επεμεξγαζηνύκε ην ηξέρνλ • Φνβεξή δηεπθόιπλζε ηα lambdas • Πεξηνξηζκόο ηεο πεξηπινθόηεηαο
  • 18. Producer/Consumer • Ξερσξίδνπκε ηνλ θώδηθα πνπ δεκηνπξγεί input θαη output • Δπθνιόηεξν synchronization • Υάλεηαη ην call stack
  • 19. Pipelines • Κάζε βήκα εθηειείηαη μερσξηζηά • ΢ύλδεζε κέζσ concurrent collections • Δπόκελν βήκα – DataFlow
  • 20. Job Queues • Λίζηα από Jobs • Βνιηθόηαην γηα throttling – SQLite writes
  • 21. Agents • Κόιπν από F#, Scala • Αληαιιαγή κελπκάησλ
  • 22. Έμπλπα Σξπθ • Απνθπγή Side Effects • Υξήζε Functional Style • Καζαξόο Κώδηθαο • ΣΟ ΜΔΓΑΛΟ ΚΟΛΠΟ: • Υξήζε έηνηκσλ, δνθηκαζκέλσλ αιγνξίζκσλ – IEEE, ACM Journals θαη βηβιηνζήθεο
  • 23. ΝΑΗ TPL • Απινπνίεζε παξάιιεινπ ή αζύγρξνλνπ θώδηθα • Υξήζε έηνηκσλ βηβιηνζεθώλ • ΢ελάξηα πνπ ΣΑΗΡΗΑΕΟΤΝ ζην Task ή ην Data Parallelism
  • 24. ΟΥΗ TPL • Όηαλ θόβνπκε κε καληνιίλν • Γηα λα επηηαρύλνπκε «θαθνύο» αιγόξηζκνπο • Γηα λα «επηηαρύλνπκε « ηε βάζε δεδνκέλσλ – ΢σζηή SQL θαη Indexes – Απνθπγή Cursors – Reporting DBs, Data Warehouse, OLAP Cubes
  • 25. Όηαλ δελ θηάλεη ε TPL • Functional γιώζζεο όπσο F#, Scala • Distributed Frameworks όπσο Hadoop
  • 26. Οη ηάζεηο • Πεξηζζόηεξα requests από ιηγόηεξα threads – Stackless Python: No blocking calls allowed • Async Everything! • Πην functional θώδηθαο • Υξήζε message passing, agents • Δμεηδηθεπκέλα Framework θαη DSLs – Reactive Framework – R/Parallel – Hadoop
  • 27. Βηβιία • Parallel Programming with .NET, Microsoft • Pro Parallel Programming with C#, Wiley • Concurrent Programming on Windows, Pearson • The Art of Concurrency, O’Reilly
  • 28. Υξήζηκα Links • Parallel FX Team http://blogs.msdn.com/b/pfxteam/ • ΗΔΔΔ Computer Society http://www.computer.org • ACM http://www.acm.org
  • 29. ΢ρεηηθέο Παξνπζηάζεηο • DEV11 – Async CTP: Say Goodbye to Callbacks Μαλώιεο Κειατδίηεο • DEV18 – All About Reactive Extensions Άγγεινο Μπηκπνύδεο • DEV13 – Lambda The Ultimate Νίθνο Παιιαδηλόο
  • 30. Αμηνιόγεζε παξνπζηάζεσλ • Πείηε καο ηελ γλώκε ζαο θαη κπείηε ζηελ θιήξσζε γηα ηα δώξα καο. • ΢πκπιεξώζηε ην έληππν αμηνιόγεζεο θαη παξαδώζηε ην ζηελ γξακκαηεία.

Hinweis der Redaktion

  1. Παρότι αυξάνεται ο αριθμός των επεξεργαστών η ταχύτητα παραμένει η ίδια ή και μειώνεται. Είναι σαν να μικραίνει ο κάθε επεξεργαστής.
  2. Παράδειγμα: Πως να χωρέσεις περισσότερα containers σε ένα γήπεδο? Πόσες σελίδες χωράνε σε ένα μεγάλο φύλλο χαρτί? Προβλήματα λυμένα εδώ και δεκαετίες