Real Life Task Parallel Library, ITProDevConnections 2011 (Greek)

  • 256 views
Uploaded on

 

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
256
On Slideshare
0
From Embeds
0
Number of Embeds
2

Actions

Shares
Downloads
0
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

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

Transcript

  • 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. Αμηνιόγεζε παξνπζηάζεσλ• Πείηε καο ηελ γλώκε ζαο θαη κπείηε ζηελ θιήξσζε γηα ηα δώξα καο.• ΢πκπιεξώζηε ην έληππν αμηνιόγεζεο θαη παξαδώζηε ην ζηελ γξακκαηεία.