Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

TPL & Map Reduce

Îåêßíçóå áðü ôï ìÝëïò Bill . Τελευταία δημοσίευση από το μέλος Παναγιώτης Καναβός στις 31-05-2012, 13:47. Υπάρχουν 17 απαντήσεις.
Σελίδα 2 από 2 (18 εγγραφές)   < 1 2
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  31-05-2012, 01:16 70475 σε απάντηση της 70474

    Απ: TPL & Map Reduce

    Έχεις διαβάσει το "PLINQ: Parallel queries in .NET";

    Ακόμα κι ένας άνθρωπος μπορεί ν' αλλάξει τον κόσμο. Μη θέλεις να κυβερνήσεις. Απλά δείξε το μονοπάτι κι ο κόσμος θ' ακολουθήσει!!
  •  31-05-2012, 10:51 70481 σε απάντηση της 70474

    Απ: TPL & Map Reduce

    Bill :
    Αυτό που αναφέρεις ότι είναι συντηριτικός ο αλγόριθμος σε PLINQ μπορούμε να το αλλάξουμε όπως είδα με το WithExecutionMode.(ParallelExecutionMode.ForceParallelism) στο PLINQ ερώτημα και να το εκτελέσουμε με ότι κόστος συνεπάγετε αυτό παράλληλα (βέβαια αυτό μπορεί να είναι και κακή τεχνική αν ο φόρτος εργασίας του μηχανήματος είναι μεγάλος) .
    Δεν είναι θέμα φόρτου. Αν το overhead της παράλληλης επεξεργασίας είναι μεγαλύτερο από  το όφελος, το ForceParallelism θα προκαλέσει καθυστέρηση, όχι επιτάχυνση. Από την άλλη, υπάρχουν απλά περιπτώσεις που το .NET 4 θα κάνει λαθος. Αν π.χ. εκτελείς μία μακρόχρονη ασύγχρονη διαδικασία μέσα στο PLINQ query, μπορείς να σηκώσεις πολύ περισσότερα ταυτόχρονα tasks απ' ότι αν εκτελείς CPU heavy αλγόριθμους. Το PLINQ δεν το ξέρει όμως και έτσι επιλέγει συντηρητικά. 

    Για να πεις στο PLINQ πόσα ταυτόχρονα tasks να σηκώσει χρησιμοποιείς την  WithDegreeOfParallelism για να δώσεις μέχρι 64 ταυτόχρονα tasks. Λογικό το νούμερο αν μιλάμε για CPU bound (ποιός έχει μηχάνημα με 64 cores?) μικρό αν μιλάμε για ασύγχρονη επεξεργασία, όπως π.χ. crawling

     Επιπλέον, υπάρχουν operations που το .NET 4 θα εκτελέσει πάντα σύγχρονα ενώ το 4.5 θα εκτελέσει παράλληλα. Το PLINQ Queries that run in parallel in .NET 4.5 του Stephen Toub έχει ένα πίνακα με τις εντολές που εκτελούνται πλέον παράλληλα.


    Τέλος, το πρόβλημα με τα παραδείγματα που ψάχνεις είναι ότι ζητάς κάτι πολύ συγκεκριμένο - ΚΑΙ MapReduce ΚΑΙ TPL ΚΑΙ ένα μόνο μηχάνημα. Τα περισσότερα παραδείγματα ασχολούνται με ένα αντικείμενο τη φορά.

    Ειδικά για το word count μπορείς να δεις αυτό το walkthrough για το DataFlow, όπου σπάει το πρόβλημα σε βήματα ξεκινώντας από το split του αρχικού κειμένου. Το παράδειγμα που κοίταζες στην αρχή θεωρεί ότι το αρχείο έχει ήδη γίνει split σε λέξεις, κάτι το οποίο κοστίζει αρκετά και μπορεί να γίνει επίσης ασύγχρονα.

    Μπορεί να μην είναι το καλύτερο παράδειγμα για map reduce, αλλά δίνει μία καλή εικόνα μίας πιο γενικής αντιμετώπισης (pipeline από agents, όχι μόνο mappers, reducers).

    Για να δούμε μήπως βρούμε κανα καλύτερο παράδειγμα (ή το χρόνο να γράψουμε κανένα)

    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  31-05-2012, 13:47 70482 σε απάντηση της 70481

    Απ: TPL & Map Reduce

    Νομίζω ότι βρήκα ένα καλό παράδειγμα στο Parallel Aggregation το οποίο εξετάζει το map/reduce ως παραλλαγή του Parallel Aggregation. 

    Έστω ότι έχεις ένα social network και θέλεις να κάνεις friend recommendations. Τα recommendations θα είναι τα μέλη που δεν είναι φίλοι σου αλλά έχετε τους περισσότερους mutual.

    Στο πρώτο βήμα, ο αλγόριθμος βρίσκει τους φίλους των φίλων σου που δεν είναι ήδη φίλοι. Αυτό θα βγάλει μία λίστα με candidates από κάθε φίλο. Στο δεύτερο βήμα, ο αλγόριθμος υπολογίζει για κάθε candidate τον αριθμό των mutuals. Τέλος, επιλέγει τους top X για να σου τους προτείνει

    Το πρώτο βήμα αντιστοιχεί στο Map (από φίλους σε candidates) ενώ το δεύτερο το reduce (από πολλαπλές λίστες candidates σε ένα set από candidates με την αξιολόγηση τους). 

    Και τα δύο βήματα είναι σχετικά απλά, οπότε η αξία του map/reduce προέρχεται από το ότι μπορεί να κατανείμει το κάθε βήμα σε όσο το δυνατόν περισσότερα cores χωρίς προβλήματα blocking: ο κάθε mapper ή reducer παίρνει το δικό του αντίγραφο των δεδομένων χωρίς προβλήματα locking αφού δεν μοιράζεται τίποτε με τους άλλους.

    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
Σελίδα 2 από 2 (18 εγγραφές)   < 1 2
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems