Advanced Data Indexing

Σχετικά έγγραφα
Advanced Data Indexing

Προηγμένη Ευρετηρίαση Δεδομένων (ΠΜΣ) Ενδεικτικές ερωτήσεις-θέματα για την εξέταση της θεωρίας

Αλγόριθμοι Ταξινόμησης Μέρος 2

Αλγόριθμοι Ταξινόμησης Μέρος 4

5. Απλή Ταξινόμηση. ομές εδομένων. Χρήστος ουλκερίδης. Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων

Advanced Data Indexing

Λειτουργικά Συστήματα Η/Υ

Εισ. Στην ΠΛΗΡΟΦΟΡΙΚΗ. Διάλεξη 7 η. Βασίλης Στεφανής

ΔΥΑΔΙΚΗ ΑΝΑΖΗΤΗΣΗ & ΤΑΞΙΝΟΜΗΣΗ ΜΕ ΣΥΓΧΩΝΕΥΣΗ

Ταξινόμηση. Σαλτογιάννη Αθανασία

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Ταξινόμηση. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Εισαγωγή στην Επεξεργασία Ερωτήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Αλγόριθμοι και Πολυπλοκότητα

Αλγόριθμοι και πολυπλοκότητα Συγχωνευτική Ταξινόμηση

Ταξινόμηση με συγχώνευση Merge Sort

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Φ Ρ Ο Ν Τ Ι Σ Τ Η Ρ Ι Ο 1 : ΤΑΞΙΝΟΜΗΣΗ Δ Ρ Ι Τ Σ Α Σ Η Λ Ι Α Σ Υ Π Ο Ψ Η Φ Ι Ο Σ Δ Ι Δ Α Κ Τ Ο Ρ Α Σ

1η Σειρά Γραπτών Ασκήσεων

Αλγόριθμοι και Δομές Δεδομένων (Ι) (εισαγωγικές έννοιες)

Επεξεργασία Ερωτήσεων

Εισαγωγή στην Επεξεργασία Ερωτήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Ταξινόμηση. Παύλος Εφραιμίδης. Δομές Δεδομένων Ταξινόμηση 1

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΑΣΚΗΣΗ ΔΕΥΤΕΡΗ

Τι είναι αλγόριθμος; Υποπρογράμματα (υποαλγόριθμοι) Βασικές αλγοριθμικές δομές

ΔΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ. Λειτουργικά Συστήματα Ι. Διδάσκων: Καθ. Κ. Λαμπρινουδάκης ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι

Επεξεργασία Ερωτήσεων

Επεξεργασία Ερωτήσεων

Quicksort. Πρόβλημα Ταξινόμησης. Μέθοδοι Ταξινόμησης. Συγκριτικοί Αλγόριθμοι

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Εξωτερική Ταξινόμηση. Μ.Χατζόπουλος 1

Διάλεξη 09: Αλγόριθμοι Ταξινόμησης I

Ουρές Προτεραιότητας: Υπενθύμιση. Σωροί / Αναδρομή / Ταξινόμηση. Υλοποίηση Σωρού. Σωρός (Εισαγωγή) Ορέστης Τελέλης

Κεφάλαιο 4. Διαίρει και Βασίλευε (Divide and Conquer) Παύλος Εφραιμίδης V1.1,

Δομές Δεδομένων και Αλγόριθμοι

Οι πράξεις της συνένωσης. Μ.Χατζόπουλος 1

Διάλεξη 10: Αλγόριθμοι Ταξινόμησης II

Διάλεξη 09: Αλγόριθμοι Ταξινόμησης I

Εισαγωγή στην Ανάλυση Αλγορίθμων (1) Διαφάνειες του Γ. Χ. Στεφανίδη

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΛΓΟΡΙΘΜΩΝ ΒΟΗΘΟΣ: ΒΑΓΓΕΛΗΣ ΔΟΥΡΟΣ

Αλγόριθμοι Ταξινόμησης Bubble Sort Quick Sort. Αντρέας Δημοσθένους Καθηγητής Πληροφορικής Ολυμπιάδα 2012

Merge Sort (Ταξινόμηση με συγχώνευση) 6/14/2007 3:04 AM Merge Sort 1

Κεφ.11: Ευρετήρια και Κατακερματισμός

Δομές Δεδομένων & Αλγόριθμοι

Εισαγωγή στους Αλγόριθμους

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ

Ιεραρχία Μνήμης. Εικονική μνήμη (virtual memory) Επεκτείνοντας την Ιεραρχία Μνήμης. Εικονική Μνήμη. Μ.Στεφανιδάκης

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι. Λειτουργικά Συστήματα Ι ΔΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ. Επ. Καθ. Κ. Λαμπρινουδάκης

