Real Life Task Parallel Library, ITProDevConnections 2011 (Greek)

483 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
483
On SlideShare
0
From Embeds
0
Number of Embeds
36
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • Παρότι αυξάνεται ο αριθμός των επεξεργαστών η ταχύτητα παραμένει η ίδια ή και μειώνεται. Είναι σαν να μικραίνει ο κάθε επεξεργαστής.
  • Παράδειγμα: Πως να χωρέσεις περισσότερα containers σε ένα γήπεδο? Πόσες σελίδες χωράνε σε ένα μεγάλο φύλλο χαρτί? Προβλήματα λυμένα εδώ και δεκαετίες
  • Real Life Task Parallel Library, ITProDevConnections 2011 (Greek)

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

    ×