Advanced Data Indexing - Delab...

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

Transcript of Advanced Data Indexing - Delab...

Page 1: Advanced Data Indexing - Delab Engineeringdelab.csd.auth.gr/~tiakas/Lecture-Models-Algorithms.pdf · Για μικρό πλήθος δίσκων το χάσιμο που έχουμε

Μοντέλα - Αλγόριθμοι – Ταξινόμηση

Advanced Data Indexing (Προηγμένη ευρετηρίαση δεδομένων)

Page 2: Advanced Data Indexing - Delab Engineeringdelab.csd.auth.gr/~tiakas/Lecture-Models-Algorithms.pdf · Για μικρό πλήθος δίσκων το χάσιμο που έχουμε

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

Page 3: Advanced Data Indexing - Delab Engineeringdelab.csd.auth.gr/~tiakas/Lecture-Models-Algorithms.pdf · Για μικρό πλήθος δίσκων το χάσιμο που έχουμε

I/O Αποδοτικοί Αλγόριθμοι

Οι εσωτερικές τεχνικές caching και prefetching των Η/Υ είναι γενικού-σκοπού και δεν εκμεταλλεύονται πλήρως την τοπικότητα (δεδομένων και εντολών).

Ορισμένοι υπολογισμοί μπορεί να μην συμφωνούν με τις τεχνικές αυτές και να απαιτούν μεγάλο I/O κόστος.

Ειδικά όταν πρόκειται να διαχειριστούμε μεγάλα σύνολα δεδομένων (πολύ μεγαλύτερα της μνήμης) οι τεχνικές γενικού-σκοπού δεν αποδίδουν.

Οι αλγόριθμοι που σχεδιάζονται ώστε να κάνουν το I/O κόστος όσο το δυνατόν μικρότερο αποδίδουν καλύτερα (external memory algorithms, I/O algorithms).

Οι αλγόριθμοι αυτοί είναι βασισμένοι σε απλοποιημένα μοντέλα που ρίχνουν το βάρος στο I/O κόστος.

Page 4: Advanced Data Indexing - Delab Engineeringdelab.csd.auth.gr/~tiakas/Lecture-Models-Algorithms.pdf · Για μικρό πλήθος δίσκων το χάσιμο που έχουμε

I/O Αποδοτικοί Αλγόριθμοι

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

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

Page 5: Advanced Data Indexing - Delab Engineeringdelab.csd.auth.gr/~tiakas/Lecture-Models-Algorithms.pdf · Για μικρό πλήθος δίσκων το χάσιμο που έχουμε

Η Ανάγκη για Μοντέλα

Ένα μοντέλο μας επιτρέπει: Ευκολία ανάλυσης-σχεδίασης αλγορίθμων χωρίς

ενοχλητικές λεπτομέρειες. Εμπεριέχει τα κρίσιμα χαρακτηριστικά του

πραγματικού συστήματος ώστε εκεί να δώσουμε βάρος καθώς σχεδιάζουμε τον αλγόριθμο.

Όμως: Ένα μοντέλο είναι πάντα λάθος! Το θέμα είναι πόσο λάθος είναι.

Page 6: Advanced Data Indexing - Delab Engineeringdelab.csd.auth.gr/~tiakas/Lecture-Models-Algorithms.pdf · Για μικρό πλήθος δίσκων το χάσιμο που έχουμε

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

Μέτρηση πλήθους μεταφορών μπλοκ μεταξύ των 2 επιπέδων μνήμης (κόστος) Μοντελοποιεί το κύριο πρόβλημα Πολύ πετυχημένο (απλότητα)

Μ → μέγεθος εσωτερικής μνήμης Β → μέγεθος μπλοκ δίσκου

Περιορισμοί Οι παράμετροι B και M πρέπει να είναι γνωστοί Δεν αντιμετωπίζει πολλαπλά επίπεδα μνημών Δεν αντιμετωπίζει δυναμική μεταβολή του M

CPU

Μνήμη

Δίσκος

I/O

M

B

Aggarwal and Vitter 1988

Page 7: Advanced Data Indexing - Delab Engineeringdelab.csd.auth.gr/~tiakas/Lecture-Models-Algorithms.pdf · Για μικρό πλήθος δίσκων το χάσιμο που έχουμε

D → πλήθος δίσκων

P → πλήθος επεξεργαστών Το πλήθος των δίσκων μπορεί να είναι ίσο, μικρότερο ή μεγαλύτερο σε σχέση με το πλήθος των επεξεργαστών. Αν D<P τότε κάθε δίσκος διαμοιράζεται σε P/D επεξεργαστές, ενώ αν P≤D κάθε επεξεργαστής είναι υπεύθυνος για D/P δίσκους περίπου.