Το εσωτερικό ενός Σ Β

3. Σελιδοποίηση μνήμης 4. Τμηματοποίηση χώρου διευθύνσεων

Εισαγωγή. Γενική Εικόνα του Μαθήµατος. Το εσωτερικό ενός Σ Β. Εισαγωγή. Εισαγωγή Σ Β Σ Β. Αρχεία ευρετηρίου Κατάλογος συστήµατος Αρχεία δεδοµένων

Αλγόριθμοι και Πολυπλοκότητα

Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1

Διάλεξη 19: Αλγόριθμοι ΤαξινόμησηςII. Διδάσκων: Παναγιώτης Ανδρέου

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Ταξινόµηση Mergesort Κεφάλαιο 8. Ε. Μαρκάκης Επίκουρος Καθηγητής

Λειτουργικά Συστήματα Η/Υ

Πληροφορική 2. Αλγόριθμοι

Ταξινόμηση κάδου και ταξινόμηση Ρίζας Bucket-Sort και Radix-Sort

Επιλογή. Επιμέλεια διαφανειών: Δ. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. Εθνικό Μετσόβιο Πολυτεχνείο

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

Αναζήτηση. 1. Σειριακή αναζήτηση 2. Δυαδική Αναζήτηση. Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη

Σύνοψη Προηγούμενου. Πίνακες (Arrays) Πίνακες (Arrays): Βασικές Λειτουργίες. Πίνακες (Arrays) Ορέστης Τελέλης

Κεφάλαιο 5. ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ -. Σερπάνος 2. Σημείωση

Εισαγωγή στην. Εισαγωγή Σ Β. Αρχεία ευρετηρίου Κατάλογος. συστήματος. Αρχεία δεδομένων

Πιθανοτικοί Αλγόριθμοι

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών Εικονική Μνήμη. (και ο ρόλος της στην ιεραρχία μνήμης)

ΗΥ460 Συστήµατα Διαχείρισης Βάσεων Δεδοµένων Χειµερινό Εξάµηνο 2016 Διδάσκοντες: Βασίλης Χριστοφίδης

Συστήματα μνήμης και υποστήριξη μεταφραστή για MPSoC

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης

Λειτουργικά Συστήματα

Επιλογή. ημήτρης Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. Εθνικό Μετσόβιο Πολυτεχνείο

Πρόβληµα Επιλογής. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 1

Εικονική Μνήμη (Virtual Μemory)

Αλγόριθμοι Ταξινόμησης Μέρος 1

εισαγωγικές έννοιες Παύλος Εφραιμίδης Δομές Δεδομένων και

Εισαγωγή στην Ανάλυση Αλγορίθμων

Έστω ένας πίνακας με όνομα Α δέκα θέσεων : 1 η 2 η 3 η 4 η 5 η 6 η 7 η 8 η 9 η 10 η

Διάλεξη 04: Παραδείγματα Ανάλυσης

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

Κεφάλαιο 4. Διαίρει και Βασίλευε (Divide and Conquer) Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

Εισαγωγή στους Αλγορίθμους

Διδάσκων: Παναγιώτης Ανδρέου

Διαίρει-και-Βασίλευε. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Διαίρει-και-Βασίλευε 2

auth Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο

Λυσεις προβλημάτων τελικής φάσης Παγκύπριου Μαθητικού Διαγωνισμού Πληροφορικής 2007

Ο αλγόριθμος Quick-Sort. 6/14/2007 3:42 AM Quick-Sort 1

Αλγόριθμοι ταξινόμησης

Η ιεραρχία της μνήμης

Θέματα Μεταγλωττιστών

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 4. Παραδείγματα Ανάλυσης Πολυπλοκότητας Ανάλυση Αναδρομικών Αλγόριθμων

Λειτουργικά Συστήματα (ΗΥ321)

Επιλογή. Πρόβλημα Επιλογής. Μέγιστο / Ελάχιστο. Εφαρμογές

Μάθημα 8: Διαχείριση Μνήμης

Δυναμικός Προγραμματισμός

Υπολογιστικό Πρόβληµα

Δομές Δεδομένων και Αλγόριθμοι

Ταξινόμηση: Εισαγωγικά. Ταξινόμηση (Sor ng) Αλγόριθμοι Απλής Ταξινόμησης. Βασικά Βήματα των Αλγορίθμων

Σχεδίαση Αλγορίθμων -Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο

ΠΛΗ111. Ανοιξη Μάθηµα 9 ο. Ταξινόµηση. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

