ΠΡΟΗΓΜΕΝΗ ΕΥΡΕΤΗΡΙΑΣΗ ΔΕΔΟΜΕΝΩΝ Ταξινόμηση – Αναζήτηση
Μοντέλα Δευτερεύουσας Μνήμης
Η Ανάγκη για Μοντέλα Ένα μοντέλο μας επιτρέπει : Ευκολία ανάλυσης - σχεδίασης χωρίς ενοχλητικές λεπτομέρειες Εμπεριέχει τα κρίσιμα χαρακτηριστικά του πραγματικού συστήματος Ένα μοντέλο είναι πάντα λάθος – το θέμα είναι πόσο λάθος είναι
Απλό Μοντέλο Δευτερεύουσας Μνήμης Μέτρηση πλήθους μεταφορών μπλοκ μεταξύ των 2 επιπέδων μνήμης (κόστος) Μοντελοποιεί το κύριο πρόβλημα Πολύ πετυχημένο (απλότητα) Περιορισμοί Οι παράμετροι B και M πρέπει να είναι γνωστοί Δεν αντιμετωπίζει πολλαπλά επίπεδα μνημών Δεν αντιμετωπίζει δυναμική μεταβολή του M CPU ΜνήμηΜνήμη Δίσκος Δίσκος I/O M B Aggarwal and Vitter 1988
Το πλήθος των δίσκων μπορεί να είναι ίσο, μικρότερο ή μεγαλύτερο σε σχέση με το πλήθος των επεξεργαστών. Το Μοντέλο Παράλληλων Δίσκων (PDM – Parallel Disk Model)
Παράμετροι του PDM Ν → μέγεθος του προβλήματος Μ → μέγεθος εσωτερικής μνήμης Β → μέγεθος μπλοκ δίσκου D → πλήθος δίσκων P → πλήθος επεξεργαστών Ισχύει:Μ<Ν 1≤DB ≤M/2 Οι π οσότητες εκφράζονται σε σχέση με το π λήθος των στοιχείων
Τύποι Προβλημάτων Μαζικές ερωτήσεις : Οι αιτήσεις για επεξεργασία μας δίνονται όλες μαζί. Τις υπολογίζουμε όλες και έπειτα δίνουμε την απάντηση για κάθε μία από αυτές Άμεσες Ερωτήσεις : Οι αιτήσεις έρχονται σε σειρά. Απαντάμε κάθε ερώτηση και έπειτα μας έρχεται η επόμενη για επεξεργασία.
Κάποιες Παράμετροι Ακόμα Q → πλήθος ερωτήσεων (για μαζικές ερωτήσεις) Ζ → μέγεθος απάντησης Πολλές φορές θα χρησιμοποιούμε τον εξής συμβολισμό:
Τι Μετράμε ; Οι κύριες μετρικές απόδοσης στο PDM είναι : 1. Το πλήθος των μεταφορών ( Ι / Ος ) που εκτελούνται 2. Ο χώρος που χρησιμοποιείται 3. Ο χρόνος υπολογισμού των επεξεργαστών Ελπίζω να σας έχω πείσει ότι το (3) είναι αμελητέο ( συνήθως ) σε σχέση με τις υπόλοιπες δύο μετρικές.
Κάποιες Στοιχειώδης Πράξεις
11 Ι / Ο Αποδοτική Διαπέραση Στοιχείων sum = 0 for i = 1 to N do sum = sum + A[i] sum = 0 for i = 1 to N do sum = sum + A[i] N B A Πόσα 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 δίσκους. Αυτό το κάνουμε αποθηκεύοντάς τα με την μορφή λωρίδας : D0D0 D1D1 D2D2 D3D3 D4D4 Ρίγα Ρίγα Ρίγα Ρίγα Επομένως μία πράξη μπορεί να γίνει σε Ο (n/D) Ι / Ος.
Λωριδοποίηση Δίσκων Από τα βασικά προβλήματα: 3 στα 4 έχουν βέλτιστες λύσεις εφαρμόζοντας αυτή την τεχνική: Διαπέραση (scanning) Αναζήτηση (search) Έξοδος (output) Το πρόβλημα της ταξινόμησης δεν λύνεται βέλτιστα με αυτή την τεχνική.
18 Διαπέραση Στοιχείων – D δίσκοι sum = 0 for i = 1 to N do sum = sum + A[i] sum = 0 for i = 1 to N do sum = sum + A[i] N B A Πόσα 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 ΕΞΟΔΟΣ Δίσκος
Παράδειγμα Σε κάθε πέρασμα διαβάζουμε και γράφουμε στον δίσκο κάθε διάστημα. n μπλοκ στο αρχείο ⇒ πλήθος περασμάτων; Συνολικό κόστος; Ιδέα: Διαίρει και Βασίλευε Αρχείο Εισόδου 3,4 6,2 9,48,75,63,1 2 Ταξ. 1 μπλοκ ΠΕΡΑΣΜΑ 0 3,45,62,64,97,8 1,32 Ταξ. 2 μπλοκ ΠΕΡΑΣΜΑ 1 2,3 4,6 4,7 8,9 1,3 5,62 Ταξ. 4 μπλοκ ΠΕΡΑΣΜΑ 2 2,3 4,4 6,7 8,9 1,2 3,5 6 Ταξ. 8 μπλοκ ΠΕΡΑΣΜΑ 3 9 1,2 2,3 3,4 4,5 6,6 7,8
Ταξινόμηση Συγχώνευσης (Mergesort) Συγχωνευτής k- δρόμων Η συγχώνευση k ακολουθιών με N στοιχεία απαιτεί O(N/B) I/Oς (δεδομένου ότι k ≤ M/B – 1)
25 Λειτουργία Αλγόριθμου Η MergeSort απαιτεί O(N/B·log M/B (N/B)) I/Oς Στην πράξη τα Ι/Ος είναι: 4-6 x διαπέραση εισόδου M M Διαχωρισμός σε διαστήματα Ταξινόμησε κάθε διάστημα Συγχώνευση 1... Διάστημα 1 Διάστημα 2 Διάστημα N/M N Ταξινομημένο Αταξινόμητη Είσοδος Ταξινομημένο Ταξινομημένη Έξοδος Συγχώνευση 2
Ταξινόμηση Συγχώνευσης - Απόδοση Κτίσε N/M ταξινομημένες λίστες μεγέθους Μ Επαναληπτικά συγχώνευσε λίστες φάσεις με I/Oς η κάθε μία I/Oς
Γενική Τεχνική – Double Buffering Για να μειώσουμε το χρόνο αναμονής για την ολοκλήρωση Ι/Ο, μπορούμε να το φέρουμε σε ένα `σκιώδες μπλοκ’. ΕΞΟΔΟΣ ΕΞΟΔΟΣ΄ Δίσκος ΕΙΣΟΔΟΣ1 ΕΙΣΟΔΟΣ k ΕΙΣΟΔΟΣ 2 ΕΙΣΟΔΟΣ 1΄ ΕΙΣΟΔΟΣ 2΄ ΕΙΣΟΔΟΣ k΄ Μέγεθος μπλοκ B
Ταξινόμηση Διαχωρισμού ( Γρήγορη Ταξινόμηση πολλών δρόμων ) Υπολόγισε Θ(M/B) στοιχεία διαχωρισμού Διαχώρισε την αταξινόμητη λίστα σε Θ(M/B) αταξινόμητες λίστες ίδιου μεγέθους Αναδρομικά διαχώρισε τις λίστες μέχρι να χωρέσουν στην μνήμη φάσεις I/Oς αν τα στοιχεία διαχωρισμού εντοπίζονται σε O(N/B) I/Oς
Παράδειγμα με 1 στοιχείο διαχωρισμού Σε κάθε πέρασμα διαχωρίζουμε με βάση 1 στοιχείο. n μπλοκ στο αρχείο ⇒ πλήθος περασμάτων; Συνολικό κόστος; Ιδέα: Διαίρει και Βασίλευε (αντίστροφα από συγχώνευση) 3,46,29,48,75,63,12 5 3,42,43,125,69,87,6 37 2,123,44,35,667,
Πιθανοτική Επιλογή Στοιχείων Διαχωρισμού ( Εύκολη ) Επιλογή S=Θ(min{m,n/m}) στοιχείων διαχωρισμού. Απλές μέθοδοι: 1. Επέλεξε τα πρώτα S στοιχεία από τη λίστα που ταξινομούμε (σε αντιστοιχία με quicksort) και ευχόμαστε να δουλέψει 2. Τυχαία δειγματοληψία: 1. Επιλέγουμε τυχαία SlogS στοιχεία από τη λίστα 2. Τα ταξινομούμε και έπειτα επιλέγουμε κάθε logS-οστό στοιχείο για διαχωρισμό
Τυχαία Δειγματοληψία Χρειαζόμαστε Ο(SlogS+Sort(SlogS)) Ι/Ος. Το S μπορεί να είναι το πολύ n ½ : Κάθε καινούργια λίστα θα έχει μέσο μέγεθος Ο(Ν/S): Πιθανότητα κάθε στοιχείου να πέσει σε μία υπολίστα 1/S Άρα μέσο μέγεθος είναι O(N/S) N SlogS... S
Αναδιάταξη Permutation – Hans Loffel Ταξινόμησε Ν στοιχεία με βάση μία αντιμετάθεση των {1,2,3,…,Ν} Γιατί δεν έχουμε Ν / Β ;
Κάτω Φράγμα για Ταξινόμηση
Κάτω Φράγμα Ταξινόμησης Υπόθεση : Τα στοιχεία που ταξινομούμε είναι αδιαίρετα (indivisibility assumption) Όλοι οι αλγόριθμοι ταξινόμησης δευτερεύουσας μνήμης στο μοντέλο PDM ( για D=1) θα πρέπει να κάνουν τουλάχιστον O(nlog m n) I/O ς.
Κάποια Βασικά … Μοντέλο Μνήμης: PDM, D=1 Μοντέλο συγκρίσεων: τα στοιχεία μπορούν να συγκριθούν μόνο στην κύρια μνήμη. Μπορούμε να τα μεταφέρουμε, να τα αντιγράψουμε και να τα διαγράψουμε – τίποτα άλλο. Υποθέτουμε ότι M 2B. Τα μπλοκ στην αρχή είναι τοποθετημένα όλα μαζί σε μία περιοχή του δίσκου. Η σειρά των στοιχείων στην εσωτερική μνήμη δίνεται δωρεάν. Δοθείσης μία εκτέλεσης ενός αλγορίθμου ταξινόμησης ορίζουμε το S t = πλήθος δυνατών αναδιατάξεων έπειτα από t I/Oς. (S 0 =Ν!) Ν στοιχεία δίνουν Ν! αναδιατάξεις. Στόχος μας είναι να δούμε πως μειώνεται το πλήθος των αναδιατάξεων έπειτα από κάθε πράξη, μέχρι να γίνει 1.
Πράξεις και Μείωση S t Εγγραφή μπλοκ στο δίσκο: Δεν επηρεάζει Όσες αναδιατάξεις είχαμε πριν την εγγραφή έχουμε και μετά Ανάγνωση για πρώτη φορά μπλοκ: Ανάγνωση μπλοκ (όχι για πρώτη φορά):
Μείωση Αναδιατάξεων Αν X είναι η μείωση κατά την πράξη Ι/Ο t+1, τότε: S t+1 S t /Χ Υπάρχουν το πολύ Ν/Β αναγνώσεις μπλοκ που γίνονται για πρώτη φορά. Αφού S 0 =Ν! και S t+1 S t /Χ προκύπτει ότι για τις Ν/Β αναγνώσεις (και για να φτάσουμε σε μία αντιμετάθεση) :
ΤΈΛΟΣ