380 likes | 457 Views
Προηγμενη ευρετηριαση δεδομενων. Ταξινόμηση – Αναζήτηση. Μοντέλα Δευτερεύουσας Μνήμης. Η Ανάγκη για Μοντέλα. Ένα μοντέλο μας επιτρέπει: Ευκολία ανάλυσης-σχεδίασης χωρίς ενοχλητικές λεπτομέρειες Εμπεριέχει τα κρίσιμα χαρακτηριστικά του πραγματικού συστήματος
E N D
Προηγμενηευρετηριασηδεδομενων Ταξινόμηση – Αναζήτηση
Η Ανάγκη για Μοντέλα • Ένα μοντέλο μας επιτρέπει: • Ευκολία ανάλυσης-σχεδίασης χωρίς ενοχλητικές λεπτομέρειες • Εμπεριέχει τα κρίσιμα χαρακτηριστικά του πραγματικού συστήματος • Ένα μοντέλο είναι πάντα λάθος – το θέμα είναι πόσο λάθος είναι
Δίσκος I/O Μνήμη B CPU M Απλό Μοντέλο Δευτερεύουσας Μνήμης Aggarwal and Vitter 1988 • Μέτρηση πλήθους μεταφορών μπλοκ μεταξύ των 2 επιπέδων μνήμης (κόστος) • Μοντελοποιεί το κύριο πρόβλημα • Πολύ πετυχημένο (απλότητα) Περιορισμοί • Οι παράμετροι Bκαι Mπρέπει να είναι γνωστοί • Δεν αντιμετωπίζει πολλαπλά επίπεδα μνημών • Δεν αντιμετωπίζει δυναμική μεταβολή του M
Το Μοντέλο Παράλληλων Δίσκων(PDM – Parallel Disk Model) Το πλήθος των δίσκωνμπορεί να είναι ίσο, μικρότερο ή μεγαλύτερο σε σχέση με το πλήθος των επεξεργαστών.
Παράμετροι του PDM Οι ποσότητες εκφράζονται σε σχέση με το πλήθος των στοιχείων • Ν → μέγεθος του προβλήματος • Μ → μέγεθος εσωτερικής μνήμης • Β → μέγεθος μπλοκ δίσκου • D → πλήθος δίσκων • P → πλήθος επεξεργαστών Ισχύει: Μ<Ν 1≤DB ≤M/2
Τύποι Προβλημάτων • Μαζικές ερωτήσεις: • Οι αιτήσεις για επεξεργασία μας δίνονται όλες μαζί. • Τις υπολογίζουμε όλες και έπειτα δίνουμε την απάντηση για κάθε μία από αυτές • Άμεσες Ερωτήσεις: • Οι αιτήσεις έρχονται σε σειρά. • Απαντάμε κάθε ερώτηση και έπειτα μας έρχεται η επόμενη για επεξεργασία.
Κάποιες Παράμετροι Ακόμα • Q → πλήθος ερωτήσεων (για μαζικές ερωτήσεις) • Ζ → μέγεθος απάντησης Πολλές φορές θα χρησιμοποιούμε τον εξής συμβολισμό:
Τι Μετράμε; Οι κύριες μετρικές απόδοσης στο PDM είναι: • Το πλήθος των μεταφορών (Ι/Ος) που εκτελούνται • Ο χώρος που χρησιμοποιείται • Ο χρόνος υπολογισμού των επεξεργαστών Ελπίζω να σας έχω πείσει ότι το (3) είναι αμελητέο (συνήθως) σε σχέση με τις υπόλοιπες δύο μετρικές.
B A N Ι/Ο Αποδοτική Διαπέραση Στοιχείων sum = 0 for i = 1 to N do sum = sum + A[i] Πόσα I/Oς; O(N/B) ή O(n) I/Oς
Cache Memory Model • N: μέγεθος προβλήματος • Β: μέγεθος cache line • M: Μέγεθος cache • α: συσχετισιμότηταcache • Μοντέλο κόστους: • Πλήθος από cache αποτυχίες • Πλήθος εντολών
Internal Memory Model • Όπως στο CMM συν: • Β΄: το πλήθος των δεδομένων σε μία σελίδα μνήμης • Τ: το πλήθος των μεταφράσεων στην TLB • Μοντέλο Κόστους όπως στο CMM συν: • TLB αποτυχίες
Τοπικότητα σε PDM . . .
Λωρίδες σε PDM • Πώς να προγραμματίζεις για έναν δίσκο και αυτόματα το πρόγραμμα να μπορεί να εκμεταλλευτεί τον παραλληλισμό των πολλών σε PDM; Απλή ιδέα (λωριδοποίηση δίσκων): • Το μέγεθος του λογικού μπλοκ δεν είναι B αλλά DB. • Μεταφέρουμε στην μνήμη μία λωρίδα και όχι ένα μπλοκ.
Λωρίδες σε PDM • Θέλουμε τα δεδομένα να είναι αποθηκευμένα και στους D δίσκους. Αυτό το κάνουμε αποθηκεύοντάς τα με την μορφή λωρίδας: • Επομένως μία πράξη μπορεί να γίνει σε Ο(n/D) Ι/Ος.
Λωριδοποίηση Δίσκων • Από τα βασικά προβλήματα: 3 στα 4 έχουν βέλτιστες λύσεις εφαρμόζοντας αυτή την τεχνική: • Διαπέραση (scanning) • Αναζήτηση (search) • Έξοδος (output) • Το πρόβλημα της ταξινόμησης δεν λύνεται βέλτιστα με αυτή την τεχνική.
B A N Διαπέραση Στοιχείων – D δίσκοι sum = 0 for i = 1 to N do sum = sum + A[i] Πόσα I/Oς; O(N/DB) ή O(n/D) I/Oς
Η Ταξινόμηση – Dδίσκοι • Βέλτιστη πολυπλοκότητα για ταξινόμηση: • Με λωριδοποίηση δίσκων από την περίπτωση D=1: • Στην πράξη είναι εξαιρετικά αποδοτικό
Ταξινόμηση (D=1) • <M/Bταξινομημένες λίστες συγχωνεύονται σεO(N/B) I/Oς M/Bμπλοκ στην κύρια μνήμη • Μη ταξινομημένη λίστα μπορεί να διαχωρισθείχρησιμοποιώντας <M/Bστοιχεία σεO(N/B) I/Oς
Απλή Ιδέα: Ταξινόμηση 2-δρόμων • Πέρασμα 1:Διάβασε ένα μπλοκ, ταξινόμηση και έπειτα αποθήκευση. • Πέρασμα 2, 3, …, κτλ: • Διάβασε 2 προηγούμενα περάσματα, ταξινόμηση, αποθήκευση. ΕΙΣΟΔΟΣ 1 ΕΞΟΔΟΣ ΕΙΣΟΔΟΣ 2 Δίσκος Δίσκος Κύρια Μνήμη
Παράδειγμα 6,2 2 Αρχείο Εισόδου 3,4 9,4 8,7 5,6 3,1 ΠΕΡΑΣΜΑ 0 • Σε κάθε πέρασμα διαβάζουμε και γράφουμε στον δίσκο κάθε διάστημα. • nμπλοκ στο αρχείο⇒πλήθος περασμάτων; • Συνολικό κόστος; • Ιδέα:Διαίρει και Βασίλευε 1,3 2 Ταξ. 1 μπλοκ 3,4 2,6 4,9 7,8 5,6 ΠΕΡΑΣΜΑ 1 4,7 1,3 2,3 Ταξ. 2 μπλοκ 8,9 5,6 2 4,6 ΠΕΡΑΣΜΑ 2 2,3 4,4 1,2 Ταξ. 4 μπλοκ 6,7 3,5 6 8,9 ΠΕΡΑΣΜΑ 3 1,2 2,3 3,4 Ταξ. 8 μπλοκ 4,5 6,6 7,8 9
2 2 3 3 5 5 6 6 9 9 11 13 15 19 21 25 27 1 4 7 10 14 29 33 41 49 51 52 57 1 2 3 4 5 6 7 8 9 10 11 12 13 14 Συγχωνευτής 4-δρόμων 8 12 16 18 22 24 31 34 35 38 42 46 εγγραφή 17 20 23 26 28 30 32 37 39 43 45 50 ανάγνωση Ταξινόμηση Συγχώνευσης (Mergesort)Συγχωνευτήςk-δρόμων Η συγχώνευση kακολουθιών μεNστοιχεία απαιτεί O(N/B) I/Oς (δεδομένου ότι k ≤ M/B – 1)
... M M N Αταξινόμητη Είσοδος Διαχωρισμός σε διαστήματα Διάστημα 1 Διάστημα 2 Διάστημα N/M Ταξινόμησε κάθε διάστημα Ταξινομημένο Συγχώνευση 1 Λειτουργία Αλγόριθμου • Η MergeSortαπαιτεί O(N/B·logM/B(N/B)) I/Oς • Στην πράξη τα Ι/Ος είναι: 4-6 x διαπέραση εισόδου Ταξινομημένο Ταξινομημένο Ταξινομημένο Ταξινομημένο Συγχώνευση 2 Ταξινομημένη Έξοδος
Ταξινόμηση Συγχώνευσης - Απόδοση • Κτίσε N/Mταξινομημένες λίστες μεγέθους Μ • Επαναληπτικά συγχώνευσε λίστες φάσεις με I/Oςη κάθε μία I/Oς
Γενική Τεχνική – Double Buffering • Για να μειώσουμε το χρόνο αναμονής για την ολοκλήρωση Ι/Ο, μπορούμε να το φέρουμε σε ένα `σκιώδες μπλοκ’. ΕΙΣΟΔΟΣ1 ΕΙΣΟΔΟΣ 1΄ ΕΙΣΟΔΟΣ 2 ΕΞΟΔΟΣ ΕΙΣΟΔΟΣ 2΄ ΕΞΟΔΟΣ΄ B Μέγεθος μπλοκ Δίσκος ΕΙΣΟΔΟΣ k Δίσκος ΕΙΣΟΔΟΣ k΄
Ταξινόμηση Διαχωρισμού(Γρήγορη Ταξινόμηση πολλών δρόμων) • Υπολόγισε Θ(M/B) στοιχεία διαχωρισμού • Διαχώρισε την αταξινόμητη λίστα σε Θ(M/B) αταξινόμητες λίστες ίδιου μεγέθους • Αναδρομικά διαχώρισε τις λίστες μέχρι να χωρέσουν στην μνήμη • φάσεις • I/Oςαν τα στοιχεία διαχωρισμού εντοπίζονται σε O(N/B) I/Oς
Παράδειγμα με 1 στοιχείο διαχωρισμού 3,4 6,2 9,4 8,7 5,6 3,1 2 • Σε κάθε πέρασμα διαχωρίζουμε με βάση 1 στοιχείο. • nμπλοκ στο αρχείο⇒πλήθος περασμάτων; • Συνολικό κόστος; • Ιδέα:Διαίρει και Βασίλευε (αντίστροφα από συγχώνευση) 5 3,4 2,4 3,1 2 5,6 9,8 7,6 3 7 2,1 2 3,4 4,3 5,6 6 7,9 8 . . .
Πιθανοτική Επιλογή Στοιχείων Διαχωρισμού (Εύκολη) Επιλογή S=Θ(min{m,n/m}) στοιχείων διαχωρισμού. Απλές μέθοδοι: • Επέλεξε τα πρώτα Sστοιχεία από τη λίστα που ταξινομούμε (σε αντιστοιχία με quicksort) και ευχόμαστε να δουλέψει • Τυχαία δειγματοληψία: • Επιλέγουμε τυχαία SlogS στοιχεία από τη λίστα • Τα ταξινομούμε και έπειτα επιλέγουμε κάθε logS-οστό στοιχείο για διαχωρισμό
Τυχαία Δειγματοληψία • Χρειαζόμαστε Ο(SlogS+Sort(SlogS)) Ι/Ος. Το S μπορεί να είναι το πολύ n½: • Κάθε καινούργια λίστα θα έχει μέσο μέγεθος Ο(Ν/S): • Πιθανότητα κάθε στοιχείου να πέσει σε μία υπολίστα 1/S • Άρα μέσο μέγεθος είναι O(N/S) SlogS N . . . S
Αναδιάταξη Ταξινόμησε Ν στοιχεία με βάση μία αντιμετάθεση των {1,2,3,…,Ν} Permutation– Hans Loffel Γιατί δεν έχουμε Ν/Β;
Κάτω Φράγμα Ταξινόμησης • Υπόθεση: Τα στοιχεία που ταξινομούμε είναι αδιαίρετα (indivisibility assumption) • Όλοι οι αλγόριθμοι ταξινόμησης δευτερεύουσας μνήμης στο μοντέλο PDM (για D=1) θα πρέπει να κάνουν τουλάχιστον O(nlogmn) I/Oς.
Ν στοιχεία δίνουν Ν! αναδιατάξεις. Στόχος μας είναι να δούμε πως μειώνεται το πλήθος των αναδιατάξεων έπειτα από κάθε πράξη, μέχρι να γίνει 1. Κάποια Βασικά… • Μοντέλο Μνήμης: PDM, D=1 • Μοντέλο συγκρίσεων: τα στοιχεία μπορούν να συγκριθούν μόνο στην κύρια μνήμη. Μπορούμε να τα μεταφέρουμε, να τα αντιγράψουμε και να τα διαγράψουμε – τίποτα άλλο. • Υποθέτουμε ότι M2B. • Τα μπλοκ στην αρχή είναι τοποθετημένα όλα μαζί σε μία περιοχή του δίσκου. • Η σειρά των στοιχείων στην εσωτερική μνήμη δίνεται δωρεάν. • Δοθείσης μία εκτέλεσης ενός αλγορίθμου ταξινόμησης ορίζουμε το St = πλήθος δυνατών αναδιατάξεων έπειτα από t I/Oς. (S0=Ν!)
Πράξεις και Μείωση St • Εγγραφή μπλοκ στο δίσκο: Δεν επηρεάζει • Όσες αναδιατάξεις είχαμε πριν την εγγραφή έχουμε και μετά • Ανάγνωση για πρώτη φορά μπλοκ: • Ανάγνωση μπλοκ (όχι για πρώτη φορά):
Μείωση Αναδιατάξεων • Αν X είναι η μείωση κατά την πράξη Ι/Ο t+1,τότε: St+1St/Χ • Υπάρχουν το πολύ Ν/Β αναγνώσεις μπλοκ που γίνονται για πρώτη φορά. • Αφού S0=Ν! και St+1St/Χ προκύπτει ότι για τις Ν/Β αναγνώσεις (και για να φτάσουμε σε μία αντιμετάθεση) :