Προηγμενη ευρετηριαση δεδομενων
DESCRIPTION
Προηγμενη ευρετηριαση δεδομενων. Ταξινόμηση – Αναζήτηση. Μοντέλα Δευτερεύουσας Μνήμης. Η Ανάγκη για Μοντέλα. Ένα μοντέλο μας επιτρέπει: Ευκολία ανάλυσης-σχεδίασης χωρίς ενοχλητικές λεπτομέρειες Εμπεριέχει τα κρίσιμα χαρακτηριστικά του πραγματικού συστήματος - PowerPoint PPT PresentationTRANSCRIPT
ΠΡΟΗΓΜΕΝΗ ΕΥΡΕΤΗΡΙΑΣΗ ΔΕΔΟΜΕΝΩΝΤαξινόμηση – Αναζήτηση
Μοντέλα Δευτερεύουσας Μνήμης
Η Ανάγκη για Μοντέλα
Ένα μοντέλο μας επιτρέπει: Ευκολία ανάλυσης-σχεδίασης χωρίς ενοχλητικές λεπτομέρειες
Εμπεριέχει τα κρίσιμα χαρακτηριστικά του πραγματικού συστήματος
Ένα μοντέλο είναι πάντα λάθος – το θέμα είναι πόσο λάθος είναι
Απλό Μοντέλο Δευτερεύουσας Μνήμης
Μέτρηση πλήθους μεταφορών μπλοκ μεταξύ των 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 → πλήθος ερωτήσεων (για μαζικές ερωτήσεις) Ζ → μέγεθος απάντησης
Πολλές φορές θα χρησιμοποιούμε τον εξής συμβολισμό:
B
Nn
B
Mm
B
B
Zz
Τι Μετράμε;
Οι κύριες μετρικές απόδοσης στο 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 δίσκους. Αυτό το κάνουμε αποθηκεύοντάς τα με την μορφή λωρίδας:
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Επομένως μία πράξη μπορεί να γίνει σε Ο(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 δίσκοι
Βέλτιστη πολυπλοκότητα για ταξινόμηση:
m
n
D
n
log
log
Με λωριδοποίηση δίσκων από την περίπτωση D=1:
Dm
Dn
D
n
/log
/log
Στην πράξη είναι εξαιρετικά αποδοτικό
Ταξινόμηση
Ταξινόμηση (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,4 8,7 5,6 3,1 2
Ταξ. 1 μπλοκΠΕΡΑΣΜΑ 0
3,4 5,62,6 4,9 7,8 1,3 2
Ταξ. 2 μπλοκ
ΠΕΡΑΣΜΑ 1
2,34,6
4,7
8,91,35,6 2
Ταξ. 4 μπλοκ
ΠΕΡΑΣΜΑ 22,3
4,46,7
8,9
1,23,56
Ταξ. 8 μπλοκ
ΠΕΡΑΣΜΑ 3
9
1,22,3
3,4
4,56,6
7,8
nnO 2log
nO 2log
Ταξινόμηση Συγχώνευσης (Mergesort)Συγχωνευτής k-δρόμων
Η συγχώνευση k ακολουθιών με N στοιχεία απαιτεί O(N/B) I/Oς (δεδομένου ότι k ≤ M/B – 1)
εγγραφή
ανάγνωση
Συγχωνευτής 4-δρόμων
2 3 5 6 92 3 5 6 9
5733414951521 4 7 101429
81216182224 313435384246321 4 5 6 7 8 9 1011121314
11131519212527
172023262830323739434550
25
Λειτουργία Αλγόριθμου
Η MergeSort απαιτεί O(N/B·logM/B(N/B)) I/Oς Στην πράξη τα Ι/Ος είναι: 4-6 x διαπέραση εισόδου
M M
Διαχωρισμός σε διαστήματαΤαξινόμησε κάθε διάστημα
Συγχώνευση 1
...
Διάστημα 1 Διάστημα 2 Διάστημα N/M
N
Ταξινομημένο
Αταξινόμητη Είσοδος
Ταξινομημένο
Ταξινομημένο
Ταξινομημένο
Ταξινομημένο
Ταξινομημένη ΈξοδοςΣυγχώνευση 2
Ταξινόμηση Συγχώνευσης - Απόδοση
Κτίσε N/M ταξινομημένες λίστες μεγέθους Μ Επαναληπτικά συγχώνευσε λίστες
φάσεις με I/Oς η κάθε μία I/Oς)( B
NO)(logMN
BMO )log(
BN
BN
BMO
)(MN
)/(BM
MN
))/(( 2BM
MN
1
Γενική Τεχνική – Double Buffering
Για να μειώσουμε το χρόνο αναμονής για την ολοκλήρωση Ι/Ο, μπορούμε να το φέρουμε σε ένα `σκιώδες μπλοκ’.
ΕΞΟΔΟΣ
ΕΞΟΔΟΣ΄
Δίσκος Δίσκος
ΕΙΣΟΔΟΣ1
ΕΙΣΟΔΟΣ k
ΕΙΣΟΔΟΣ 2
ΕΙΣΟΔΟΣ 1΄
ΕΙΣΟΔΟΣ 2΄
ΕΙΣΟΔΟΣ k΄
Μέγεθος μπλοκB
Ταξινόμηση Διαχωρισμού(Γρήγορη Ταξινόμηση πολλών δρόμων)
Υπολόγισε Θ(M/B) στοιχεία διαχωρισμού Διαχώρισε την αταξινόμητη λίστα σε Θ(M/B) αταξινόμητες λίστες ίδιου
μεγέθους Αναδρομικά διαχώρισε τις λίστες μέχρι να χωρέσουν στην μνήμη
Þ φάσεις
Þ I/Oς αν τα στοιχεία διαχωρισμού εντοπίζονται σε O(N/B) I/Oς
)(logMN
BMO
)log(BN
BN
BMO
Παράδειγμα με 1 στοιχείο διαχωρισμού
Σε κάθε πέρασμα διαχωρίζουμε με βάση 1 στοιχείο.
n μπλοκ στο αρχείο ⇒ πλήθος περασμάτων;
Συνολικό κόστος;
Ιδέα: Διαίρει και Βασίλευε (αντίστροφα από συγχώνευση)
3,4
6,2
9,4
8,7
5,6
3,1
2
5
3,4
2,4
3,1
25,6
9,8
7,6
3 7
2,1
23,4
4,3
5,6
67,9
8
.
.
.
nO 2log
nnO 2log
Πιθανοτική Επιλογή Στοιχείων Διαχωρισμού (Εύκολη)
Επιλογή S=Θ(min{m,n/m}) στοιχείων διαχωρισμού. Απλές μέθοδοι:
1. Επέλεξε τα πρώτα S στοιχεία από τη λίστα που ταξινομούμε (σε αντιστοιχία με quicksort) και ευχόμαστε να δουλέψει
2. Τυχαία δειγματοληψία:1. Επιλέγουμε τυχαία SlogS στοιχεία από τη λίστα
2. Τα ταξινομούμε και έπειτα επιλέγουμε κάθε logS-οστό στοιχείο για διαχωρισμό
Τυχαία Δειγματοληψία
Χρειαζόμαστε Ο(SlogS+Sort(SlogS)) Ι/Ος. Το S μπορεί να είναι το πολύ n½:
)(log2 nonnO
Κάθε καινούργια λίστα θα έχει μέσο μέγεθος Ο(Ν/S):
Πιθανότητα κάθε στοιχείου να πέσει σε μία υπολίστα 1/S
Άρα μέσο μέγεθος είναι O(N/S)
NSlogS. . .S
Αναδιάταξη
Permutation – Hans LoffelΤαξινόμησε Ν στοιχεία με βάση μία αντιμετάθεση των {1,2,3,…,Ν}
)(,min NSortN
Γιατί δεν έχουμε Ν/Β;
Κάτω Φράγμα για Ταξινόμηση
Κάτω Φράγμα Ταξινόμησης
Υπόθεση: Τα στοιχεία που ταξινομούμε είναι αδιαίρετα (indivisibility assumption)
Όλοι οι αλγόριθμοι ταξινόμησης δευτερεύουσας μνήμης στο μοντέλο PDM (για D=1) θα πρέπει να κάνουν τουλάχιστον
O(nlogmn) I/Oς.
Κάποια Βασικά…
Μοντέλο Μνήμης: PDM, D=1
Μοντέλο συγκρίσεων: τα στοιχεία μπορούν να συγκριθούν μόνο στην κύρια μνήμη. Μπορούμε να τα μεταφέρουμε, να τα αντιγράψουμε και να τα διαγράψουμε – τίποτα άλλο.
Υποθέτουμε ότι M2B.
Τα μπλοκ στην αρχή είναι τοποθετημένα όλα μαζί σε μία περιοχή του δίσκου.
Η σειρά των στοιχείων στην εσωτερική μνήμη δίνεται δωρεάν.
Δοθείσης μία εκτέλεσης ενός αλγορίθμου ταξινόμησης ορίζουμε το St = πλήθος δυνατών αναδιατάξεων έπειτα από t I/Oς. (S0=Ν!)
Ν στοιχεία δίνουν Ν! αναδιατάξεις. Στόχος μας είναι να δούμε πως μειώνεται το πλήθος των αναδιατάξεων έπειτα από
κάθε πράξη, μέχρι να γίνει 1.
Πράξεις και Μείωση St
Εγγραφή μπλοκ στο δίσκο: Δεν επηρεάζει
Όσες αναδιατάξεις είχαμε πριν την εγγραφή έχουμε και μετά
Ανάγνωση για πρώτη φορά μπλοκ:
Ανάγνωση μπλοκ (όχι για πρώτη φορά):
!BB
M
B
M
Μείωση Αναδιατάξεων
Αν X είναι η μείωση κατά την πράξη Ι/Ο t+1, τότε:St+1St/Χ
Υπάρχουν το πολύ Ν/Β αναγνώσεις μπλοκ που γίνονται για πρώτη φορά.
Αφού S0=Ν! και St+1St/Χ προκύπτει ότι για τις Ν/Β αναγνώσεις (και για να φτάσουμε σε μία αντιμετάθεση) :
BN
t
BB
M
N
!
!1
ΤΈΛΟΣ