Top Banner
Καθημερινές τρήσεις τοσ Task Parallel Library Παλαγηώηεο Καλαβόο DotNetZone
30

Real Life Task Parallel Library, ITProDevConnections 2011 (Greek)

Jul 08, 2015

Download

Technology

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Real Life Task Parallel Library, ITProDevConnections 2011 (Greek)

Καθημερινές τρήσεις τοσ

Task Parallel LibraryΠαλαγηώηεο Καλαβόο

DotNetZone

Page 2: Real Life Task Parallel Library, ITProDevConnections 2011 (Greek)

Ση είλαη

• Βηβιηνζήθε γηα Task Parallelism

• LINQ Provider γηα Data Processing

Page 3: Real Life Task Parallel Library, ITProDevConnections 2011 (Greek)

Γηαηί?

• Οη επεμεξγαζηέο κηθξαίλνπλ

• Οη απαηηήζεηο ησλ ρξεζηώλ απμάλνληαη

• Σα αηηήκαηα απμάλνληαη

• Ζ πνιππινθόηεηα ηνπ θώδηθα απμάλεηαη

• Σα κπινθαξίζκαηα απμάλνληαη

Page 4: Real Life Task Parallel Library, ITProDevConnections 2011 (Greek)

Γηαηί όρη ...

• Απεπζείαο Threads ?

• Background Worker?

• ThreadPool.QueueUserWorkItem ?

Page 5: Real Life Task Parallel Library, ITProDevConnections 2011 (Greek)

ελάξηα

• Σαρύηεξε επεμεξγαζία ελόο όγθνπ δεδνκέλσλ

– Number crunching

• Δθηέιεζε καθξνρξόλησλ εξγαζηώλ

• Δμππεξέηεζε κέγηζηνπ αξηζκνύ αηηεκάησλ

– Social Sites, Web sites, Billing, Log aggregators

• Δξγαζίεο κε ζπρλά κπινθαξίζκαηα

– REST clients, IT management apps

Page 6: Real Life Task Parallel Library, ITProDevConnections 2011 (Greek)

Πσο αληηκεησπίδνληαη - 1?

• Task Parallelism

– πάσ ην πξόβιεκα ζε βήκαηα

– Μεηαηξέπσ θάζε βήκα ζε function

– πλδέσ ηα βήκαηα κε Continuations

• Σν TPL αλαζέηεη ηα tasks ζε threads όπσο

ρξεηάδεηαη

• ΓΔΝ ρξεηάδεηαη λα νξίζσ αξηζκό Task ή

Thread!

Page 7: Real Life Task Parallel Library, ITProDevConnections 2011 (Greek)

Πώο αληηκεησπίδνληαη – 2?

• Data Parallelism

– πάσ ηα δεδνκέλα ζε ηκήκαηα

– Οξίδσ ηνλ αιγόξηζκν ζε έλα function

• To TPL δεκηνπξγεί ηα απαξαίηεηα tasks

• Σα tasks αλαηίζεληαη ζε threads

• ΓΔΝ ρξεηάδεηαη λα νξίζσ αξηζκό Task ή

Thread!

Page 8: Real Life Task Parallel Library, ITProDevConnections 2011 (Greek)

Παξάδεηγκα

Ραβαλί

Page 9: Real Life Task Parallel Library, ITProDevConnections 2011 (Greek)

ύγρξνλν Ραβαλί

• Υηππάκε ηνπο θξόθνπο κε ηα 2/3 ηεο δάραξεο κέρξη λα αθξαηέςνπλ

• Υηππάκε ηα αζπξάδηα κε ην 1/3 ηεο δάραξεο ζε ζθηθηή καξέγθα

• θαη πξνζζέηνπκε ην κηζό κείγκα ζην κείγκα κε ηνπο θξόθνπο.

• Ρίρλνπκε ην ζηκηγδάιη κε ην αιεύξη θαη ηελ θαξύδα,