Το Μοντέλο Παράλληλων Δίσκων (PDM – Parallel Disk Model)

P

Vitter and Shriver 1994

Page 8: Advanced Data Indexing - Delab Engineeringdelab.csd.auth.gr/~tiakas/Lecture-Models-Algorithms.pdf · Για μικρό πλήθος δίσκων το χάσιμο που έχουμε

Το Μοντέλο PDM – Ειδικές Περιπτώσεις

P=1 P=D

Page 9: Advanced Data Indexing - Delab Engineeringdelab.csd.auth.gr/~tiakas/Lecture-Models-Algorithms.pdf · Για μικρό πλήθος δίσκων το χάσιμο που έχουμε

Άλλες Βασικές Παράμετροι του PDM

Βασικές παράμετροι που εκφράζονται σε πλήθος αντικειμένων (# of data items):

Ν → μέγεθος του προβλήματος

Μ → μέγεθος εσωτερικής μνήμης

Β → μέγεθος μπλοκ δίσκου

Περιορισμοί: Τα Ν αντικείμενα είναι σταθερού μεγέθους Ισχύει M < Ν και 1 ≤ DB ≤ M/2 To M μοιράζεται στα CPU ισοδύναμα: M/P

Page 10: Advanced Data Indexing - Delab Engineeringdelab.csd.auth.gr/~tiakas/Lecture-Models-Algorithms.pdf · Για μικρό πλήθος δίσκων το χάσιμο που έχουμε

Άλλες Βασικές Παράμετροι του PDM

Η σχέση M < Ν εκφράζει ότι δεν χωράει όλο το πλήθος των αντικειμένων στην κύρια μνήμη (αν χωράει τότε δεν υπάρχει λόγος για σχεδιασμό I/O αποδοτικού αλγορίθμου).

Η σχέση 1 ≤ DB ≤ M/2 εκφράζει ότι από τον κάθε δίσκο πρέπει να χωράνε τουλάχιστον δύο μπλοκ στην κύρια μνήμη. Αν δεν συμβαίνει αυτό τότε ακόμα και οι πιο απλοί αλγόριθμοι δεν μπορούν να υλοποιηθούν (π.χ. ταξινόμηση).

Page 11: Advanced Data Indexing - Delab Engineeringdelab.csd.auth.gr/~tiakas/Lecture-Models-Algorithms.pdf · Για μικρό πλήθος δίσκων το χάσιμο που έχουμε

Τύποι Ερωτημάτων

Μαζικά Ερωτήματα (batched queries): Τα ερωτήματα για επεξεργασία δίνονται όλα

ταυτόχρονα. Τα επεξεργαζόμαστε όλα μαζί και απαντάμε στο κάθε

ερώτημα. Άμεσα Ερωτήματα (on-line queries):

Τα ερωτήματα έρχονται ένα-ένα σε σειρά. Επεξεργαζόμαστε και απαντάμε το κάθε ένα χωριστά

με τη σειρά που έρχονται.

Page 12: Advanced Data Indexing - Delab Engineeringdelab.csd.auth.gr/~tiakas/Lecture-Models-Algorithms.pdf · Για μικρό πλήθος δίσκων το χάσιμο που έχουμε

Άλλες Παράμετροι του PDM

Q → πλήθος ερωτημάτων (για μαζικά ερωτήματα) Ζ → μέγεθος απάντησης (σε πλήθος αντικειμένων)

Πολλές φορές βοηθάει να χρησιμοποιούμε ως

μονάδα μέτρησης τα μπλοκ δίσκου (I/O κόστος) και όχι το πλήθος αντικειμένων. Τότε συμβολίζουμε:

B

Nn =BMm =

BQq =

BZz =

Page 13: Advanced Data Indexing - Delab Engineeringdelab.csd.auth.gr/~tiakas/Lecture-Models-Algorithms.pdf · Για μικρό πλήθος δίσκων το χάσιμο που έχουμε

Μετρικές Απόδοσης του PDM

Οι κυριότερες μετρικές απόδοσης στο PDM είναι:

1. Το πλήθος των μεταφορών (Ι/Ος) που εκτελούνται (κόστος I/O σε # μπλοκ)

2. Ο χώρος που χρησιμοποιείται

3. Ο χρόνος υπολογισμού των επεξεργαστών

Το (3) πρακτικά είναι αμελητέο (συνήθως) σε σχέση με τις άλλες δύο μετρικές.

Υλοποιήσεις του PDM: Συστήματα RAID κλπ.

Page 14: Advanced Data Indexing - Delab Engineeringdelab.csd.auth.gr/~tiakas/Lecture-Models-Algorithms.pdf · Για μικρό πλήθος δίσκων το χάσιμο που έχουμε

Τοπικότητα του PDM

Πώς γίνεται η εκμετάλλευση του παραλληλισμού των πολλών δίσκων στο PDM;

Απλή ιδέα (λωριδοποίηση δίσκων): Μεταφέρουμε στην μνήμη μία ολόκληρη λωρίδα

(ρίγα) τη φορά (σε ένα I/O) και όχι ένα μπλοκ. Τα μπλοκ των δεδομένων ομαδοποιούνται στις

λωρίδες (ρίγες). Το αποτέλεσμα είναι ότι οι D δίσκοι συμπεριφέρονται

σαν ένας μεγαλύτερος με μέγεθος λογικού μπλοκ όχι B αλλά DB.

Προσοχή: Απαιτείται ο συγχρονισμός των δίσκων.

Page 15: Advanced Data Indexing - Delab Engineeringdelab.csd.auth.gr/~tiakas/Lecture-Models-Algorithms.pdf · Για μικρό πλήθος δίσκων το χάσιμο που έχουμε

Παράδειγμα Λωρίδων σε PDM

Τα δεδομένα είναι αποθηκευμένα και στους D δίσκους απλωμένα με την μορφή λωρίδας:

D0 D1 D2 D3 D4

Ρίγα 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) Ι/Ος που είναι και το βέλτιστο δυνατό.

Page 16: Advanced Data Indexing - Delab Engineeringdelab.csd.auth.gr/~tiakas/Lecture-Models-Algorithms.pdf · Για μικρό πλήθος δίσκων το χάσιμο που έχουμε

Οι Στοιχειώδεις Διαδικασίες

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

αντικειμένων (περιλαμβάνει την σειριακή ανάγνωση ή εγγραφή των αντικειμένων).

Sorting (Ταξινόμηση) πλήθους N αντικειμένων σε καθορισμένη διατεταγμένη μορφή.

Searching (Αναζήτηση) ενός αντικειμένου μέσα από N ταξινομημένα αντικείμενα.

Page 17: Advanced Data Indexing - Delab Engineeringdelab.csd.auth.gr/~tiakas/Lecture-Models-Algorithms.pdf · Για μικρό πλήθος δίσκων το χάσιμο που έχουμε

Οι Στοιχειώδεις Διαδικασίες

Output (Έξοδος) πλήθους Z αντικειμένων που αποτελούν απάντηση σε ένα συγκεκριμένο ερώτημα.

Κάθε γνωστός αλγόριθμος αναλύεται σε ένα σύνολο στοιχειωδών διαδικασιών. Ανάλογα με το πόσες και σε ποιες από αυτές αναλύεται, προκύπτει και το συνολικό του I/O κόστος.

Page 18: Advanced Data Indexing - Delab Engineeringdelab.csd.auth.gr/~tiakas/Lecture-Models-Algorithms.pdf · Για μικρό πλήθος δίσκων το χάσιμο που έχουμε

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

Page 19: Advanced Data Indexing - Delab Engineeringdelab.csd.auth.gr/~tiakas/Lecture-Models-Algorithms.pdf · Για μικρό πλήθος δίσκων το χάσιμο που έχουμε

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

Παρατηρήστε ότι: Στα όρια εμφανίζεται η μέση πολυπλοκότητα Θ. Κάτω από προϋποθέσεις τα όρια αυτά γίνονται Ο.

(I/O αποδοτικοί αλγόριθμοι). Στην περίπτωση των D δίσκων (PDM) έχουμε σε

όλες τις περιπτώσεις στη θέση του B το DB, με εξαίρεση του κόστους της ταξινόμησης.

Page 20: Advanced Data Indexing - Delab Engineeringdelab.csd.auth.gr/~tiakas/Lecture-Models-Algorithms.pdf · Για μικρό πλήθος δίσκων το χάσιμο που έχουμε

Σημαντικότητα των Ορίων

Για να εκτιμήσουμε τα βασικά όρια του πίνακα των στοιχειωδών πράξεων ας δούμε τι γίνεται όταν ένας αλγόριθμος δεν εκμεταλλεύεται την τοπικότητα:

Για λόγους απλότητας ας θεωρήσουμε ότι D=1. Πολλοί γνωστοί αλγόριθμοι όπως π.χ. sorting, FFT,

triangulation, convex-hull, έχουν απόδοση O(Nlog2N) όταν εκτελούνται με όλα τα αντικείμενα μόνο στην κύρια μνήμη.

Page 21: Advanced Data Indexing - Delab Engineeringdelab.csd.auth.gr/~tiakas/Lecture-Models-Algorithms.pdf · Για μικρό πλήθος δίσκων το χάσιμο που έχουμε

Σημαντικότητα των Ορίων

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

Page 22: Advanced Data Indexing - Delab Engineeringdelab.csd.auth.gr/~tiakas/Lecture-Models-Algorithms.pdf · Για μικρό πλήθος δίσκων το χάσιμο που έχουμε

Αποδοτική Διαπέραση (scan) - 1 δίσκος

sum = 0

for i = 1 to N do sum = sum + A[i]

N

B

A

Ο δίσκος είναι χωρισμένος σε ίσα μπλοκ μεγέθους Β, οπότε η σειριακή ανάγνωση ή εγγραφή N αντικειμένων απαιτεί O(N/B) ή O(n) I/Oς.

Page 23: Advanced Data Indexing - Delab Engineeringdelab.csd.auth.gr/~tiakas/Lecture-Models-Algorithms.pdf · Για μικρό πλήθος δίσκων το χάσιμο που έχουμε

Αποδοτική Διαπέραση (scan) - D δίσκοι

sum = 0

for i = 1 to N do sum = sum + A[i]

N

DB

A

Οι δίσκοι είναι χωρισμένοι σε ίσα μπλοκ μεγέθους Β και λωριδοποιημένοι (ισοδύναμο με έναν δίσκο με μπλοκ μεγέθους DB), οπότε η σειριακή ανάγνωση ή εγγραφή N αντικειμένων απαιτεί O(N/DB) ή O(n/D) I/Oς.

Page 24: Advanced Data Indexing - Delab Engineeringdelab.csd.auth.gr/~tiakas/Lecture-Models-Algorithms.pdf · Για μικρό πλήθος δίσκων το χάσιμο που έχουμε

Απόδοση της Λωριδοποίησης Δίσκων

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

Το πρόβλημα της ταξινόμησης δεν λύνεται βέλτιστα με αυτή την τεχνική (εφόσον το βέλτιστο κόστος είναι μικρότερο αυτού που προκύπτει με αντικατάσταση του B με DB). Ας το δούμε πιο αναλυτικά αυτό:

Page 25: Advanced Data Indexing - Delab Engineeringdelab.csd.auth.gr/~tiakas/Lecture-Models-Algorithms.pdf · Για μικρό πλήθος δίσκων το χάσιμο που έχουμε

Απόδοση της Λωριδοποίησης Δίσκων

Πολυπλοκότητα για ταξινόμηση με έναν δίσκο:

( ) ( )( )

Θ=

Θ=Θ

BMBN

BN

BN

BNnn BMm /log

/logloglog /

H Πολυπλοκότητα για ταξινόμηση με D δίσκους και λωριδοποίηση είναι (όπου B→DB):

( )( )

( )( )

Θ=

Θ=

Θ Dn

Dn

DmDn

Dn

DBMDBN

DBN

Dm /log/log/log

/log/log

/

Όμως η βέλτιστη είναι:

Θ n

Dn

mlog<

Page 26: Advanced Data Indexing - Delab Engineeringdelab.csd.auth.gr/~tiakas/Lecture-Models-Algorithms.pdf · Για μικρό πλήθος δίσκων το χάσιμο που έχουμε

Παράδειγμα

Έστω ότι έχουμε N=1012, M=109, B=104. Τότε n= 108 και m=105. Ας πάρουμε αρχικά D=2. Η απόδοση με λωριδοποίηση είναι:

( )( ) ( )7

8

5

88

/ 102.82log52log8

210

2/10log2/10log

210/log ⋅Θ≈

−−

Θ=

Θ=

Θ Dn

Dn

Dm

Η βέλτιστη απόδοση είναι:

( )( ) ( )7

8

5

88

10858

210

10log10log

210log ⋅Θ=

Θ=

Θ=

Θ n

Dn

m

Ας μεταβάλουμε τώρα το πλήθος των δίσκων:

Page 27: Advanced Data Indexing - Delab Engineeringdelab.csd.auth.gr/~tiakas/Lecture-Models-Algorithms.pdf · Για μικρό πλήθος δίσκων το χάσιμο που έχουμε

Παράδειγμα

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=1012, M=109, B=104

Θ

Πλήθος δίσκων D

Page 28: Advanced Data Indexing - Delab Engineeringdelab.csd.auth.gr/~tiakas/Lecture-Models-Algorithms.pdf · Για μικρό πλήθος δίσκων το χάσιμο που έχουμε

Απόδοση της Λωριδοποίησης Δίσκων

Για μικρό πλήθος δίσκων το χάσιμο που έχουμε από την λωριδοποίηση δεν είναι πολύ σημαντικό.

Αν όμως έχουμε μικρότερη διαθέσιμη μνήμη η μεγάλο πλήθος δίσκων η διαφορά μεγαλώνει σημαντικά.

Συνεπώς χρειαζόμαστε I/O αποδοτικούς αλγορίθμους που πετυχαίνουν το βέλτιστο όριο.

Ο μόνος τρόπος για να γίνει αυτό είναι να απομονώσουμε τους δίσκους ώστε να λειτουργούν ανεξάρτητα ο ένας από τον άλλο.

Η ανεξαρτησία αυτή μπορεί να γίνει είτε για την ανάγνωση είτε για την εγγραφή των δεδομένων.

Page 29: Advanced Data Indexing - Delab Engineeringdelab.csd.auth.gr/~tiakas/Lecture-Models-Algorithms.pdf · Για μικρό πλήθος δίσκων το χάσιμο που έχουμε

Γιατί επιμένουμε με την ταξινόμηση;

Η ταξινόμηση στη δευτερεύουσα μνήμη (external sorting) είναι ένα κεντρικό πρόβλημα στο πεδίο των I/O αποδοτικών αλγορίθμων.

Πολλά προβλήματα που λύνονται στην κεντρική μνήμη σε γραμμικό χρόνο, στην δευτερεύουσα μνήμη απαιτούν τον ίδιο χρόνο που απαιτεί στο μοντέλο PDM η διαδικασία της ταξινόμησης.

Π.χ. finding connected components, triangulation, convex hull, FFT, permuting, list ranking, expression tree evaluation, κλπ.

Page 30: Advanced Data Indexing - Delab Engineeringdelab.csd.auth.gr/~tiakas/Lecture-Models-Algorithms.pdf · Για μικρό πλήθος δίσκων το χάσιμο που έχουμε

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

Page 31: Advanced Data Indexing - Delab Engineeringdelab.csd.auth.gr/~tiakas/Lecture-Models-Algorithms.pdf · Για μικρό πλήθος δίσκων το χάσιμο που έχουμε

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

Η μέση και η χειρότερη πολυπλοκότητα στο I/O κόστος της ταξινόμησης N αντικειμένων χρησιμοποιώντας D δίσκους είναι:

Δύο βασικοί αλγόριθμοι την επιτυγχάνουν, οι οποίοι χρησιμοποιούν τους δίσκους ανεξάρτητα: Ταξινόμηση Διαχωρισμού (Distribution Sort) Ταξινόμηση Συγχώνευσης (Merge Sort)

Θ n

DnOn

Dn

mm log,log

Page 32: Advanced Data Indexing - Delab Engineeringdelab.csd.auth.gr/~tiakas/Lecture-Models-Algorithms.pdf · Για μικρό πλήθος δίσκων το χάσιμο που έχουμε

Ταξινόμηση Διαχωρισμού

Αναδρομικός αλγόριθμος (διαίρει και βασίλευε) Επιλέγονται S-1 στοιχεία διαχωρισμού με τα οποία

χωρίζονται τα αντικείμενα σε S υποσύνολα δεδομένων, έτσι ώστε:

Τα αντικείμενα κάθε υποσυνόλου (bucket) να είναι όλα μικρότερα από τα αντικείμενα του επόμενου bucket.

Ταξινομούνται αναδρομικά όλα τα ανεξάρτητα buckets.

Στο τέλος, συγχωνεύονται όλα τα ταξινομημένα buckets σε μία πλήρη ταξινομημένη λίστα.

Page 33: Advanced Data Indexing - Delab Engineeringdelab.csd.auth.gr/~tiakas/Lecture-Models-Algorithms.pdf · Για μικρό πλήθος δίσκων το χάσιμο που έχουμε

Ταξινόμηση Διαχωρισμού

Προϋπόθεση για να δουλέψει αποδοτικά ο αλγόριθμος αυτός είναι ο διαχωρισμός να γίνεται σε περίπου ίσου μεγέθους buckets.

Τότε σε κάθε αναδρομή ο σχετικός παράγοντας διαμέρισης είναι Θ(S), οπότε θα υπάρχουν O(logSn) επίπεδα αναδρομής.

Μετά από κάθε επίπεδο αναδρομής διατρέχουμε όλα τα αντικείμενα (scan σε O(n)), ώστε να επιλέξουμε τα νέα στοιχεία διαχωρισμού.

Συνολικό Κόστος: O(nlogSn)

Page 34: Advanced Data Indexing - Delab Engineeringdelab.csd.auth.gr/~tiakas/Lecture-Models-Algorithms.pdf · Για μικρό πλήθος δίσκων το χάσιμο που έχουμε

Παράδειγμα Ταξινόμησης Διαχωρισμού με 1 στοιχείο

Σε κάθε πέρασμα διαχωρίζουμε με βάση 1 στοιχείο (S=2).

Συνολικό πλήθος αναδρομών:

Συνολικό κόστος:

3,4 6,2 9,4 8,7 5,6 3,1 2

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

.

.

.

( )nO 2log

( )nnO 2log

Page 35: Advanced Data Indexing - Delab Engineeringdelab.csd.auth.gr/~tiakas/Lecture-Models-Algorithms.pdf · Για μικρό πλήθος δίσκων το χάσιμο που έχουμε

Ταξινόμηση Διαχωρισμού στον δίσκο

( ) ( )BN

S BMOnO loglog =

( ) ( ) )log(loglog BN

BN

mS BMOnnOnnO ==

Όλα τα δεδομένα είναι στον δίσκο. Για να χωρέσουν τα buckets στην κύρια μνήμη πρέπει

να επιλέξουμε S≤Θ(M/B)= Θ(m) στοιχεία διαχωρισμού.

Σύνολο Αναδρομών:

Συνολικό Κόστος I/O:

Βέλτιστο (D=1)

Page 36: Advanced Data Indexing - Delab Engineeringdelab.csd.auth.gr/~tiakas/Lecture-Models-Algorithms.pdf · Για μικρό πλήθος δίσκων το χάσιμο που έχουμε

Ταξινόμηση Διαχωρισμού στον δίσκο

Καθώς σαρώνονται τα δεδομένα σε κάθε επίπεδο, τα buckets στέλνονται στην κύρια μνήμη ένα-ένα για επεξεργασία

Εκεί όμως ομαδοποιούνται σε buffers (μεγέθους ενός μπλοκ Β) Κάθε φορά που γεμίζει ένας buffer (μετά από ταξινόμηση)

γράφεται με ένα I/O στον δίσκο πάλι:

Page 37: Advanced Data Indexing - Delab Engineeringdelab.csd.auth.gr/~tiakas/Lecture-Models-Algorithms.pdf · Για μικρό πλήθος δίσκων το χάσιμο που έχουμε

Ταξινόμηση Διαχωρισμού (D δίσκοι)

Με λωριδοποίηση έχουμε κόστος: Δεν είναι όμως το βέλτιστο (για μικρό D είναι επαρκές). Για να έχουμε το βέλτιστο: πρέπει να

διαμορφώνονται τα buckets σε κάθε επίπεδο αναδρομής με κόστος O(n/D) I/Oς.

Για να γίνει αυτό πρέπει να διαβάζονται και να γράφονται μαζικά Θ(D) μπλοκ, αλλά και να διασκορπιστούν ομοιόμορφα στους δίσκους ώστε να μην επιβαρύνονται κάποιοι περισσότερο.

Πιο πολύπλοκοι αλγόριθμοι, π.χ. Partial Striping.

Dn

DnO Dm /log /

n

DnO mlog

Page 38: Advanced Data Indexing - Delab Engineeringdelab.csd.auth.gr/~tiakas/Lecture-Models-Algorithms.pdf · Για μικρό πλήθος δίσκων το χάσιμο που έχουμε

Επιλογή Στοιχείων Διαχωρισμού (S)

Το μέγιστο πλήθος στοιχείων διαχωρισμού είναι maxS=Θ(M/B)= Θ(m).

Στο τελευταίο όμως επίπεδο αναδρομής δεν έχει νόημα να έχουμε λιγότερα από Θ(M) αντικείμενα.

Άρα μπορούμε να περιορίσουμε το S σε O(N/M)=O(n/m).

Τελικά μας συμφέρει να επιλέξουμε: S=Θ(min{m,n/m}). Είναι όμως δύσκολο να επιλέξουμε ντετερμινιστικά

Θ(min{m,n/m}) στοιχεία διαχωρισμού, ώστε τα buckets να έχουν το ίδιο περίπου μέγεθος.

Page 39: Advanced Data Indexing - Delab Engineeringdelab.csd.auth.gr/~tiakas/Lecture-Models-Algorithms.pdf · Για μικρό πλήθος δίσκων το χάσιμο που έχουμε

Μέθοδοι Επιλογής Στοιχείων

S=Θ(min{m,n/m}):

Άμεση επιλογή των πρώτων S στοιχείων από τη λίστα που ταξινομούμε (σε αναλογία με την μέθοδο quicksort) και ευχόμαστε να δουλέψει!

Τυχαία δειγματοληψία (πιθανοτική μέθοδος): 1. Επιλέγουμε τυχαία SlogS στοιχεία από τη λίστα.

2. Τα ταξινομούμε και έπειτα επιλέγουμε κάθε logS-οστό στοιχείο για διαχωρισμό.

Page 40: Advanced Data Indexing - Delab Engineeringdelab.csd.auth.gr/~tiakas/Lecture-Models-Algorithms.pdf · Για μικρό πλήθος δίσκων το χάσιμο που έχουμε

Τυχαία Δειγματοληψία

Το κόστος Ι/Ο για την εκλογή των στοιχείων διαχωρισμού είναι: Ο(SlogS+Sort(SlogS)). Το S μπορεί να είναι το πολύ n½. Οπότε κόστος: ( ) )(log2 nonnO =

Κάθε καινούργια λίστα θα έχει μέσο μέγεθος Ο(Ν/S): Η πιθανότητα κάθε στοιχείου να πέσει σε μία

υπολίστα είναι: 1/S Άρα το μέσο μέγεθος θα είναι: O(N/S)

N SlogS . . . S

Page 41: Advanced Data Indexing - Delab Engineeringdelab.csd.auth.gr/~tiakas/Lecture-Models-Algorithms.pdf · Για μικρό πλήθος δίσκων το χάσιμο που έχουμε

Ταξινόμηση Συγχώνευσης (2-δρόμων)

Αντίστροφη λογική από ταξινόμηση διαχωρισμού: Πέρασμα 1: Διάβασε ένα μπλοκ, ταξινόμηση και έπειτα

αποθήκευση. Πέρασμα 2, 3, …, κτλ:

Διάβασε 2 προηγούμενα περάσματα, ταξινόμηση, αποθήκευση.

Κύρια Μνήμη

ΕΙΣΟΔΟΣ 1

ΕΙΣΟΔΟΣ 2

ΕΞΟΔΟΣ

Δίσκος Δίσκος

Page 42: Advanced Data Indexing - Delab Engineeringdelab.csd.auth.gr/~tiakas/Lecture-Models-Algorithms.pdf · Για μικρό πλήθος δίσκων το χάσιμο που έχουμε

Παράδειγμα Merge Sort (2-δρόμων)

Σε κάθε πέρασμα διαβάζουμε και γράφουμε στον δίσκο κάθε ομάδα μπλοκ.

n μπλοκ στο αρχείο ⇒ πλήθος περασμάτων:

Συνολικό κόστος:

Αρχείο Εισόδου 3,4 6,2 9,4 8,7 5,6 3,1 2

Ταξ. 1 μπλοκ ΠΕΡΑΣΜΑ 0

3,4 5,6 2,6 4,9 7,8 1,3 2

Ταξ. 2 μπλοκ

ΠΕΡΑΣΜΑ 1

2,3 4,6

4,7 8,9

1,3 5,6 2

Ταξ. 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

( )nO 2log

( )nnO 2log

Page 43: Advanced Data Indexing - Delab Engineeringdelab.csd.auth.gr/~tiakas/Lecture-Models-Algorithms.pdf · Για μικρό πλήθος δίσκων το χάσιμο που έχουμε

Ταξινόμηση Συγχώνευσης (R δρόμων)

εγγραφή

ανάγνωση

Συγχωνευτής 4-δρόμων

2 3 5 6 9 2 3 5 6 9

57 33 41 49 51 52 1 4 7 10 14 29

8 12 16 18 22 24 31 34 35 38 42 46 3 2 1 4 5 6 7 8 9 10 11 12 13 14

11 13 15 19 21 25 27

17 20 23 26 28 30 32 37 39 43 45 50

Γενίκευση της συγχώνευσης δύο δρόμων:

Η συγχώνευση R ακολουθιών με N στοιχεία απαιτεί O(N/B) I/Oς (δεδομένου ότι R ≤ M/B – 1).

Συνολικό κόστος: O(nlogmn) επειδή έχουμε R=Θ(m).

Page 44: Advanced Data Indexing - Delab Engineeringdelab.csd.auth.gr/~tiakas/Lecture-Models-Algorithms.pdf · Για μικρό πλήθος δίσκων το χάσιμο που έχουμε

Λειτουργία Αλγόριθμου

Η MergeSort απαιτεί O(N/B·logM/B(N/B)) I/Oς Στην πράξη τα Ι/Ος είναι: 4-6 x διαπέραση εισόδου

M M

Διαχωρισμός σε διαστήματα Ταξινόμησε κάθε διάστημα Συγχώνευση 1

...

Διάστημα 1 Διάστημα 2 Διάστημα N/M

N

Ταξινομημένο

Αταξινόμητη Είσοδος

Ταξινομημένο Ταξινομημένο

Ταξινομημένο Ταξινομημένο

Ταξινομημένη Έξοδος Συγχώνευση 2

Page 45: Advanced Data Indexing - Delab Engineeringdelab.csd.auth.gr/~tiakas/Lecture-Models-Algorithms.pdf · Για μικρό πλήθος δίσκων το χάσιμο που έχουμε

Ανάλυση της Απόδοσης

Κτίζονται N/M ταξινομημένες λίστες μεγέθους Μ Επαναληπτικά συγχωνεύονται οι λίστες

⇒ φάσεις με I/Oς η κάθε μία ⇒ συνολικό κόστος:

)( BNO)(log M

NB

MO

=== )log()log()log( //

mn

mBMBN

mMN

BN nOnOO

BM

)( MNΘ

)/( BM

MNΘ

))/(( 2BM

MNΘ

( ) ( ) )log()1log()loglog( nnOnnOmnnO mmmm =−=−=

Page 46: Advanced Data Indexing - Delab Engineeringdelab.csd.auth.gr/~tiakas/Lecture-Models-Algorithms.pdf · Για μικρό πλήθος δίσκων το χάσιμο που έχουμε

Single Buffering στην Merge Sort

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

Page 47: Advanced Data Indexing - Delab Engineeringdelab.csd.auth.gr/~tiakas/Lecture-Models-Algorithms.pdf · Για μικρό πλήθος δίσκων το χάσιμο που έχουμε

Γενική Τεχνική – Double Buffering

Για να μειώσουμε το χρόνο αναμονής για την ολοκλήρωση των Ι/Ο χρησιμοποιούμε διπλούς buffers.

Καθώς γεμίζει ο 1ος εμείς χρησιμοποιούμε τον έτοιμο (2ο).

ΕΞΟΔΟΣ

ΕΞΟΔΟΣ΄

Δίσκος Δίσκος

ΕΙΣΟΔΟΣ1

ΕΙΣΟΔΟΣ R

ΕΙΣΟΔΟΣ 2

ΕΙΣΟΔΟΣ 1΄

ΕΙΣΟΔΟΣ 2΄

ΕΙΣΟΔΟΣ R΄

Μέγεθος μπλοκ B

Προφανώς θα πρέπει να ισχύει: R<m/2-1.

Page 48: Advanced Data Indexing - Delab Engineeringdelab.csd.auth.gr/~tiakas/Lecture-Models-Algorithms.pdf · Για μικρό πλήθος δίσκων το χάσιμο που έχουμε

Μεταθέσεις

Η μετάθεση είναι μία ειδική περίπτωση ταξινόμησης Ν στοιχείων με βάση μία αναδιάταξή τους.

Η μέση και χειρότερη πολυπλοκότητα κόστους I/O για να μεταθέσουμε N στοιχεία χρησιμοποιώντας D δίσκους είναι:

Θ )(,min NSort

DN

Στην περίπτωση που έχουμε Βlogm=ο(logn), είναι πιο γρήγορο να μετακινούμε τα στοιχεία ένα-ένα χωρίς μπλοκ, οπότε έχουμε:

{ }( ))(,min NSortNΘ

Page 49: Advanced Data Indexing - Delab Engineeringdelab.csd.auth.gr/~tiakas/Lecture-Models-Algorithms.pdf · Για μικρό πλήθος δίσκων το χάσιμο που έχουμε

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

Page 50: Advanced Data Indexing - Delab Engineeringdelab.csd.auth.gr/~tiakas/Lecture-Models-Algorithms.pdf · Για μικρό πλήθος δίσκων το χάσιμο που έχουμε

Cache Memory Model

N: μέγεθος προβλήματος Β: μέγεθος cache line M: Μέγεθος cache α: συσχετισιμότητα cache

Μοντέλο κόστους:

Πλήθος από cache αποτυχίες Πλήθος εντολών

Page 51: Advanced Data Indexing - Delab Engineeringdelab.csd.auth.gr/~tiakas/Lecture-Models-Algorithms.pdf · Για μικρό πλήθος δίσκων το χάσιμο που έχουμε

Internal Memory Model

Όπως στο Cache Memory Model (CMM) συν: Β΄: το πλήθος των δεδομένων σε μία σελίδα μνήμης

(Memory Page) Τ: το πλήθος των μεταφράσεων στον TLB (Translation

Look-aside Buffer)

Μοντέλο Κόστους όπως στο CMM συν: TLB αποτυχίες

Page 52: Advanced Data Indexing - Delab Engineeringdelab.csd.auth.gr/~tiakas/Lecture-Models-Algorithms.pdf · Για μικρό πλήθος δίσκων το χάσιμο που έχουμε

ΤΕΛΟΣ