Τα δεδομένα (περιεχόμενο) μιας βάσης δεδομένων αποθηκεύεται στο δίσκο

Transcript:

Advanced Data Indexing (Προηγμένη ευρετηρίαση δεδομένων) Μοντέλα - Αλγόριθμοι Ταξινόμηση

Μοντέλα Δευτερεύουσας Μνήμης

I/O Αποδοτικοί Αλγόριθμοι Οι εσωτερικές τεχνικές caching και prefetching των Η/Υ είναι γενικού-σκοπού και δεν εκμεταλλεύονται πλήρως την τοπικότητα (δεδομένων και εντολών). Ορισμένοι υπολογισμοί μπορεί να μην συμφωνούν με τις τεχνικές αυτές και να απαιτούν μεγάλο I/O κόστος. Ειδικά όταν πρόκειται να διαχειριστούμε μεγάλα σύνολα δεδομένων (πολύ μεγαλύτερα της μνήμης) οι τεχνικές γενικού-σκοπού δεν αποδίδουν. Οι αλγόριθμοι που σχεδιάζονται ώστε να κάνουν το I/O κόστος όσο το δυνατόν μικρότερο αποδίδουν καλύτερα (external memory algorithms, I/O algorithms). Οι αλγόριθμοι αυτοί είναι βασισμένοι σε απλοποιημένα μοντέλα που ρίχνουν το βάρος στο I/O κόστος.

I/O Αποδοτικοί Αλγόριθμοι Διότι: η μεγαλύτερη βελτιστοποίηση της απόδοσης ενός αλγορίθμου προέρχεται από την ελαχιστοποίηση του κόστους της επικοινωνίας I/O μεταξύ της εσωτερικής μνήμης και της εξωτερικής (δίσκος/δίσκοι). Αυτό το I/O κόστος είναι και το πιο ακριβό σε σύγκριση με τις εσωτερικές μετακινήσεις (CPU L1-cache L2-cache RAM).

Η Ανάγκη για Μοντέλα Ένα μοντέλο μας επιτρέπει: Ευκολία ανάλυσης-σχεδίασης αλγορίθμων χωρίς ενοχλητικές λεπτομέρειες. Εμπεριέχει τα κρίσιμα χαρακτηριστικά του πραγματικού συστήματος ώστε εκεί να δώσουμε βάρος καθώς σχεδιάζουμε τον αλγόριθμο. Όμως: Ένα μοντέλο είναι πάντα λάθος! Το θέμα είναι πόσο λάθος είναι.

Απλό Μοντέλο Δευτερεύουσας Μνήμης Μέτρηση πλήθους μεταφορών μπλοκ μεταξύ των 2 επιπέδων μνήμης (κόστος) Μοντελοποιεί το κύριο πρόβλημα Πολύ πετυχημένο (απλότητα) Μ μέγεθος εσωτερικής μνήμης Β μέγεθος μπλοκ δίσκου CPU Aggarwal and Vitter 1988 Μ ν ή μ η I/O B Δ ί σ κ ο ς Περιορισμοί Οι παράμετροι B και M πρέπει να είναι γνωστοί Δεν αντιμετωπίζει πολλαπλά επίπεδα μνημών Δεν αντιμετωπίζει δυναμική μεταβολή του M M

Το Μοντέλο Παράλληλων Δίσκων (PDM Parallel Disk Model) D πλήθος δίσκων Vitter and Shriver 1994 P πλήθος επεξεργαστών Το πλήθος των δίσκων μπορεί να είναι ίσο, μικρότερο ή μεγαλύτερο σε σχέση με το πλήθος των επεξεργαστών. Αν D<P τότε κάθε δίσκος διαμοιράζεται σε P/D επεξεργαστές, ενώ αν P D κάθε επεξεργαστής είναι υπεύθυνος για D/P δίσκους περίπου. P

Το Μοντέλο PDM Ειδικές Περιπτώσεις P=1 P=D

