Weitere ähnliche Inhalte Ähnlich wie Real Life Task Parallel Library, ITProDevConnections 2011 (Greek) (6) Mehr von Panagiotis Kanavos (6) Real Life Task Parallel Library, ITProDevConnections 2011 (Greek)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!
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
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
• Πεξηνξηζκόο ηεο πεξηπινθόηεηαο
19. Pipelines
• Κάζε βήκα εθηειείηαη μερσξηζηά
• ύλδεζε κέζσ concurrent collections
• Δπόκελν βήκα – DataFlow
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 Παρότι αυξάνεται ο αριθμός των επεξεργαστών η ταχύτητα παραμένει η ίδια ή και μειώνεται. Είναι σαν να μικραίνει ο κάθε επεξεργαστής. Παράδειγμα: Πως να χωρέσεις περισσότερα containers σε ένα γήπεδο? Πόσες σελίδες χωράνε σε ένα μεγάλο φύλλο χαρτί? Προβλήματα λυμένα εδώ και δεκαετίες