• πξνζζέηνπκε ηε ππόινηπε καξέγθα θαη αλαθαηεύνπκε

• Αλαθαηεύνπκε θαη ηνπνζεηνύκε ζε κηα θόξκα

• Φήλνπκε ζε πξνζεξκαζκέλν θνύξλν ζηνπο 170νC γηα 20-25 ιεπηά.

• Αυήνοσμε να κρσώσει

• Δηνηκάδνπκε ην ζηξόπη, βξάδνληαο λεξό, δάραξε, ιεκόλη γηα 3 ιεπηά.

• Πεξηρύλνπκε ην ξαβαλί κε ην ζηξόπη δεζηό

• Παζπαιίδνπκε κε ηλδηθή θαξύδα.

Page 10: Real Life Task Parallel Library, ITProDevConnections 2011 (Greek)

Παξάιιειν Ραβαλί

• Υηππάκε ηνπο θξόθνπο • Υηππάκε ηα αζπξάδηα

• Πξνζζέηνπκε ην κηζό κείγκα

• Ρίρλνπκε ην ζπκηγδάιη

• Πξνζζέηνπκε ηελ ππόινηπε καξέγθα

• Αλαθαηεύνπκε

• Ρίρλνπκε ζηε θόξκα

• Πεξηρύλνπκε

• Παζπαιίδνπκε

• Φήλνπκε • Δηνηκάδνπκε ην ζηξόπη

Page 11: Real Life Task Parallel Library, ITProDevConnections 2011 (Greek)

Βαζηθέο Έλλνηεο Tasks

• Tasks

• Continuations

• Task Schedulers – Οη δηθνί καο Allocators

• Concurrent Collections

• Δύθνια Thread Local Variables

Page 12: Real Life Task Parallel Library, ITProDevConnections 2011 (Greek)

Βαζηθέο Έλλνηεο Parallel LINQ

• LINQ queries

• Partitioners

• Καηάιιειν γηα In-Memory processing

• Βνιηθό όηαλ βαξηόκαζηε ηα Tasks

Page 13: Real Life Task Parallel Library, ITProDevConnections 2011 (Greek)

Σερληθέο

• Parallel.For ή PLINQ

• Recursion

• Producer/Consumer

• Pipelines

• Task Iterators θαη Async CTP

• Job Queues

• Agents

Page 14: Real Life Task Parallel Library, ITProDevConnections 2011 (Greek)

Parallel.For/Parallel.ForEach

• Data Parallelism

• Μπνξνύκε λα νξίζνπκε

– Μέγηζην αξηζκό threads

– CancellationToken

– TaskScheduler

Page 15: Real Life Task Parallel Library, ITProDevConnections 2011 (Greek)

Παξάδεηγκα

Γεκηνπξγία ThumbnailsΜία ηδέα από ην Faking It, IEEE Software, Sep 2011

ηνπ Γηνκήδε πηλέιιε

Page 16: Real Life Task Parallel Library, ITProDevConnections 2011 (Greek)

PLINQ

• LINQ queries

• Potentially, multiple threads per item

• Πξνζνρή ζε racesList<int> list = new List<int>();

var q = src.AsParallel()

.Select(x => { list.Add(x); return x; })

.Where(x => true) .Take(100);

Page 17: Real Life Task Parallel Library, ITProDevConnections 2011 (Greek)

Recursion

• Ξεθηλάκε ην επόκελν βήκα πξηλ

επεμεξγαζηνύκε ην ηξέρνλ

• Φνβεξή δηεπθόιπλζε ηα lambdas

• Πεξηνξηζκόο ηεο πεξηπινθόηεηαο

Page 18: Real Life Task Parallel Library, ITProDevConnections 2011 (Greek)

Producer/Consumer

• Ξερσξίδνπκε ηνλ θώδηθα πνπ δεκηνπξγεί

input θαη output

• Δπθνιόηεξν synchronization

• Υάλεηαη ην call stack