Άλλες Βασικές Παράμετροι του PDM Βασικές παράμετροι που εκφράζονται σε πλήθος αντικειμένων (# of data items): Ν μέγεθος του προβλήματος Μ μέγεθος εσωτερικής μνήμης Β μέγεθος μπλοκ δίσκου Περιορισμοί: Τα Ν αντικείμενα είναι σταθερού μεγέθους Ισχύει M < Ν και 1 DB M/2 To M μοιράζεται στα CPU ισοδύναμα: M/P

Άλλες Βασικές Παράμετροι του PDM Η σχέση M < Ν εκφράζει ότι δεν χωράει όλο το πλήθος των αντικειμένων στην κύρια μνήμη (αν χωράει τότε δεν υπάρχει λόγος για σχεδιασμό I/O αποδοτικού αλγορίθμου). Η σχέση 1 DB M/2 εκφράζει ότι από τον κάθε δίσκο πρέπει να χωράνε τουλάχιστον δύο μπλοκ στην κύρια μνήμη. Αν δεν συμβαίνει αυτό τότε ακόμα και οι πιο απλοί αλγόριθμοι δεν μπορούν να υλοποιηθούν (π.χ. ταξινόμηση).

Τύποι Ερωτημάτων Μαζικά Ερωτήματα (batched queries): Τα ερωτήματα για επεξεργασία δίνονται όλα ταυτόχρονα. Τα επεξεργαζόμαστε όλα μαζί και απαντάμε στο κάθε ερώτημα. Άμεσα Ερωτήματα (on-line queries): Τα ερωτήματα έρχονται ένα-ένα σε σειρά. Επεξεργαζόμαστε και απαντάμε το κάθε ένα χωριστά με τη σειρά που έρχονται.

Άλλες Παράμετροι του PDM Q πλήθος ερωτημάτων (για μαζικά ερωτήματα) Ζ μέγεθος απάντησης (σε πλήθος αντικειμένων) Πολλές φορές βοηθάει να χρησιμοποιούμε ως μονάδα μέτρησης τα μπλοκ δίσκου (I/O κόστος) και όχι το πλήθος αντικειμένων. Τότε συμβολίζουμε: n = N B m = M B q = Q B z = Z B

Μετρικές Απόδοσης του PDM Οι κυριότερες μετρικές απόδοσης στο PDM είναι: 1. Το πλήθος των μεταφορών (Ι/Ος) που εκτελούνται (κόστος I/O σε # μπλοκ) 2. Ο χώρος που χρησιμοποιείται 3. Ο χρόνος υπολογισμού των επεξεργαστών Το (3) πρακτικά είναι αμελητέο (συνήθως) σε σχέση με τις άλλες δύο μετρικές. Υλοποιήσεις του PDM: Συστήματα RAID κλπ.

Τοπικότητα του PDM Πώς γίνεται η εκμετάλλευση του παραλληλισμού των πολλών δίσκων στο PDM; Απλή ιδέα (λωριδοποίηση δίσκων): Μεταφέρουμε στην μνήμη μία ολόκληρη λωρίδα (ρίγα) τη φορά (σε ένα I/O) και όχι ένα μπλοκ. Τα μπλοκ των δεδομένων ομαδοποιούνται στις λωρίδες (ρίγες). Το αποτέλεσμα είναι ότι οι D δίσκοι συμπεριφέρονται σαν ένας μεγαλύτερος με μέγεθος λογικού μπλοκ όχι B αλλά DB. Προσοχή: Απαιτείται ο συγχρονισμός των δίσκων.

Παράδειγμα Λωρίδων σε PDM Τα δεδομένα είναι αποθηκευμένα και στους D δίσκους απλωμένα με την μορφή λωρίδας: D 0 D 1 D 2 D 3 D 4 Ρίγα 0 0 1 2 3 4 5 6 7 8 9 Ρίγα 1 10 11 12 13 14 15 16 17 18 19 Ρίγα 2 20 21 22 23 24 25 26 27 28 29 Ρίγα 3 30 31 32 33 34 35 36 37 38 39 Τότε η εγγραφή (ή η ανάγνωση) όλων των δεδομένων στους D δίσκους απαιτεί Ο(N/DB)= Ο(n/D) Ι/Ος που είναι και το βέλτιστο δυνατό.

Οι Στοιχειώδεις Διαδικασίες Το πόσο αποδοτικός είναι ένας αλγόριθμος εκφράζεται από τα ανώτερα όρια κόστους I/O των εξής στοιχειωδών διαδικασιών που περιέχει: Scanning (Σάρωση-Διαπέραση) πλήθους N αντικειμένων (περιλαμβάνει την σειριακή ανάγνωση ή εγγραφή των αντικειμένων). Sorting (Ταξινόμηση) πλήθους N αντικειμένων σε καθορισμένη διατεταγμένη μορφή. Searching (Αναζήτηση) ενός αντικειμένου μέσα από N ταξινομημένα αντικείμενα.

Οι Στοιχειώδεις Διαδικασίες Output (Έξοδος) πλήθους Z αντικειμένων που αποτελούν απάντηση σε ένα συγκεκριμένο ερώτημα. Κάθε γνωστός αλγόριθμος αναλύεται σε ένα σύνολο στοιχειωδών διαδικασιών. Ανάλογα με το πόσες και σε ποιες από αυτές αναλύεται, προκύπτει και το συνολικό του I/O κόστος.

I/O Κόστος Στοιχειωδών Διαδικασιών

I/O Κόστος Στοιχειωδών Διαδικασιών Παρατηρήστε ότι: Στα όρια εμφανίζεται η μέση πολυπλοκότητα Θ. Κάτω από προϋποθέσεις τα όρια αυτά γίνονται Ο. (I/O αποδοτικοί αλγόριθμοι). Στην περίπτωση των D δίσκων (PDM) έχουμε σε όλες τις περιπτώσεις στη θέση του B το DB, με εξαίρεση του κόστους της ταξινόμησης.

Σημαντικότητα των Ορίων Για να εκτιμήσουμε τα βασικά όρια του πίνακα των στοιχειωδών πράξεων ας δούμε τι γίνεται όταν ένας αλγόριθμος δεν εκμεταλλεύεται την τοπικότητα: Για λόγους απλότητας ας θεωρήσουμε ότι D=1. Πολλοί γνωστοί αλγόριθμοι όπως π.χ. sorting, FFT, triangulation, convex-hull, έχουν απόδοση O(Nlog 2 N) όταν εκτελούνται με όλα τα αντικείμενα μόνο στην κύρια μνήμη.

Σημαντικότητα των Ορίων Αν όμως εκτελέσουμε έναν από αυτούς σε δεδομένα που δεν χωρούν στην κύρια μνήμη, αφήνοντας την virtual memory να αναλάβει τη διαχείριση των memory pages, τότε το ελάχιστο κόστος γίνεται Ω(Nlog 2 n).

Αποδοτική Διαπέραση (scan) - 1 δίσκος sum = 0 for i = 1 to N do sum = sum + A[i] B A N Ο δίσκος είναι χωρισμένος σε ίσα μπλοκ μεγέθους Β, οπότε η σειριακή ανάγνωση ή εγγραφή N αντικειμένων απαιτεί O(N/B) ή O(n) I/Oς.

Αποδοτική Διαπέραση (scan) - D δίσκοι sum = 0 for i = 1 to N do sum = sum + A[i] DB A N Οι δίσκοι είναι χωρισμένοι σε ίσα μπλοκ μεγέθους Β και λωριδοποιημένοι (ισοδύναμο με έναν δίσκο με μπλοκ μεγέθους DB), οπότε η σειριακή ανάγνωση ή εγγραφή N αντικειμένων απαιτεί O(N/DB) ή O(n/D) I/Oς.

Απόδοση της Λωριδοποίησης Δίσκων Από τα βασικά προβλήματα: 3 στα 4 έχουν βέλτιστες λύσεις εφαρμόζοντας αυτή την τεχνική (εφόσον έχουμε μείωση του κόστους με αντικατάσταση του B με DB): Διαπέραση (scanning) Αναζήτηση (search) Έξοδος (output) Το πρόβλημα της ταξινόμησης δεν λύνεται βέλτιστα με αυτή την τεχνική (εφόσον το βέλτιστο κόστος είναι μικρότερο αυτού που προκύπτει με αντικατάσταση του B με DB). Ας το δούμε πιο αναλυτικά αυτό:

Απόδοση της Λωριδοποίησης Δίσκων Πολυπλοκότητα για ταξινόμηση με έναν δίσκο: ( N / B) ( ) M / B ( ) N N N log Θ nlog m n = Θ logm / B = Θ B B B log H Πολυπλοκότητα για ταξινόμηση με D δίσκους και λωριδοποίηση είναι (όπου B DB): Θ N DB log log ( N / DB) ( M / DB) = Θ n D log log ( n / D) ( m / D) = Θ n D log m n / / D D Όμως η βέλτιστη είναι: Θ n D log m n <

Παράδειγμα Έστω ότι έχουμε N=10 12, M=10 9, B=10 4. Τότε n= 10 8 και m=10 5. Ας πάρουμε αρχικά D=2. Η απόδοση με λωριδοποίηση είναι: Θ n D log m ( 8 / 2) ( 5 / 2) 8 8 10 log 10 10 8 log 2 / / Θ 10 2 log 10 = Θ 2 5 log 2 D n D = Θ ( 7 8.2 ) Η βέλτιστη απόδοση είναι: Θ n D log m 10 n = Θ 2 8 ( 8 ) ( 5 ) log 10 log 10 10 = Θ 2 8 8 5 = Θ ( 7 8 10 ) Ας μεταβάλουμε τώρα το πλήθος των δίσκων:

Παράδειγμα D Optimal Striping 2 80000000 81921889 3 53333333,3 55443146 4 40000000 42053439 5 32000000 33950147 6 26666666,7 28509820 7 22857142,9 24600553 8 20000000 21653240 Θ N=10 12, M=10 9, B=10 4 Πλήθος δίσκων D

Απόδοση της Λωριδοποίησης Δίσκων Για μικρό πλήθος δίσκων το χάσιμο που έχουμε από την λωριδοποίηση δεν είναι πολύ σημαντικό. Αν όμως έχουμε μικρότερη διαθέσιμη μνήμη η μεγάλο πλήθος δίσκων η διαφορά μεγαλώνει σημαντικά. Συνεπώς χρειαζόμαστε I/O αποδοτικούς αλγορίθμους που πετυχαίνουν το βέλτιστο όριο. Ο μόνος τρόπος για να γίνει αυτό είναι να απομονώσουμε τους δίσκους ώστε να λειτουργούν ανεξάρτητα ο ένας από τον άλλο. Η ανεξαρτησία αυτή μπορεί να γίνει είτε για την ανάγνωση είτε για την εγγραφή των δεδομένων.

Γιατί επιμένουμε με την ταξινόμηση; Η ταξινόμηση στη δευτερεύουσα μνήμη (external sorting) είναι ένα κεντρικό πρόβλημα στο πεδίο των I/O αποδοτικών αλγορίθμων. Πολλά προβλήματα που λύνονται στην κεντρική μνήμη σε γραμμικό χρόνο, στην δευτερεύουσα μνήμη απαιτούν τον ίδιο χρόνο που απαιτεί στο μοντέλο PDM η διαδικασία της ταξινόμησης. Π.χ. finding connected components, triangulation, convex hull, FFT, permuting, list ranking, expression tree evaluation, κλπ.

Αποδοτική Ταξινόμηση

Μέθοδοι Αποδοτικής Ταξινόμησης Η μέση και η χειρότερη πολυπλοκότητα στο I/O κόστος της ταξινόμησης N αντικειμένων χρησιμοποιώντας D δίσκους είναι: Θ n D n logm n, O log m D n Δύο βασικοί αλγόριθμοι την επιτυγχάνουν, οι οποίοι χρησιμοποιούν τους δίσκους ανεξάρτητα: Ταξινόμηση Διαχωρισμού (Distribution Sort) Ταξινόμηση Συγχώνευσης (Merge Sort)

Ταξινόμηση Διαχωρισμού Αναδρομικός αλγόριθμος (διαίρει και βασίλευε) Επιλέγονται S-1 στοιχεία διαχωρισμού με τα οποία χωρίζονται τα αντικείμενα σε S υποσύνολα δεδομένων, έτσι ώστε: Τα αντικείμενα κάθε υποσυνόλου (bucket) να είναι όλα μικρότερα από τα αντικείμενα του επόμενου bucket. Ταξινομούνται αναδρομικά όλα τα ανεξάρτητα buckets. Στο τέλος, συγχωνεύονται όλα τα ταξινομημένα buckets σε μία πλήρη ταξινομημένη λίστα.

Ταξινόμηση Διαχωρισμού Προϋπόθεση για να δουλέψει αποδοτικά ο αλγόριθμος αυτός είναι ο διαχωρισμός να γίνεται σε περίπου ίσου μεγέθους buckets. Τότε σε κάθε αναδρομή ο σχετικός παράγοντας διαμέρισης είναι Θ(S), οπότε θα υπάρχουν O(log S n) επίπεδα αναδρομής. Μετά από κάθε επίπεδο αναδρομής διατρέχουμε όλα τα αντικείμενα (scan σε O(n)), ώστε να επιλέξουμε τα νέα στοιχεία διαχωρισμού. Συνολικό Κόστος: O(nlog S n)

Παράδειγμα Ταξινόμησης Διαχωρισμού με 1 στοιχείο Σε κάθε πέρασμα διαχωρίζουμε με βάση 1 στοιχείο (S=2). 3,4 6,2 9,4 8,7 5,6 3,1 2 3,4 2,4 3,1 2 5,6 9,8 7,6 5 Συνολικό πλήθος αναδρομών: ( log n) O 2 Συνολικό κόστος: ( n log n) O 2 3 7 2,1 2 3,4 4,3 5,6 6 7,9 8...

Ταξινόμηση Διαχωρισμού στον δίσκο Όλα τα δεδομένα είναι στον δίσκο. Για να χωρέσουν τα buckets στην κύρια μνήμη πρέπει να επιλέξουμε S Θ(M/B)= Θ(m) στοιχεία διαχωρισμού. Σύνολο Αναδρομών: O ( ) ( ) N log n = O log M S Συνολικό Κόστος I/O: B ( ) ( ) N N nlog n = O nlog n O( log M ) O = S B m B B B Βέλτιστο (D=1)

Ταξινόμηση Διαχωρισμού στον δίσκο Καθώς σαρώνονται τα δεδομένα σε κάθε επίπεδο, τα buckets στέλνονται στην κύρια μνήμη ένα-ένα για επεξεργασία Εκεί όμως ομαδοποιούνται σε buffers (μεγέθους ενός μπλοκ Β) Κάθε φορά που γεμίζει ένας buffer (μετά από ταξινόμηση) γράφεται με ένα I/O στον δίσκο πάλι:

Ταξινόμηση Διαχωρισμού (D δίσκοι) Με λωριδοποίηση έχουμε κόστος: Δεν είναι όμως το βέλτιστο (για μικρό D είναι επαρκές). Για να έχουμε το βέλτιστο: O logm n πρέπει να D διαμορφώνονται τα buckets σε κάθε επίπεδο αναδρομής με κόστος O(n/D) I/Oς. Για να γίνει αυτό πρέπει να διαβάζονται και να γράφονται μαζικά Θ(D) μπλοκ, αλλά και να διασκορπιστούν ομοιόμορφα στους δίσκους ώστε να μην επιβαρύνονται κάποιοι περισσότερο. Πιο πολύπλοκοι αλγόριθμοι, π.χ. Partial Striping. n O n D log m / D n / D

Επιλογή Στοιχείων Διαχωρισμού (S) Το μέγιστο πλήθος στοιχείων διαχωρισμού είναι maxs=θ(m/b)= Θ(m). Στο τελευταίο όμως επίπεδο αναδρομής δεν έχει νόημα να έχουμε λιγότερα από Θ(M) αντικείμενα. Άρα μπορούμε να περιορίσουμε το S σε O(N/M)=O(n/m). Τελικά μας συμφέρει να επιλέξουμε: S=Θ(min{m,n/m}). Είναι όμως δύσκολο να επιλέξουμε ντετερμινιστικά Θ(min{m,n/m}) στοιχεία διαχωρισμού, ώστε τα buckets να έχουν το ίδιο περίπου μέγεθος.

Μέθοδοι Επιλογής Στοιχείων S=Θ(min{m,n/m}): Άμεση επιλογή των πρώτων S στοιχείων από τη λίστα που ταξινομούμε (σε αναλογία με την μέθοδο quicksort) και ευχόμαστε να δουλέψει! Τυχαία δειγματοληψία (πιθανοτική μέθοδος): 1. Επιλέγουμε τυχαία SlogS στοιχεία από τη λίστα. 2. Τα ταξινομούμε και έπειτα επιλέγουμε κάθε logsοστό στοιχείο για διαχωρισμό.

Τυχαία Δειγματοληψία Το κόστος Ι/Ο για την εκλογή των στοιχείων διαχωρισμού είναι: Ο(SlogS+Sort(SlogS)). Το S μπορεί να είναι το πολύ n ½. Οπότε κόστος: ( log 2 ) ( ) O n n = Κάθε καινούργια λίστα θα έχει μέσο μέγεθος Ο(Ν/S): Η πιθανότητα κάθε στοιχείου να πέσει σε μία υπολίστα είναι: 1/S Άρα το μέσο μέγεθος θα είναι: O(N/S) o n SlogS... S N

Ταξινόμηση Συγχώνευσης (2-δρόμων) Αντίστροφη λογική από ταξινόμηση διαχωρισμού: Πέρασμα 1: Διάβασε ένα μπλοκ, ταξινόμηση και έπειτα αποθήκευση. Πέρασμα 2, 3,, κτλ: Διάβασε 2 προηγούμενα περάσματα, ταξινόμηση, αποθήκευση. ΕΙΣΟΔΟΣ 1 ΕΙΣΟΔΟΣ 2 ΕΞΟΔΟΣ Δίσκος Κύρια Μνήμη Δίσκος

Παράδειγμα Merge Sort (2-δρόμων) Σε κάθε πέρασμα διαβάζουμε και γράφουμε στον δίσκο κάθε ομάδα μπλοκ. 3,4 6,2 9,4 8,7 5,6 3,1 2 3,4 2,6 4,9 7,8 5,6 1,3 2 2,3 4,6 4,7 8,9 1,3 5,6 2 Αρχείο Εισόδου ΠΕΡΑΣΜΑ 0 Ταξ. 1 μπλοκ ΠΕΡΑΣΜΑ 1 Ταξ. 2 μπλοκ ΠΕΡΑΣΜΑ 2 n μπλοκ στο αρχείο πλήθος περασμάτων: ( log n) O 2 2,3 4,4 6,7 8,9 1,2 3,5 6 Ταξ. 4 μπλοκ ΠΕΡΑΣΜΑ 3 Συνολικό κόστος: ( n log n) O 2 1,2 2,3 3,4 4,5 6,6 7,8 Ταξ. 8 μπλοκ 9

Ταξινόμηση Συγχώνευσης (R δρόμων) Γενίκευση της συγχώνευσης δύο δρόμων: 2 3 5 6 9 11 13 15 19 21 25 27 1 4 7 101429 3341 49 5152 57 8 12 16 18 22 24 31 34 35 38 42 46 17 20 23 26 28 30 32 37 39 43 45 50 ανάγνωση Συγχωνευτής 4-δρόμων 1 2 3 4 5 6 7 8 9 101112 1314 εγγραφή Η συγχώνευση R ακολουθιών με N στοιχεία απαιτεί O(N/B) I/Oς (δεδομένου ότι R M/B 1). Συνολικό κόστος: O(nlog m n) επειδή έχουμε R=Θ(m).

Λειτουργία Αλγόριθμου... M M N Αταξινόμητη Είσοδος Διάστημα 1 Διάστημα 2 Διάστημα N/M Ταξινομημένο Ταξινομημένο Ταξινομημένο Ταξινομημένο Ταξινομημένο Ταξινομημένη Έξοδος Διαχωρισμός σε διαστήματα Ταξινόμησε κάθε διάστημα Συγχώνευση 1 Συγχώνευση 2 Η MergeSort απαιτεί O(N/B log M/B (N/B)) I/Oς Στην πράξη τα Ι/Ος είναι: 4-6 x διαπέραση εισόδου

Ανάλυση της Απόδοσης Κτίζονται N/M ταξινομημένες λίστες μεγέθους Μ Επαναληπτικά συγχωνεύονται οι λίστες N Θ( M ) ( N M Θ / M B N M Θ( /( M B ) ) 2 ) N O(log φάσεις με O( N B ) I/Oς η κάθε μία συνολικό κόστος: M ) M B N / B n O( N log N B M M ) = O( nlogm M / B) = O( nlogm m) = B ( log n log m ) = O( n( log n 1 ) O( n log ) = O( n n m m m = m

Single Buffering στην Merge Sort Συμφέρει η είσοδος να γίνεται από έναν ή περισσότερους δίσκους και η έξοδος σε άλλον δίσκο.

Γενική Τεχνική Double Buffering Για να μειώσουμε το χρόνο αναμονής για την ολοκλήρωση των Ι/Ο χρησιμοποιούμε διπλούς buffers. Καθώς γεμίζει ο 1 ος εμείς χρησιμοποιούμε τον έτοιμο (2 ο ). ΕΙΣΟΔΟΣ1 ΕΙΣΟΔΟΣ 1 ΕΙΣΟΔΟΣ 2 ΕΞΟΔΟΣ ΕΙΣΟΔΟΣ 2 ΕΞΟΔΟΣ Δίσκος ΕΙΣΟΔΟΣ R ΕΙΣΟΔΟΣ R B Μέγεθος μπλοκ Δίσκος Προφανώς θα πρέπει να ισχύει: R<m/2-1.

Μεταθέσεις Η μετάθεση είναι μία ειδική περίπτωση ταξινόμησης Ν στοιχείων με βάση μία αναδιάταξή τους. Η μέση και χειρότερη πολυπλοκότητα κόστους I/O για να μεταθέσουμε N στοιχεία χρησιμοποιώντας D δίσκους είναι: N Θ min, Sort( N) D Στην περίπτωση που έχουμε Βlogm=ο(logn), είναι πιο γρήγορο να μετακινούμε τα στοιχεία ένα-ένα χωρίς μπλοκ, οπότε έχουμε: Θ ( min{ N, Sort( N) })

Μοντέλα Εσωτερικής Μνήμης

Cache Memory Model N: μέγεθος προβλήματος Β: μέγεθος cache line M: Μέγεθος cache α: συσχετισιμότητα cache Μοντέλο κόστους: Πλήθος από cache αποτυχίες Πλήθος εντολών

Internal Memory Model Όπως στο Cache Memory Model (CMM) συν: Β : το πλήθος των δεδομένων σε μία σελίδα μνήμης (Memory Page) Τ: το πλήθος των μεταφράσεων στον TLB (Translation Look-aside Buffer) Μοντέλο Κόστους όπως στο CMM συν: TLB αποτυχίες

ΤΕΛΟΣ