Page 19: Real Life Task Parallel Library, ITProDevConnections 2011 (Greek)

Pipelines

• Κάζε βήκα εθηειείηαη μερσξηζηά

• ύλδεζε κέζσ concurrent collections

• Δπόκελν βήκα – DataFlow

Page 20: Real Life Task Parallel Library, ITProDevConnections 2011 (Greek)

Job Queues

• Λίζηα από Jobs

• Βνιηθόηαην γηα throttling

– SQLite writes

Page 21: Real Life Task Parallel Library, ITProDevConnections 2011 (Greek)

Agents

• Κόιπν από F#, Scala

• Αληαιιαγή κελπκάησλ

Page 22: Real Life Task Parallel Library, ITProDevConnections 2011 (Greek)

Έμπλπα Σξπθ

• Απνθπγή Side Effects

• Υξήζε Functional Style

• Καζαξόο Κώδηθαο

• ΣΟ ΜΔΓΑΛΟ ΚΟΛΠΟ:

• Υξήζε έηνηκσλ, δνθηκαζκέλσλ

αιγνξίζκσλ

– IEEE, ACM Journals θαη βηβιηνζήθεο

Page 23: Real Life Task Parallel Library, ITProDevConnections 2011 (Greek)

ΝΑΗ TPL

• Απινπνίεζε παξάιιεινπ ή αζύγρξνλνπ

θώδηθα

• Υξήζε έηνηκσλ βηβιηνζεθώλ

• ελάξηα πνπ ΣΑΗΡΗΑΕΟΤΝ ζην Task ή ην

Data Parallelism

Page 24: Real Life Task Parallel Library, ITProDevConnections 2011 (Greek)

ΟΥΗ TPL

• Όηαλ θόβνπκε κε καληνιίλν

• Γηα λα επηηαρύλνπκε «θαθνύο» αιγόξηζκνπο

• Γηα λα «επηηαρύλνπκε « ηε βάζε δεδνκέλσλ

– σζηή SQL θαη Indexes

– Απνθπγή Cursors

– Reporting DBs, Data Warehouse, OLAP Cubes

Page 25: Real Life Task Parallel Library, ITProDevConnections 2011 (Greek)

Όηαλ δελ θηάλεη ε TPL

• Functional γιώζζεο όπσο F#, Scala

• Distributed Frameworks όπσο Hadoop

Page 26: Real Life Task Parallel Library, ITProDevConnections 2011 (Greek)

Οη ηάζεηο

• Πεξηζζόηεξα requests από ιηγόηεξα threads

– Stackless Python: No blocking calls allowed

• Async Everything!

• Πην functional θώδηθαο

• Υξήζε message passing, agents

• Δμεηδηθεπκέλα Framework θαη DSLs

– Reactive Framework

– R/Parallel

– Hadoop

Page 28: Real Life Task Parallel Library, ITProDevConnections 2011 (Greek)

Υξήζηκα Links

• Parallel FX Team

http://blogs.msdn.com/b/pfxteam/

• ΗΔΔΔ Computer Society http://www.computer.org

• ACM http://www.acm.org

Page 29: Real Life Task Parallel Library, ITProDevConnections 2011 (Greek)

ρεηηθέο Παξνπζηάζεηο

• DEV11 – Async CTP: Say Goodbye to CallbacksΜαλώιεο Κειατδίηεο

• DEV18 – All About Reactive Extensions

Άγγεινο Μπηκπνύδεο

• DEV13 – Lambda The Ultimate

Νίθνο Παιιαδηλόο

Page 30: Real Life Task Parallel Library, ITProDevConnections 2011 (Greek)

Αμηνιόγεζε παξνπζηάζεσλ

• Πείηε καο ηελ γλώκε ζαο θαη κπείηε

ζηελ θιήξσζε γηα ηα δώξα καο.

• πκπιεξώζηε ην έληππν

αμηνιόγεζεο θαη παξαδώζηε ην ζηελ

γξακκαηεία.