Διπλωματική Εργασία του φοιτητή του Τμήματος Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών της Πολυτεχνικής Σχολής του Πανεπιστημίου Πατρών

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "Διπλωματική Εργασία του φοιτητή του Τμήματος Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών της Πολυτεχνικής Σχολής του Πανεπιστημίου Πατρών"

Transcript

1 ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ: ΗΛΕΚΤΡΟΝΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΣΥΣΤΗΜΑΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Διπλωματική Εργασία του φοιτητή του Τμήματος Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών της Πολυτεχνικής Σχολής του Πανεπιστημίου Πατρών Κωνσταντινίδη Νικόλαου του Γεωργίου Αριθμός Μητρώου: 6295 Θέμα «ΡΕΥΣΤΟΜΗΧΑΝΙΚΗ ΚΑΙ GRID» Επιβλέπων Καθηγητής Ευθύμιος Χούσος Αριθμός Διπλωματικής Εργασίας: Πάτρα, Οκτώβριος 213

2

3 ΠΙΣΤΟΠΟΙΗΣΗ Πιστοποιείται ότι η Διπλωματική Εργασία με θέμα «ΡΕΥΣΤΟΜΗΧΑΝΙΚΗ ΚΑΙ GRID» Του φοιτητή του Τμήματος Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών Κωνσταντινίδης Νικόλαος του Γεωργίου Αριθμός Μητρώου: 6295 Παρουσιάστηκε δημόσια και εξετάστηκε στο Τμήμα Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών στις.../../ Ο Επιβλέπων Ο Διευθυντής του Τομέα Καθηγητής Ευθύμιος Χούσος Καθηγητής Ευθύμιος Χούσος

4

5 Αριθμός Διπλωματικής Εργασίας: Θέμα: «ΡΕΥΣΤΟΜΗΧΑΝΙΚΗ ΚΑΙ GRID» Φοιτητής:Κωνσταντινίδης Νικόλαος Επιβλέπων: Καθηγητής Χούσος Ευθύμιος

6

7 Περίληψη Η ανάγκη για την επίλυση μεγάλων προβλημάτων και η εξέλιξη της τεχνολογίας του διαδικτύου, είχε ως αποτέλεσμα την διαρκή ανάγκη για την εύρεση όλο και περισσότερων πόρων. Η ανάγκη αυτή οδήγησε στην δημιουργία δομών συνεργαζόμενων υπολογιστικών συστημάτων, με απώτερο σκοπό την επίλυση προβλημάτων που απαιτούν μεγάλη υπολογιστική ισχύ ή την αποθήκευση μεγάλου όγκου δεδομένων. Η ύπαρξη τέτοιων δομών αλλά και κεντρικών μονάδων επεξεργασίας με περισσότερους από έναν επεξεργαστές, δημιούργησε πρωτόκολλα για την δημιουργία εφαρμογών που θα εκτελούνται και θα επιλύουν ένα πρόβλημα σε περισσότερους από έναν επεξεργαστές, ώστε να επιτευχθεί η μείωση του χρόνου εκτέλεσης. Ένα παράδειγμα τέτοιου πρωτοκόλλου είναι αυτό της ανταλλαγής μηνυμάτων (MPI). Σκοπός της παρούσας διπλωματικής εργασίας είναι η τροποποίηση μιας υπάρχουσας εφαρμογή, που απαιτεί σημαντική υπολογιστική ισχύ, με σκοπό την εκμετάλλευση συστημάτων όπως αυτά που περιγράφηκαν προηγούμενα. Μέσα από αυτή την διαδικασία θα γίνει ανάλυση των πλεονεκτημάτων και των μειονεκτημάτων του παράλληλου προγραμματισμού. Abstract The need to solve large problems and the development of internet technology, has resulted in the need to find more and more resources. This need led to the creation of structures collaborating systems, with a view to solving problems that require large computing power or storage of large amounts of data. The existence of such structures and central processing units with more than one processor, created protocols for the develop applications that will run and will solve a problem in more than one processor in order to achieve the reduction in execution time. An example of such a protocol is that of messaging (MPI). The purpose of this diploma thesis is to modify an existing application that requires significant computing power to exploit systems such as those described above. Through this process will analyze the advantages and disadvantages of parallel programming.

8

9 ΠΕΡΙΕΧΟΜΕΝΑ ΚΕΦΑΛΑΙΟ 1 : ΠΑΡΑΛΛΗΛΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΠΛΕΓΜΑΤΑ ΥΠΟΛΟΓΙΣΤΩΝ...1 ΣΚΟΠΟΣ... 1 ΤΙ ΕΙΝΑΙ Ο ΠΑΡΑΛΛΗΛΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ...3 ΤΟ ΣΕΙΡΙΑΚΟ ΜΟΝΤΕΛΟ ΜΟΝΤΕΛΟ Von Neumann...4 ΚΑΤΗΓΟΡΙΕΣ ΥΠΟΛΟΓΙΣΤΩΝ ΜΕ ΠΟΛΛΟΥΣ ΕΠΕΞΕΡΓΑΣΤΕΣ...6 ΑΡΧΙΤΕΚΤΟΝΙΚΕΣ ΜΝΗΜΗΣ ΠΑΡΑΛΛΗΛΩΝ ΥΠΟΛΟΓΙΣΤΩΝ...1 ΠΑΡΑΛΛΗΛΑ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΑ ΜΟΝΤΕΛΑ...12 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΠΑΡΑΛΛΗΛΩΝ ΕΠΕΞΕΡΓΑΣΤΩΝ...13 ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΑΡΑΛΛΗΛΟΥΣ ΥΠΟΛΟΓΙΣΤΕΣ...14 ΠΛΕΓΜΑ ΥΠΟΛΟΓΙΣΤΩΝ ΚΕΦΑΛΑΙΟ 2 : ΜΕΤΡΑ ΑΠΟΔΟΣΗΣ ΠΑΡΑΛΛΗΛΩΝ ΑΛΓΟΡΙΘΜΩΝ...23 ΣΚΟΠΟΣ ΑΝΑΛΥΣΗ ΣΕΙΡΙΑΚΩΝ ΑΛΓΟΡΙΘΜΩΝ...25 ΣΥΓΚΡΙΣΗ ΣΕΙΡΙΑΚΟΥ ΚΑΙ ΠΑΡΑΛΛΗΛΟΥ ΑΛΓΟΡΙΘΜΟΥ...26 ΑΠΟΔΟΤΙΚΟΤΗΤΑ ΚΑΙ ΚΟΣΤΟΣ ΝΟΜΟΣ ΤΟΥ AMDAHL Ο ΝΟΜΟΣ ΤΟΥ GUSTAFSON ΚΕΦΑΛΑΙΟ 3 : ΡΕΥΣΤΟΜΗΧΑΝΙΚΗ ΚΑΙ ΠΑΡΑΓΟΝΤΟΠΟΙΗΣΗ CHOLESKY...33 ΣΚΟΠΟΣ ΕΦΑΡΜΟΓΗ ΡΕΥΣΤΟΜΗΧΑΝΙΚΗΣ ΘΕΩΡΙΑ ΓΡΑΦΗΜΑΤΩΝ ΠΑΡΑΓΟΝΤΟΠΟΙΗΣΗ CHOLESKY (CHOLESKY FACTORIZATION)...38 ΠΑΡΑΓΟΝΤΟΠΟΙΗΣΗ CHOLESKY ΣΕ ΠΟΛΛΟΥΣ ΕΠΕΞΕΡΓΑΣΤΕΣ...49 ΚΕΦΑΛΑΙΟ 4 : ΥΛΟΠΟΙΗΣΗ ΣΚΟΠΟΣ ΕΙΣΑΓΩΓΗ ΠΡΩΤΗ ΥΛΟΠΟΙΗΣΗ ΔΕΥΤΕΡΗ ΥΛΟΠΟΙΗΣΗ ΚΕΦΑΛΑΙΟ 5 : ΠΕΙΡΑΜΑΤΙΚΑ ΑΠΟΤΕΛΕΣΜΑΤΑ...83 ΣΚΟΠΟΣ ΕΙΣΑΓΩΓΗ ΣΕΙΡΙΑΚΗ ΕΦΑΡΜΟΓΗ ΠΑΡΑΛΛΗΛΗ ΕΦΑΡΜΟΓΗ... 87

10 ΣΥΓΚΡΙΣΗ ΕΚΔΟΣΕΩΝ ΣΕΙΡΙΑΚΗΣ ΚΑΙ ΠΑΡΑΛΛΗΛΗΣ ΥΛΟΠΟΙΗΣΗΣ...9 ΣΥΓΚΡΙΣΗ ΕΦΑΡΜΟΓΗΣ ΡΕΥΣΤΟΜΗΧΑΝΙΚΗΣ ΓΙΑ ΠΑΡΑΛΛΗΛΗ ΚΑΙ ΣΕΙΡΙΑΚΗ ΕΚΤΕΛΕΣΗ ΣΥΜΠΕΡΑΣΜΑΤΑ ΠΑΡΑΡΤΗΜΑ Α ΠΑΡΑΡΤΗΜΑ Β ΠΑΡΑΡΤΗΜΑ Γ ΠΑΡΑΡΤΗΜΑ Δ ΒΙΒΛΙΟΓΡΑΦΙΚΕΣ ΑΝΑΦΟΡΕΣ

11 ΕΥΧΑΡΙΣΤΙΕΣ Η παρούσα Διπλωματική Εργασία πραγματοποιήθηκε στο Εργαστήριο Συστημάτων Υπολογιστών του τομέα Ηλεκτρονικής και Υπολογιστών του Τμήματος Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών Πάτρας, υπό την επίβλεψη του καθηγητή Χούσου Ευθύμιου, τον οποίο οφείλω να ευχαριστήσω θερμά, για την ανάθεση του θέματος και την συμβολή του κατά την διάρκεια της πραγματοποίησής της. Επίσης θα ήθελα να ευχαριστήσω τον υποψήφιο Διδάκτορα Κολώνια Βασίλειο, για την βοήθειά του και τις συμβουλές του στην υλοποίηση της εργασίας. Τέλος, ευχαριστώ θερμά την οικογένεια μου και τους φίλους μου, για την ακατάπαυστη συμπαράσταση και ηθική υποστήριξη τους, όλα αυτά τα χρόνια.

12

13 ΚΕΦΑΛΑΙΟ 1 : ΠΑΡΑΛΛΗΛΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΠΛΕΓΜΑΤΑ ΥΠΟΛΟΓΙΣΤΩΝ ΣΚΟΠΟΣ Σε αυτό το κεφάλαιο θα γίνει μια εισαγωγή στην έννοια του παράλληλου προγραμματισμού, τι είναι και για ποιον λόγο τον χρησιμοποιούμε. Θα παρουσιαστούν οι αρχιτεκτονικές των παράλληλων συστημάτων, τα μοντέλα προγραμματισμού για μηχανήματα με παράλληλη αρχιτεκτονική καθώς επίσης και τον τρόπο με τον οποίο σχεδιάζουμε ένα πρόγραμμα για αυτά τα συστήματα.

14

15 ΚΕΦΑΛΑΙΟ 1 ΠΑΡΑΛΛΗΛΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΠΛΕΓΜΑΤΑ ΥΠΟΛΟΓΙΣΤΩΝ ΤΙ ΕΙΝΑΙ Ο ΠΑΡΑΛΛΗΛΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Στον σειριακό προγραμματισμό γράφουμε ένα πρόγραμμα προκειμένου να εκτελεστεί σε σειριακούς υπολογιστές. Με τον όρο αυτό εννοούμε οτι η εκτέλεση θα γίνει σε έναν επεξεργαστή, ο οποίος θα εκτελέσει την μια εντολή μετά την άλλη και θα εκτελείται μόνο μια εντολή την φόρα μέχρι να φτάσουμε στο τέλος του προγράμματος. Αντιθέτως, στον παράλληλο προγραμματισμό δεν συμβαίνει αυτό. Τα συστήματα που χρησιμοποιούμε σε αυτή την περίπτωση διαθέτουν περισσότερους επεξεργαστές, και ορισμένα τμήματα του προγράμματος εκτελούνται ταυτόχρονα, εφόσον βέβαια κάτι τέτοιο είναι εφικτό. Γι αυτό, το πρόγραμμα αρχικά χωρίζεται σε τμήματα τα οποία μπορούν να εκτελεστούν ταυτόχρονα και ο κάθε επεξεργαστής αναλαμβάνει την εκτέλεση ενός τμήματος από αυτά με τον κλασσικό σειριακό τρόπο. Είναι λοιπόν φανερό οτι κάτι τέτοιο δίνει την δυνατότητα να εκτελεστεί ένα πρόγραμμα σε λιγότερο χρόνο αφού κάποια κομμάτια του μπορούν να εκτελεστούν ταυτόχρονα. Στην εικόνα 1.1 φαίνεται ο τρόπο εκτέλεσης ενός προγράμματος σε σειριακές και παράλληλες αρχιτεκτονικές. Εικόνα 1.1 Σειριακή και παράλληλη εκτέλεση προγραμμάτων [1] Επομένως, ως ορισμό, θα μπορούσαμε να πούμε οτι ο παράλληλος προγραμματισμός είναι ο προγραμματισμός σε μία γλώσσα που επιτρέπει διαφορετικά τμήματα της υπολογιστικής διαδικασίας να εκτελούνται ταυτόχρονα σε διαφορετικούς υπολογιστές. Γιατί όμως παράλληλος προγραμματισμός; Μια απάντηση στο ερώτημα αυτό δίνεται στο [7]. Ένας λόγος λοιπόν, για τον οποίο ο παράλληλος προγραμματισμός είναι [1] to Parallel Computing.htm 3

16 ΚΕΦΑΛΑΙΟ 1 ΠΑΡΑΛΛΗΛΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΠΛΕΓΜΑΤΑ ΥΠΟΛΟΓΙΣΤΩΝ σημαντικός, αναφέρθηκε ήδη και αφορά την ταχύτητα εκτέλεσης ενός προγράμματος. Επίσης θα πρέπει να σημειωθεί οτι οι ταχύτητες των επεξεργαστών δεν αυξάνονται με τον ίδιο ρυθμό που αυξάνονταν τα προηγούμενα χρόνια και γι αυτό, προκειμένου να πετύχουμε γρηγορότερες ταχύτητες, δεν στοχεύουμε στην αύξηση της ταχύτητας του επεξεργαστή αλλά στην δημιουργία αρχιτεκτονικών με περισσότερους επεξεργαστές, Τελικώς, με τον τρόπο αυτό, πετυχαίνουμε γρηγορότερες ταχύτητες αν χρησιμοποιούμε τους επεξεργαστές αυτούς ταυτόχρονα. Με τον τρόπο αυτό λοιπόν μπορούμε να κάνουμε χρήση επεξεργαστών ή μηχανημάτων που έχουμε ήδη και να δημιουργήσουμε παράλληλα συστήματα τα οποία να είναι αρκετά γρήγορα κερδίζοντας σε κόστος αφού δεν θα είναι αναγκαία η αγορά νέου, γρηγορότερου, επεξεργαστή. Αυτό είναι και το πλέγμα υπολογιστών (grid computing)[1], ένας σύνδεσμος υπολογιστικών πόρων από διάφορες τοποθεσίες στην γη, με σκοπό την επίτευξη ενός κοινού στόχου και μπορεί να θεωρηθεί ως κατανεμημένο σύστημα. Επίσης υπάρχουν αρκετά μεγάλα προβλήματα, τα οποία χρειάζονται πολλούς πόρους, ειδικά σε μνήμη και είναι αδύνατον να λυθούν σε έναν υπολογιστή και γι αυτό γίνεται αναγκαία η χρήση περισσοτέρων. Οι υπολογιστές που θα χρησιμοποιηθούν δεν είναι απαραίτητο να βρίσκονται στον ίδιο χώρο αλλά οπουδήποτε αλλού. Επομένως αν τοπικά διαθέτουμε ένα υπολογιστικό σύστημα με περιορισμένες δυνατότητες, μπορούμε να χρησιμοποιήσουμε άλλους που βρίσκονται κάπου αλλού και μας παρέχουν περισσότερους υπολογιστικούς πόρους. ΤΟ ΣΕΙΡΙΑΚΟ ΜΟΝΤΕΛΟ ΜΟΝΤΕΛΟ Von Neumann Τα παράλληλα συστήματα και προγράμματα έχουν στηριχθεί και αναπτυχθεί πάνω σε σειριακά μοντέλα. Γι αυτό πριν κάνουμε αναφορά σε αυτά τα συστήματα θα δούμε πως δομείται ένα σειριακό σύστημα. Οι υπολογιστές βασίζονται παραδοσιακά σε ένα μοντέλο προγραμματισμού αρχιτεκτονικής το οποίο είναι γνωστό ως μοντέλο von Neumann ή απλώς ως σειριακό μοντέλο. Το μοντέλο αυτό[1] εμφανίστηκε το 1945 και περιγράφει έναν ψηφιακό υπολογιστή ο οποίος αποτελείται χονδρικά από τρία βασικά μέρη, την κύρια μνήμη, την κεντρική μονάδα επεξεργασίας και μια διασύνδεση μεταξύ τους. [1] 4

17 ΚΕΦΑΛΑΙΟ 1 ΠΑΡΑΛΛΗΛΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΠΛΕΓΜΑΤΑ ΥΠΟΛΟΓΙΣΤΩΝ Εικόνα Το μοντέλο von Neumann ή σειριακό μοντέλο [1] Η κύρια μνήμη χρησιμοποιείται για την αποθήκευση δεδομένων και εντολών. Αποτελείται από θέσεις οι οποίες είναι κατάλληλες τόσο για την αποθήκευση δεδομένων όσο και για την αποθήκευση εντολών. Κάθε θέση έχει μια διεύθυνση, με βάση την οποία μπορούμε να προσπελάσουμε το περιεχόμενό της. Το δεύτερο βασικό στοιχείο της αρχιτεκτονικής, η κεντρική μονάδα επεξεργασίας (CPU), αποτελείται από δυο βασικά κομμάτια, την μονάδα ελέγχου (Control Unit), και την αριθμητική και λογική μονάδα (Arithmetic and Logic Unit). Η πρώτη είναι υπεύθυνη για να αποφασίσει ποια θα είναι η επόμενη εντολή που θα εκτελεστεί ενώ η εκτέλεση της γίνεται στην αριθμητική και λογική μονάδα. Τα δεδομένα εντός της κεντρικής μονάδας και οι πληροφορίες σχετικά με την κατάσταση του προγράμματος αποθηκεύονται σε ειδικά και γρήγορα αποθηκευτικά μέσα που καλούνται registers, ενώ υπάρχει και ένας ειδικός register που καλείται program counter και αποθηκεύει την θέση της επόμενης εντολής που θα εκτελεστεί. Η μεταφορά δεδομένων και εντολών μεταξύ της κεντρικής μονάδας επεξεργασίας και της κύριας μνήμης γίνεται με τους διαύλους επικοινωνίας (bus), που είναι ένα σύνολο από παράλληλα καλώδια και κάποιο κύκλωμα που ελέγχει την πρόσβαση σε αυτά. Όταν τα δεδομένα μετακινούνται από την μνήμη στην κεντρική μονάδα επεξεργασίας έχουμε ανάγνωση δεδομένων ενώ στην αντίθετη περίπτωση, όταν δηλαδή μετακινούνται δεδομένα από την κεντρική μονάδα επεξεργασίας προς την κύρια μνήμη έχουμε αποθήκευση δεδομένων. Μια μηχανή von Neumann εκτελεί μια μεμονωμένη εντολή την φορά, όπως έχει καθοριστεί από το πρόγραμμα, και αυτή επιδρά μόνο σε ορισμένα από τα δεδομένα. Η διαδικασία που γίνεται προκειμένου να εκτελεστεί η εντολή σε αυτή την μηχανή είναι [1] 5

18 ΚΕΦΑΛΑΙΟ 1 ΠΑΡΑΛΛΗΛΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΠΛΕΓΜΑΤΑ ΥΠΟΛΟΓΙΣΤΩΝ αρχικά η λήψη της επόμενης εντολής από την κύρια μνήμη, η θέση της οποίας είναι αποθηκευμένη στον program counter, η εκτέλεσή της ανάλογα με τις ενέργειες που καθορίζει προκαλώντας πιθανόν κάποια τροποποίηση δεδομένων στην μνήμη. Ο κύκλος αυτός επαναλαμβάνεται συνεχώς. Ένα από τα βασικά προβλήματα αυτού του μοντέλου είναι το λεγόμενο von Neumann bottleneck, λόγω του διαχωρισμού της κεντρικής μονάδας επεξεργασίας και της μνήμης. Ουσιαστικά αυτό το οποίο καθορίζει το μέγεθος των δεδομένων που μπορούν να προσπελαστούν είναι ο δίαυλος επικοινωνίας, με αποτέλεσμα την αύξηση του χρόνου εκτέλεση. ΚΑΤΗΓΟΡΙΕΣ ΥΠΟΛΟΓΙΣΤΩΝ ΜΕ ΠΟΛΛΟΥΣ ΕΠΕΞΕΡΓΑΣΤΕΣ Ο Michael J. Flynn το 1966 ταξινόμησε τις αρχιτεκτονικές των υπολογιστών με βάση τον αριθμό των εντολών που μπορεί να εκτελέσει ταυτόχρονα και των δεδομένων που είναι διαθέσιμα στην αρχιτεκτονική. Με βάση τα προηγούμενα κριτήρια έχουμε τέσσερις κατηγορίες αρχιτεκτονικών [1][2] [1] to Parallel Computing.htm [2] 6

19 ΚΕΦΑΛΑΙΟ 1 ΠΑΡΑΛΛΗΛΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΠΛΕΓΜΑΤΑ ΥΠΟΛΟΓΙΣΤΩΝ 1. SISD Single Instruction, Single Data stream 7

20 ΚΕΦΑΛΑΙΟ 1 ΠΑΡΑΛΛΗΛΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΠΛΕΓΜΑΤΑ ΥΠΟΛΟΓΙΣΤΩΝ Σε αυτή την αρχιτεκτονική έχουμε έναν επεξεργαστή, οποίος εκτελεί μία εντολή πάνω στα δεδομένα που είναι αποθηκευμένα σε μια μνήμη. Αυτή η αρχιτεκτονική αντιστοιχίζεται στην αρχιτεκτονική von Neumann. Εικόνα 1.3 Εκτέλεση αρχιτεκτονική SISD εντολών με την 2. SIMD - Single Instruction, Multiple Data streams Σε αυτή την αρχιτεκτονική έχουμε την εκτέλεση μιας εντολής σε διαφορετικά δεδομένα ταυτόχρονα. αρχιτεκτονική παράλληλου Αυτή η είναι ένας τύπος υπολογιστή και παρέχει παραλληλισμό σε επίπεδο δεδομένων (data level parallelism). Αυτού του είδους ο παραλληλισμός Εικόνα 1.4 Εκτέλεση αρχιτεκτονική SIMD εντολών με την χρησιμοποιείται στα πολυμέσα. 3. MISD - Multiple Instruction, Single Data stream Αυτός είναι ένας τύπος παράλληλης αρχιτεκτονικής στην οποία εφαρμόζουμε διαφορετικές εντολές δεδομένα. Εικόνα 1.5 Εκτέλεση αρχιτεκτονική MISD εντολών με την 4. MIMD - Multiple Instruction, Multiple Data streams 8 πάνω στα ίδια

21 ΚΕΦΑΛΑΙΟ 1 ΠΑΡΑΛΛΗΛΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΠΛΕΓΜΑΤΑ ΥΠΟΛΟΓΙΣΤΩΝ Οι μηχανές με αυτή την αρχιτεκτονική έχουν έναν αριθμό από επεξεργαστές οι οποίοι λειτουργούν ανεξάρτητα και ταυτόχρονα. Κάθε στιγμή διαφορετικοί επεξεργαστές μπορούν να εκτελέσουν διαφορετικές εντολές πάνω σε διαφορετικά δεδομένα. Ανάλογα με τον τρόπο επικοινωνίας τους χωρίζονται σε κοινής μνήμης (shared memory) και Εικόνα 1.6 Εκτέλεση αρχιτεκτονική MIMD εντολών με την κατανεμημένης μνήμης (distributed memory). Στις επόμενες εικόνες δείχνουμε σχηματικά τους παραπάνω τύπους αρχιτεκτονικής υπολογιστών [1] 9

22 ΚΕΦΑΛΑΙΟ 1 ΠΑΡΑΛΛΗΛΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΠΛΕΓΜΑΤΑ ΥΠΟΛΟΓΙΣΤΩΝ Εικόνα Κατηγοριοποίηση υπολογιστών κατά Flynn [1] Στην αρχιτεκτονική κοινής μνήμης οι επεξεργαστές δεν συνδέονται μεταξύ τους, αλλά μόνο με την κοινή μνήμη μέσω ενός δικτύου διασύνδεσης. Σε τέτοιου είδους αρχιτεκτονικές, ο προγραμματιστής θα πρέπει να προσέχει το πότε ένα πρόγραμμα ή επεξεργαστής διαβάζει ένα δεδομένο. Ο κάθε επεξεργαστής κρατάει ένα δικό του αντίγραφο, στην cache του, από κάποιο δεδομένο που υπάρχει στην κύρια μνήμη. Αν όμως κάποιος άλλος το αλλάξει τότε αυτό θα έχει λάθος τιμή. Το πρόβλημα αυτό είναι γνωστό ως Cache Coherency Problem. Αντίθετα, στην αρχιτεκτονική κατανεμημένης μνήμης, ο κάθε επεξεργαστής έχει την δική του μνήμη και επικοινωνεί με τους υπόλοιπους με χρήση μηνυμάτων. Κάθε επεξεργαστής λαμβάνει ένα αντίγραφο του προγράμματος και το εκτελεί χωρίς να έχει τίποτα κοινό με κάποιον άλλον επεξεργαστή. Επομένως αν θέλουμε κάποιο συγχρονισμό μεταξύ των επεξεργαστών, τότε θα πρέπει είτε να λάβουμε κάποιο δεδομένο κατόπιν αιτήσεως, είτε οι τοπικές μνήμες των επεξεργαστών να έχουν κοινά δεδομένα. Ένα πρόβλημα όμως που έχουμε εδώ είναι η καθυστέρηση που εισάγεται από το δίκτυο διασύνδεσης κατά την ανταλλαγή μηνυμάτων μεταξύ των επεξεργαστών. [1] to Parallel Computing.htm 1

23 ΚΕΦΑΛΑΙΟ 1 ΠΑΡΑΛΛΗΛΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΠΛΕΓΜΑΤΑ ΥΠΟΛΟΓΙΣΤΩΝ ΑΡΧΙΤΕΚΤΟΝΙΚΕΣ ΜΝΗΜΗΣ ΠΑΡΑΛΛΗΛΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Με βάση τον τρόπο με τον οποίο οργανώνεται η μνήμη καθώς επίσης και η πρόσβαση των επεξεργαστών σε αυτή, οι παράλληλοι υπολογιστές χωρίζονται στις ακόλουθες κατηγορίες: κοινής μνήμης (shared memory) κατανεμημένης μνήμης (distributed memory) υβριδικό κατανεμημένης-κοινής μνήμης (hybrid distributed-shared memory) Σε γενικές γραμμές οι υπολογιστές κοινής μνήμης έχουν διαφορές μεταξύ τους, όμως η γενική ιδέα είναι η ίδια, οτι δηλαδή όλοι οι επεξεργαστές έχουν πρόσβαση σε όλη την μνήμη. Οι επεξεργαστές μπορούν να λειτουργούν ανεξάρτητα ο ένας από τον άλλον, αλλά μοιράζονται την ίδια μνήμη μεταξύ τους και οι αλλαγές που κάνει ένας επεξεργαστής μπορούν να γίνουν ορατές από όλους τους επεξεργαστές. Σε τέτοιου είδους αρχιτεκτονικές λοιπόν, ο κάθε επεξεργαστής κρατάει ένα δικό του αντίγραφο, στην cache του, από κάποιο δεδομένο που υπάρχει στην κύρια μνήμη. Αν όμως κάποιος άλλος το αλλάξει τότε αυτό θα έχει λάθος τιμή. Το πρόβλημα αυτό είναι γνωστό ως Cache Coherency Problem. Είναι λοιπόν ευθύνη του προγραμματιστή να ορίσει πότε και ποιος επεξεργαστής διαβάζει ή αλλάζει κάποια θέση μνήμης. Οι επεξεργαστές δεν συνδέονται μεταξύ τους, αλλά μόνο με την κοινή μνήμη μέσω ενός δικτύου διασύνδεσης. Οι υπολογιστές σε αυτή την κατηγορία μπορούν να χωριστούν σε δύο ομάδες, τις μηχανές UMA (Uniform Memory Access) και τις μηχανές NUMA (Non-Uniform Memory Access)[1]. Εικόνα 1.8 Αρχιτεκτονική κοινής μνήμης UMA[1] Εικόνα 1.9 Αρχιτεκτονική κοινής μνήμης NUMA[1] [1] to Parallel Computing.htm 11

24 ΚΕΦΑΛΑΙΟ 1 ΠΑΡΑΛΛΗΛΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΠΛΕΓΜΑΤΑ ΥΠΟΛΟΓΙΣΤΩΝ Λόγο της κοινής μνήμης που μοιράζονται όλοι οι επεξεργαστές, η ανταλλαγή δεδομένων μεταξύ των νημάτων που εκτελούνται σε διαφορετικούς επεξεργαστές γίνεται πολύ γρήγορα. Όμως τόσο ο σωστός συγχρονισμός για την πρόσβαση στην κοινή μνήμη όσο και η τιμή των συγκεκριμένων μηχανών αποτελούν μειονεκτήματα αυτής της αρχιτεκτονικής. Τέλος θα πρέπει να σημειωθεί οτι στην αρχιτεκτονική κοινής μνήμης δεν υπάρχει μεγάλη δυνατότητα για επεκτασιμότητα καθώς η αύξηση των επεξεργαστών οδηγεί σε αύξηση της κίνησης στο κανάλι διασύνδεσης μνήμης και επεξεργαστών. Όπως και στις αρχιτεκτονικές κοινής μνήμης, έτσι και στις αρχιτεκτονικές κατανεμημένης μνήμης, παρατηρούμε αρκετές διαφοροποιήσεις στις μηχανές που υλοποιούν αυτή την αρχιτεκτονική, αλλά η γενική ιδέα είναι οτι ο κάθε επεξεργαστής έχει την δική του τοπική μνήμη και δεν υπάρχει η έννοια της γενικής μνήμης. Ο κάθε επεξεργαστής επηρεάζει μόνο την δική του μνήμη και δεν μπορεί να διαβάσει ή να γράψει σε μνήμη κάποιου άλλου επεξεργαστή. Σε περίπτωση που κάποιος θέλει δεδομένα από άλλον επεξεργαστή θα πρέπει να σταλούν μέσω του δικτύου. Και εδώ ο προγραμματιστής είναι υπεύθυνος για τον συγχρονισμό των επεξεργαστών, δηλαδή πότε θα στείλει ένας επεξεργαστής δεδομένα και ποια θα είναι αυτά. Κάθε επεξεργαστής λαμβάνει ένα αντίγραφο του προγράμματος και το εκτελεί χωρίς να έχει τίποτα κοινό με κάποιον άλλον επεξεργαστή. Ένα πρόβλημα όμως που έχουμε εδώ είναι η καθυστέρηση που εισάγεται από το δίκτυο διασύνδεσης κατά την ανταλλαγή μηνυμάτων μεταξύ των επεξεργαστών. Εικόνα 1.1 Αρχιτεκτονική κατανεμημένης μνήμης[1] Στην αρχιτεκτονική αυτή δεν θα συναντήσουμε το πρόβλημα Cache Coherency, καθώς κάθε επεξεργαστής βλέπει μόνο την δική του μνήμη την οποία δεν επηρεάζει κανείς 12

25 ΚΕΦΑΛΑΙΟ 1 ΠΑΡΑΛΛΗΛΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΠΛΕΓΜΑΤΑ ΥΠΟΛΟΓΙΣΤΩΝ άλλος, όμως δεν είναι εύκολο να υλοποιηθούν γενικές δομές δεδομένων που θα τις βλέπουν όλοι οι επεξεργαστές. Υπάρχει η δυνατότητα της επεκτασιμότητας, προσθέτοντας καινούργιους επεξεργαστές χωρίς να δημιουργηθεί κάποιο πρόβλημα ενώ μπορεί να υλοποιηθεί με κοινούς υπολογιστές γεγονός που σημαίνει οτι δεν έχουμε μεγάλο κόστος. Τέλος ένα μειονέκτημα και εδώ παραμένει ο συγχρονισμός των διεργασιών που εκτελούνται σε διαφορετικούς επεξεργαστές καθώς ο προγραμματιστής είναι υπεύθυνος για αυτόν. ΠΑΡΑΛΛΗΛΑ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΑ ΜΟΝΤΕΛΑ Ένα προγραμματιστικό μοντέλο είναι ο τρόπος με τον οποίο ένας προγραμματιστής αντιλαμβάνεται την αρχιτεκτονική του υπολογιστή, προκειμένου να δημιουργήσει κάποιο πρόγραμμα σε αυτόν. Όπως σημειώνεται στο [12], με βάση και τις προηγούμενες κατηγοριοποιήσεις των αρχιτεκτονικών των επεξεργαστών τα προγραμματιστικά μοντέλα χωρίζονται σε παραλληλισμός δεδομένων : Υπάρχουν Ν επεξεργαστές οι οποίοι εκτελούν την ίδια εντολή πάνω σε διαφορετικά δεδομένα. Σε αυτή την περίπτωση είναι αναγκαία η χρήση δομών που διαμοιράζουν τα δεδομένα στους επεξεργαστές. Αυτό το προγραμματιστικό μοντέλο ταιριάζει με την αρχιτεκτονική τύπου SIMD. παραλληλισμός ελέγχου : έχουμε Ν επεξεργαστές καθένας από τους οποίους εκτελεί διαφορετικές εντολές με διαφορετικά δεδομένα. Το μοντέλο αυτό ταιριάζει με τη αρχιτεκτονική τύπου MIMD Η αρχιτεκτονική τύπου MIMD, όπως είδαμε και παραπάνω χωρίζεται σε δύο κατηγορίες αυτή της κοινής μνήμης και αυτή της κατανεμημένης μνήμης. Έτσι λοιπόν αντίστοιχα έχουμε δυο προγραμματιστικά μοντέλα για τους δυο αυτούς τύπους μοντέλο κοινού χώρου διευθύνσεων : ο προγραμματιστής βλέπει το πρόγραμμα σαν μια συλλογή νημάτων τα οποία προσπελαύνουν μια συλλογή από κοινές (καθολικές) μεταβλητές. Ο προγραμματιστής είναι υποχρεωμένος να προσέξει τις αλλαγές των τιμών των μεταβλητών και γι αυτό πρέπει να δημιουργηθούν δομές 13

26 ΚΕΦΑΛΑΙΟ 1 ΠΑΡΑΛΛΗΛΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΠΛΕΓΜΑΤΑ ΥΠΟΛΟΓΙΣΤΩΝ οι οποίες να αποτρέπουν την ταυτόχρονη προσπέλαση κοινών μεταβλητών. Ένας τρόπος είναι η χρήση σηματοφόρους (semaphores). μοντέλο μεταβίβασης μηνυμάτων : το πρόγραμμα είναι μια συλλογή από αυτόνομες διεργασίες οι οποίες δεν έχουν καμία κοινή μεταβλητή και έχουν την δυνατότητα να επικοινωνούν μεταξύ τους ανταλλάσσοντας μηνύματα. Με αυτό το προγραμματιστικό μοντέλο θα ασχοληθούμε και στην υλοποίηση της διπλωματικής, οπότε στο επόμενο κεφάλαιο θα αναφερθούμε ξανά σε αυτό. Πέραν όμως από το μοντέλο προγραμματισμού, ο προγραμματιστής θα πρέπει να δώσει μεγάλη προσοχή τόσο στην διαμοίραση των εργασιών, με σκοπό να πετύχει λίγες επικοινωνίες και μοιρασμένο φόρτο εργασίας ανάμεσα στους επεξεργαστές, όσο και στον συντονισμό και την συνεργασία, ώστε να υπάρχουν τα σωστά δεδομένα την κατάλληλη στιγμή σε όλους τους επεξεργαστές. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΠΑΡΑΛΛΗΛΩΝ ΕΠΕΞΕΡΓΑΣΤΩΝ Υπάρχουν διάφοροι τρόποι με τους οποίους μπορεί κάποιος να δουλέψει έτσι ώστε να δημιουργήσει μια εφαρμογή, η οποία θα εκτελείται παράλληλα σε περισσότερους από έναν επεξεργαστές. Αυτό μπορεί να μην απαιτεί καν την γνώση κάποιου τρόπου παράλληλου προγραμματισμού. Έτσι αν θέλουμε να δημιουργήσουμε εφαρμογές που θα εκτελούνται παράλληλα έχουμε τους εξής τρόπους Έμμεσος παράλληλος προγραμματισμός Εδώ γίνεται χρήση κατάλληλου compiler, ο οποίος αναλαμβάνει να βρει τα κομμάτια του προγράμματος που δεν έχουν κάποια εξάρτηση μεταξύ τους και μπορούν να εκτελεστούν ταυτόχρονα. Ο προγραμματιστής γράφει την εφαρμογή του σε μια οικεία σειριακή γλώσσα και τα υπόλοιπα γίνονται από τον compiler. Όμως αυτός ο τρόπος παράλληλου προγραμματισμού δεν είναι αποδοτικός, τουλάχιστον προς το παρόν. Παραλληλοποίηση βρόχων επανάληψης Είναι γνωστό οτι ένας από τους παράγοντες που κάνουν μια εφαρμογή να 14

27 ΚΕΦΑΛΑΙΟ 1 ΠΑΡΑΛΛΗΛΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΠΛΕΓΜΑΤΑ ΥΠΟΛΟΓΙΣΤΩΝ καθυστερεί είναι αυτός των βρόχων επανάληψης, ειδικά στην περίπτωση που έχουμε πολλούς βρόχους τον έναν μέσα στον άλλον. Σε αυτή την περίπτωση η ταχύτητα του προγράμματος εξαρτάται από την είσοδό μας ενώ κάθε βρόχος που βρίσκεται μέσα σε έναν άλλο κάνει την καθυστέρηση πολλαπλάσια (θα δούμε περισσότερα σε λίγο). Έτσι λοιπόν θα ήταν χρήσιμο, αν προσπαθούσαμε να μειώσουμε τις επαναλήψεις του βρόχου επανάληψης, μοιράζοντας αυτές σε δυο ή περισσότερους επεξεργαστές. Φυσικά κάτι τέτοιο δεν είναι απλό καθώς απαιτεί την ανάλυση των πράξεων που γίνονται εντός του βρόχου και αν υπάρχουν εξαρτήσεις από προηγούμενα βήματα. Αν κάτι τέτοιο επιτευχθεί όμως θα βελτιώσει την απόδοση της εφαρμογής αισθητά. Άμεσος παράλληλος προγραμματισμός Εδώ ο προγραμματιστής τα κάνει όλα από την αρχή. Αναλύει το πρόβλημα βλέπει που υπάρχουν και που δεν υπάρχουν εξαρτήσεις, και ανάλογα με το σύστημα που θα φιλοξενήσει την εφαρμογή, γίνεται η ανάπτυξη της εφαρμογής. Θα πρέπει να τονιστεί εδώ οτι υπάρχει μεγάλη εξάρτηση από την αρχιτεκτονική του συστήματος που θα φιλοξενήσει την εφαρμογή και δεν είναι εύκολη η μεταφορά του παράλληλου προγράμματος σε άλλη μηχανή. ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΑΡΑΛΛΗΛΟΥΣ ΥΠΟΛΟΓΙΣΤΕΣ Η βασική μεθοδολογία για να δημιουργήσουμε μια εφαρμογή η οποία θα εκτελείται παράλληλα σε μια μηχανή με πολλούς επεξεργαστές περιλαμβάνει δύο βασικά βήματα: 1. διαχωρισμός του προγράμματος σε διεργασίες 1.1. διάσπαση σε εργασίες 1.2. ανάθεση εργασιών σε διεργασίες 2. τοποθέτηση των διεργασιών στους επεξεργαστές Σε αυτό το σημείο είναι χρήσιμο να ορίσουμε τις έννοιες διεργασία και εργασία όπως αυτές ορίζονται στο [12]. Εργασία είναι γενικά κάποια τμήματα του υπολογισμού τα οποία μπορούν να εκτελεστούν παράλληλα ταυτόχρονα. Μια εργασία εκτελείται εξ' ολοκλήρου από έναν επεξεργαστής. Διεργασία είναι μια συλλογή από εργασίες και 15

28 ΚΕΦΑΛΑΙΟ 1 ΠΑΡΑΛΛΗΛΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΠΛΕΓΜΑΤΑ ΥΠΟΛΟΓΙΣΤΩΝ εκτελείται από έναν και μόνο επεξεργαστή. Μια διεργασία μπορεί να είναι μια διαδικασία του σειριακού κώδικα ή, πιο συνηθισμένα, μια κατά περίπτωση επιλογή από σχετιζόμενες εργασίες (πχ εργάζονται πάνω στις ίδιες μεταβλητές). Το πρώτο βήμα είναι κατά μεγάλο ποσοστό ανεξάρτητο από την αρχιτεκτονική του συστήματος ενώ το δεύτερο εξαρτάται σε μεγάλο βαθμό από αυτήν. Για την διάσπαση του προβλήματος σε εργασίες κάνουμε χρήση του γράφου εξάρτησης δεδομένων (data dependency graph), με βάση τον οποίο μπορούμε να βρούμε τα κομμάτια του προβλήματος που μπορούν να εκτελεστούν ταυτόχρονα καθώς δεν έχουν εξαρτήσεις μεταξύ τους. Επίσης είναι χρήσιμο να κάνουμε και την διαδικασία του profiling προκειμένου να δούμε ποια κομμάτια του κώδικα, ποιες συναρτήσεις, απαιτούν περισσότερο χρόνο για να εκτελεστούν και αξίζει να ασχοληθούμε προκειμένου να μειώσουμε τον χρόνο εκτέλεσης της σειριακής εφαρμογής. Όμως και η διαδικασία της ανάθεσης σε επεξεργαστές δεν είναι απλή υπόθεση. Πρέπει να λάβουμε υπ' όψιν μας 1. οι επεξεργαστές να έχουν ίσο όγκο εργασίας προκειμένου να γίνει πλήρη εκμετάλλευση της παρουσίας των επεξεργαστών. Διαφορετικά, αν κάποιος επεξεργαστής έχει παραπάνω φόρτο εργασίας θα αυξήσει τον χρόνο εκτέλεσης (φυσικά αν αυτό είναι εφικτό). 2. οι επικοινωνίες μεταξύ των επεξεργαστών θα πρέπει να είναι όσο το δυνατόν λιγότερες καθώς είναι αυτές που προσθέτουν καθυστέρηση σε ένα τέτοιο μοντέλο. Λαμβάνοντας αυτά υπ' όψιν μπορούμε να κάνουμε την ανάθεση σε δυο βασικά βήματα, όπως αυτά παρουσιάζονται στο [12], αρχικά την ενορχήστρωση, δηλαδή τον τρόπο επικοινωνίας και συντονισμού των διεργασιών, και μετά την αντιστοίχιση, όπου καθορίζεται ποιος επεξεργαστής θα εκτελέσει ποια διεργασία. Το δεύτερο μπορεί να γίνει είτε με δυναμικό τρόπο, με το λειτουργικό να αναλαμβάνει την ανάθεση, είτε με στατικό τρόπο, με την αντιστοίχιση να γίνεται από τον προγραμματιστή και να μην αλλάζει κατά την εκτέλεση της εφαρμογής. [1] to Parallel Computing.htm 16

29 ΚΕΦΑΛΑΙΟ 1 ΠΑΡΑΛΛΗΛΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΠΛΕΓΜΑΤΑ ΥΠΟΛΟΓΙΣΤΩΝ Στην συνέχεια παρουσιάζονται 6 βασικές τεχνικές λογικές που χρησιμοποιούνται στην ανάπτυξη παράλληλων αλγορίθμων εφαρμογών [1]. Οι τεχνικές που θα παρουσιαστούν δεν είναι πάντα ανεξάρτητες από την αρχιτεκτονική της μηχανής στην οποία θα εκτελεστεί η εφαρμογή που σχεδιάζουμε. 1. Παραλληλισμός Δεδομένων (Data Parallelism) Με αυτή την τεχνική ένας μεγάλος αριθμός δεδομένων υπόκεινται στην ίδια ή παρόμοια διαδικασία. Σε έναν απλό σειριακό υπολογιστή θα εκτελούσαμε την διαδικασία σε όλα τα δεδομένα σε έναν επεξεργαστή ενώ στην περίπτωση των παράλληλων υπολογιστών σπάμε τα δεδομένα σε περισσότερους επεξεργαστές και επομένως ο κάθε ένας εκτελεί λιγότερα βήματα υπολογισμών. 2. Κατάτμηση Δεδομένων (Data Partitioning) Αυτή η τεχνική είναι κατάλληλη για τα συστήματα κατανεμημένης μνήμης καθώς σε αυτή την τεχνική ο χώρος αποθήκευσης είναι φυσικά διαχωρισμένος σε παρακείμενες περιοχές. Κάθε μια από τις περιοχές αυτές υφίσταται επεξεργασία από διαφορετικό επεξεργαστή. 3. Ασύγχρονος Αλγόριθμος (Asynchronous Algorithm) Σε αυτή την περίπτωση έχουμε διεργασίες οι οποίες εκτελούνται ανεξάρτητα μεταξύ τους και δεν απαιτείται κάποιου είδους επικοινωνία ή συγχρονισμός. Είναι τεχνική που χρησιμοποιείται τόσο σε συστήματα κατανεμημένης μνήμης όσο και συστήματα διαμοιραζόμενης μνήμης και έχουν σαν αποτέλεσμα μεγάλες επιταχύνσεις. 4. Σύγχρονη Επανάληψη (Synchronous Iteration) Στη σύγχρονη επανάληψη έχουμε την χρήση του ίδιου επαναληπτικού αλγορίθμου σε διαφορετικό τμήμα δεδομένων ενώ στο τέλος κάθε επανάληψης απαιτείται ο συγχρονισμός μεταξύ των επεξεργαστών καθώς τα δεδομένα που επεξεργάζονται χρησιμοποιούνται στην επόμενη επανάληψη. Γι αυτό δεν είναι δυνατόν να ξεκινήσει μια επανάληψη σε κάποιον επεξεργαστή αν δεν έχουν 17

30 ΚΕΦΑΛΑΙΟ 1 ΠΑΡΑΛΛΗΛΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΠΛΕΓΜΑΤΑ ΥΠΟΛΟΓΙΣΤΩΝ τελειώσει όλοι οι υπόλοιποι επεξεργαστές. 5. Πολλαπλοί Εργαζόμενοι (Multiple Workers) Σε αυτή την τεχνική υπάρχει μια κεντρική δεξαμενή παρόμοιων υπολογιστικών εργασιών, από όπου ένας μεγάλος αριθμός διεργασιών ανακτούν εργασίες. Οι διεργασίες αυτές μπορεί να προσθέσουν νέες εργασίες στην δεξαμενή. Η υπολογιστή διαδικασία τερματίζει όταν η δεξαμενή αδειάζει εντελώς. Η τεχνική αυτή είναι χρήσιμη σε προβλήματα εκθετικής πολλαπλότητας όπως η αναζήτηση σε δένδρο ή γράφημα, όπου ένας μεγάλος αριθμός από μικρές υπολογιστικές εργασίες παράγεται δυναμικά ως αποτέλεσμα της συνολικής υπολογιστικής διαδικασίας. 6. Υπολογιστική Διαδικασία Διασωλήνωσης (Pipeline Computation) Η συγκεκριμένη τεχνική ανάπτυξης εφαρμογών είναι κατάλληλη για συστήματα κατανεμημένης μνήμης καθώς εδώ έχουμε την οργάνωση των διεργασιών σε φυσικές δομές όπως αυτή του δακτυλίου ή του δισδιάστατου πλέγματος. Τα δεδομένα μετακινούνται μέσω αυτής της δομής. ΠΛΕΓΜΑ ΥΠΟΛΟΓΙΣΤΩΝ Με τον όρο πλέγμα υπολογιστών (grid computer) εννοούμε την συλλογή από υπολογιστικούς πόρους σε διάφορες τοποθεσίες (γεωγραφικά), ώστε να πετύχουν έναν συγκεκριμένο σκοπό. Οι υπολογιστές μπορεί να βρίσκονται σε διαφορετικές γεωγραφικές τοποθεσίες και συνδέονται μεταξύ τους μέσω κάποιου δικτύου. Με αυτό τον τρόπο είναι δυνατόν να διαμοιραστούν την υπολογιστική ισχύ, τις αποθηκευτικές συσκευές κ.α. Ο χρήστης δεν απαιτείται να γνωρίζει το που βρίσκονται οι πόροι που χρησιμοποιεί καθώς επίσης τις τεχνολογίες ή τα λειτουργικά συστήματα που χρησιμοποιούνται. Δεν τις αντιλαμβάνεται σαν ξεχωριστές μηχανές, αλλά τις βλέπει σαν μια ενιαία υπερμηχανή. Για να γίνει αντιληπτό το πλέγμα υπολογιστών μπορούμε να το θεωρήσουμε σαν το δίκτυο διανομής ηλεκτρική ενέργειας, στο οποίο ο κάθε χρήστης έχει πρόσβαση σε αυτό μέσω των πριζών χωρίς να τον απασχολεί το πως ή το που αυτό [1] 18

31 ΚΕΦΑΛΑΙΟ 1 δημιουργείται. ΠΑΡΑΛΛΗΛΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΠΛΕΓΜΑΤΑ ΥΠΟΛΟΓΙΣΤΩΝ Συνήθως χρησιμοποιούνται προκειμένου να επιλυθούν μεγάλα προβλήματα. Τα πλέγματα υπολογιστών, ανάλογα με τον σκοπό που θέλουμε να επιτελέσουν, μπορούν να χωριστούν σε computational grid, όπου προστίθενται πόροι με σκοπό την μεγαλύτερη υπολογιστική ισχύ, και σε data grids, όπου εστιάζουν στην αποθήκευση δεδομένων[13]. Μια άλλη ταξινόμηση των πλεγμάτων υπολογιστών, με βάση την τοπολογία, είναι η ακόλουθη, [13] Cluster Grids (intragrid) είναι μια ομάδα υπολογιστών που συνεργάζονται και έχουν ένα ενιαίο σημείο πρόσβασης για τους χρήστες σε ένα έργο ή υπηρεσία. Είναι η πιο απλή μορφή. Campus Grids (extragrid) επιτρέπει τμήματα οργανισμών να μοιράζονται τους πόρους τους, ενώ μπορούν να χρησιμοποιηθούν για μια πληθώρα εργασιών. Global Grids (intergrid) είναι συλλογή Campus Grids, που δίνουν την δυνατότητα δημιουργίας μεγάλων εικονικών συστημάτων. Οι χρήστες μπορούν να έχουν πρόσβαση σε πόρους που υπερβαίνουν αυτούς που έχουν σε τοπικό επίπεδο. Στην επόμενη εικόνα βλέπουμε τις τρεις παραπάνω κατηγορίες του πλέγματος [1] 19

32 ΚΕΦΑΛΑΙΟ 1 ΠΑΡΑΛΛΗΛΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΠΛΕΓΜΑΤΑ ΥΠΟΛΟΓΙΣΤΩΝ Εικόνα 1.11 Τοπολογική οργάνωση του πλέγματος υπολογιστών[1] Για να οργανωθούν όλοι αυτοί οι υπολογιστές απαιτείται η ύπαρξη ενός κεντρικού διακομιστή (server), ο οποίος ονομάζεται control node και οργανώνει την ανάθεση των εργασιών, καταγράφει την κίνηση στο δίκτυο ενώ γνωρίζει τους διαθέσιμους πόρους. Εδώ θα πρέπει να πούμε τον τρόπο με τον οποίο δομείται μια εφαρμογή. Όπως φαίνεται και στο επόμενο σχήμα, μία εφαρμογή αποτελείται από πολλές εργασίες (jobs), οι οποίες με την σειρά τους διασπώνται σε υποεργασίες (subjobs). [1] 2

33 ΚΕΦΑΛΑΙΟ 1 ΠΑΡΑΛΛΗΛΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΠΛΕΓΜΑΤΑ ΥΠΟΛΟΓΙΣΤΩΝ Εικόνα 1.12 Τρόπος διάσπασης εφαρμογών Όταν αναθέτουμε κάποια δουλεία στο πλέγμα, τότε ο διακομιστή, την χωρίζει σε υποεργασίες και τις αναθέτει σε διαθέσιμους υπολογιστικούς πόρους. Όταν όλες οι υποεργασίες ολοκληρωθούν, τότε ο διακομιστής συγκεντρώνει τα αποτελέσματα και περνάει στην επόμενη εργασία. Σε περίπτωση που κάποια από τις εργασίες αποτύχει, τότε την αναθέτει εκ νέου σε υπολογιστή. Η ανάθεση γίνεται με βάση τους διαθέσιμους πόρους και τον φόρτο εργασίας. Εικόνα 1.13 Η δομή του πλέγματος υπολογιστών[1] Σε επίπεδο λογισμικού, τα πλέγματα υπολογιστών έχουν μια σειρά από προγράμματα, τα οποία βοηθούν στην διαχείριση των πόρων. Τα βασικά στοιχεία είναι ένα λογισμικό το 21

34 ΚΕΦΑΛΑΙΟ 1 ΠΑΡΑΛΛΗΛΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΠΛΕΓΜΑΤΑ ΥΠΟΛΟΓΙΣΤΩΝ οποίο διαχειρίζεται τους πόρους του συστήματος, γνωρίζοντας ποιοι κόμβοι είναι διαθέσιμοι και αν όχι πόσος είναι ο φόρτος εργασίας τους. Με αυτό τον τρόπο δίνεται η δυνατότητα να ανατίθενται εργασίες σε κόμβους που έχουν την λιγότερη δουλειά. Ένα δεύτερο λογισμικό που διαθέτουν είναι αυτό της διαχείρισης του πλέγματος. Το λογισμικό αυτό γνωρίζει την τοπολογία και την ιεραρχία του συστήματος και βοηθά στην ανάθεση των εργασιών. Τα λογισμικά αυτά βρίσκονται στον κεντρικό κόμβο που διαχειρίζεται το σύστημα. Σε κάθε μία μηχανή που προσφέρει πόρους, θα πρέπει επίσης να υπάρχει κατάλληλο λογισμικό για την αποδοχή εργασιών από τον κεντρικό κόμβο, καθώς επίσης και λογισμικό για την εισαγωγή της μηχανής στο σύστημα του πλέγματος. 22

35 ΚΕΦΑΛΑΙΟ 1 ΠΑΡΑΛΛΗΛΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΠΛΕΓΜΑΤΑ ΥΠΟΛΟΓΙΣΤΩΝ [1] 23

36 ΚΕΦΑΛΑΙΟ 2 : ΜΕΤΡΑ ΑΠΟΔΟΣΗΣ ΠΑΡΑΛΛΗΛΩΝ ΑΛΓΟΡΙΘΜΩΝ ΣΚΟΠΟΣ Σκοπός του κεφαλαίου αυτού είναι να παρουσιαστούν μέτρα σύγκρισης των παράλληλων αλγορίθμων με τον αντίστοιχο σειριακό καθώς επίσης πως επηρεάζεται η ταχύτητα αυτών από την εισαγωγή περισσότερων επεξεργαστών. παρουσιαστούν οι νόμοι του Amdahl και του Gustafson. Τέλος θα

37

38 ΚΕΦΑΛΑΙΟ 2 ΜΕΤΡΑ ΑΠΟΔΟΣΗΣ ΠΑΡΑΛΛΗΛΩΝ ΑΛΓΟΡΙΘΜΩΝ ΑΝΑΛΥΣΗ ΣΕΙΡΙΑΚΩΝ ΑΛΓΟΡΙΘΜΩΝ Σημαντικό ρόλο στην δημιουργία μιας παράλληλης εφαρμογής από μία σειριακή παίζει η ανάλυση των επιδόσεων της, προκειμένου να δούμε ποιο κομμάτι της σειριακής εφαρμογής απαιτεί χρόνο για την εκτέλεσή του και αξίζει την παραλληλοποιησή του καθώς κάτι τέτοιο θα είχε σημαντική επίδραση στον χρόνο εκτέλεσης της εφαρμογής. Είναι προφανές οτι αν ενεργούσαμε πάνω σε ένα κομμάτι το οποίο δεν καθυστερούσε σημαντικά την εκτέλεση της εφαρμογής, δεν θα βλέπαμε σημαντικές βελτιώσεις στον χρόνο εκτέλεσης της. Στην συνέχεια παρουσιάζονται οι τρόποι ανάλυσης ενός προγράμματος καθώς και τα αποτελέσματα από την ανάλυση της εφαρμογής που πρόκειται να υλοποιήσουμε παράλληλα. Ως ανάλυση προγράμματος[1] (Program Analysis) λοιπόν, ορίζεται μια αυτοματοποιημένη διαδικασία με την οποία αναλύουμε και μελετάμε την συμπεριφορά ενός προγράμματος προκειμένου να το βελτιώσουμε. Υπάρχουν δύο βασικές κατηγορίες ανάλυσης με βάση τον τρόπο με τον οποίο μελετάμε το πρόγραμμα, την στατική ανάλυση (Static Program Analysis) και την δυναμική ανάλυση (Dynamic Program Analysis). Στατική ανάλυση ενός προγράμματος [2] είναι η διαδικασία ανάλυσής του χωρίς να πραγματοποιήσουμε την εκτέλεσή του. Η ανάλυση συνήθως βασίζεται σε μαθηματικά μοντέλα και γι αυτό είναι αδύνατον να πει με σιγουριά οτι δεν θα υπάρξουν προβλήματα κατά τον χρόνο εκτέλεσης. Τεχνικές που χρησιμοποιούνται σε αυτό τον τρόπο ανάλυσης είναι το Program Comprehension, που περιλαμβάνει τρόπους συντήρησης ενός κώδικα, το Code Review, που είναι ο συστηματικός έλεγχος ενός πηγαίου κώδικα με σκοπό την διόρθωσή του και το Control Flow Analysis, όπου γίνεται ανάλυση όλων των πιθανών διαδρομών του κώδικα ενός προγράμματος κατά την εκτέλεσή του. Σε αντίθεση με την στατική ανάλυση, η δυναμική ανάλυση [3] ενός προγράμματος είναι η ανάλυση του κατά την εκτέλεσή. Για να είναι αποδοτική η μέθοδος αυτή θα πρέπει να εφαρμοστούν αρκετές διαφορετικές είσοδοι και να παρατηρηθούν ενδιαφέρουσες συμπεριφορές. Μια βασική τεχνική της μεθόδου αυτής είναι το profiling ή αλλιώς [1] [2] [3] 26

39 ΚΕΦΑΛΑΙΟ 2 ΜΕΤΡΑ ΑΠΟΔΟΣΗΣ ΠΑΡΑΛΛΗΛΩΝ ΑΛΓΟΡΙΘΜΩΝ performance analysis. Με την χρήση της συγκεκριμένης μεθόδου ανάλυσης είναι δυνατόν να μετρηθούν[1]: μνήμη χρονική πολυπλοκότητα του προγράμματος συχνότητα κλήσης συναρτήσεων διάρκεια κλήσης συναρτήσεων Το πρόγραμμα που υλοποιεί την τεχνική αυτή ονομάζεται profiler και μπορεί να είναι ενσωματωμένος σε έναν compiler. Ανάλογα με τα αποτελέσματα του profiler έχουμε δύο τύπους Flat Profiler O Flat profiler, εξάγει ως αποτέλεσμα της ανάλυσης του, το συνολικό χρόνο που χρειάστηκε το λογισμικό για να εκτελέσει την κάθε συνάρτηση του κώδικα του προγράμματος. Call-graph Profiler Ο Call-graph Profiler μας δείχνει, στα αποτελέσματά του, το χρόνο που δαπανήθηκε στην εκτέλεση του κάθε προγράμματος, από ποια συνάρτηση κλήθηκε και πόσες φορές καθώς επίσης και τον χρόνο εκτέλεσης της κάθε συνάρτησης που κλήθηκε από την συνάρτηση που εξετάζουμε. Στο δεύτερο παράρτημα βλέπουμε τα αποτελέσματα της ανάλυσης της εφαρμογής που θέλουμε να παραλληλοποιήσουμε και το λόγο για τον οποίο θέτουμε σαν βασικό μας στόχο την μείωση του χρόνου της συνάρτησης που υλοποιεί την συνάρτηση Cholesky. ΣΥΓΚΡΙΣΗ ΣΕΙΡΙΑΚΟΥ ΚΑΙ ΠΑΡΑΛΛΗΛΟΥ ΑΛΓΟΡΙΘΜΟΥ Ένα χρήσιμο μέτρο για την αξιολόγηση ενός παράλληλου αλγορίθμου είναι η σύγκρισή του με τον αντίστοιχο σειριακό αλγόριθμο. Το μέτρο αυτό είναι η επιτάχυνση (speedup) [1] 27

40 ΚΕΦΑΛΑΙΟ 2 ΜΕΤΡΑ ΑΠΟΔΟΣΗΣ ΠΑΡΑΛΛΗΛΩΝ ΑΛΓΟΡΙΘΜΩΝ Επιτάχυνση, σύμφωνα με τα [7], [12] και [1], ορίζεται ως ο λόγος του χρόνου εκτέλεσης του καλύτερου σειριακού αλγορίθμου προς τον χρόνο εκτέλεσης του αντίστοιχου παράλληλου αλγορίθμου και εκφράζεται μαθηματικά με τον ακόλουθο τύπο όπου S n= T1 (2.1) Tn T1 είναι ο χρόνος εκτέλεσης του σειριακού αλγορίθμου και Tn ο χρόνος εκτέλεσης του παράλληλου αλγορίθμου. Ο χρόνος εκτέλεσης ενός παράλληλου αλγορίθμου προσδιορίζεται από τη στιγμή που ένας επεξεργαστής αρχίζει να κάνει υπολογισμούς έως ότου ο τελευταίος επεξεργαστής ολοκληρώσει την εργασία του. Με τον συγκεκριμένο μέτρο μπορούμε να συγκρίνουμε διάφορους τρόπους παράλληλης υλοποίησης με τον ίδιο σειριακό αλγόριθμο και να δούμε ποιος είναι ο καλύτερος. ΑΠΟΔΟΤΙΚΟΤΗΤΑ ΚΑΙ ΚΟΣΤΟΣ Η αποδοτικότητα, όπως ορίζεται στο [12], σχετίζει το όφελος στην ταχύτητα και τον αριθμό των επεξεργαστών που χρειάζονται για να το επιτύχουμε. Ορίζεται από τον τύπο : e n= Sn T1 (2.2) = n n T n όπου T 1 και T n οι χρόνοι που παρουσιάστηκαν στην προηγούμενη παράγραφο. Είναι προφανές από την παραπάνω σχέση οτι αν S n n τότε προκύπτει οτι e n 1. Στην ιδανική περίπτωση, όπου η απόδοση είναι στο 1%, τότε όλοι οι επεξεργαστές είναι όντως απαραίτητοι προκειμένου να επιτευχθεί η επιτάχυνση S n. Το κόστος, που παρουσιάζεται στο [12], είναι ένα άλλο μέγεθος το οποίο μας δείχνει κατά πόσο οι επεξεργαστές χρησιμοποιήθηκαν αποδοτικά και ορίζεται από την σχέση : c n=n T n (2.3) και το μέγεθος αυτό μας δείχνει πόση ώρα χρησιμοποιήθηκαν οι επεξεργαστές [1] to Parallel Computing.htm 28

41 ΚΕΦΑΛΑΙΟ 2 ΜΕΤΡΑ ΑΠΟΔΟΣΗΣ ΠΑΡΑΛΛΗΛΩΝ ΑΛΓΟΡΙΘΜΩΝ αθροιστικά. Αν ένας αλγόριθμος εκτελέστηκε παράλληλα σε συνολικό χρόνο T n, τότε ο κάθε επεξεργαστής ήταν δεσμευμένος για το διάστημα αυτό ανεξάρτητα από το αν εργαζόταν σε όλο αυτό το διάστημα. Από την παραπάνω σχέση προκύπτει εύκολα οτι το σειριακό κόστος θα είναι ίσο με T 1 θέτοντας όπου n το 1 και σαν χρόνο εκτέλεσης τον χρόνο του σειριακού αλγορίθμου T 1. Σε αυτό το σημείο θα πρέπει να τονιστεί οτι η μείωση του αριθμού των επεξεργαστών δεν είναι απαραίτητο να μειώνει την αποδοτικότητα και δεν είναι απαραίτητο να αυξάνει το κόστος του αλγορίθμου. ΝΟΜΟΣ ΤΟΥ AMDAHL O νόμος του Amdahl, βασιζόμενοι στα [7], [12], [1] και [2], χρησιμοποιείται προκειμένου να υπολογιστεί το μέγιστο αναμενόμενο κέρδος όταν κάποιο κομμάτι του αλγορίθμου βελτιωθεί και χρησιμοποιείται στον παράλληλο προγραμματισμό προκειμένου να υπολογιστεί η θεωρητικά μεγαλύτερη επιτάχυνση. Έστω οτι έχουμε στην διάθεσή μας n επεξεργαστές και το πρόγραμμά μας έχει τα εξής χαρακτηριστικά ένα ποσοστό των εντολών, f, μπορεί να εκτελεστεί μόνο σειριακά το υπόλοιπο ποσοστό, 1-f, είναι εντελώς παραλληλοποιήσιμο Με βάση τα προηγούμενα δύο χαρακτηριστικά, ο χρόνος που απαιτείται για την εκτέλεση των σειριακών εντολών είναι f T 1, ενώ για τις υπόλοιπες εντολές με τους n διαθέσιμους επεξεργαστές θα χρειαστεί χρόνος (1 f ) T 1. Επομένως, με βάση τους n προηγούμενους δυο χρόνους, ο συνολικός χρόνος που θα χρειαστούμε για την εκτέλεση του αλγορίθμου θα είναι T n= f T 1+ (1 f ) T 1 (2.4) n [1] to Parallel Computing.htm [2] 29

42 ΚΕΦΑΛΑΙΟ 2 ΜΕΤΡΑ ΑΠΟΔΟΣΗΣ ΠΑΡΑΛΛΗΛΩΝ ΑΛΓΟΡΙΘΜΩΝ Επομένως, χρησιμοποιώντας τους δύο τύπους που αναφέρθηκαν στις δυο προηγούμενες παραγράφους για την επιτάχυνση και την αποδοτικότητα έχουμε S n= T1 n 1 (2.5) = T n n f +(1 f ) f e n= 1 (2.5) n f +(1 f ) οι δυο αυτές σχέσεις αποτελούν τον νόμο του Amdahl. O νόμος του Amdahl αποτελεί τον πιο απογοητευτικό νόμο για την παράλληλη επεξεργασία και αυτό διότι, καθώς ο αριθμός των επεξεργαστών μεγαλώνει και δεδομένου οτι το πρόβλημα παραμένει το ίδιο, η αποδοτικότητα πέφτει κατά πολύ. Αν όμως προσπαθήσουμε να λύσουμε το πρόβλημα με μεγαλύτερο μέγεθος εισόδου, τότε η χρήση επιπλέον επεξεργαστών μπορεί να δικαιολογηθεί. Γενικά, το κομμάτι του σειριακού κώδικα είναι συνάρτηση της εισόδου N και αυτό μπορούμε να το γράψουμε ως f (N ). Με βάση αυτό οι δύο τύποι του νόμου του Amdahl γίνονται S n (N )= n (2.6) n f ( N )+(1 f (N )) e n (N )= 1 (2.7) n f ( N )+(1 f ( N )) Με την αύξηση του μεγέθους του προβλήματος, τα σειριακά βήματα δεν αυξάνονται πολύ και άρα το σειριακό κομμάτι του αλγορίθμου, Αυτό μεταφράζεται μαθηματικά ως καθώς το lim S n ( N )=n (2.8) N 3 f ( N ), μειώνεται σταθερά με το N. Ν τότε f ( N ) και άρα έχουμε

43 ΚΕΦΑΛΑΙΟ 2 ΜΕΤΡΑ ΑΠΟΔΟΣΗΣ ΠΑΡΑΛΛΗΛΩΝ ΑΛΓΟΡΙΘΜΩΝ lim en ( N )=1 (2.9) N Από τις παραπάνω δύο σχέσεις προκύπτει το συμπέρασμα οτι για κάθε διαθέσιμο αριθμό επεξεργαστών που μπορούμε να χρησιμοποιήσουμε, μπορούμε να βρούμε ένα μέγεθος εισόδου το οποίο μπορεί να επιτύχει οποιαδήποτε επιτάχυνση και αποδοτικότητα θέλουμε. Επομένως οι επιπλέον επεξεργαστές που διαθέτουμε μπορούν να γίνουν εκμεταλλεύσιμοι αρκεί να βρούμε το κατάλληλο μέγεθος εισόδου για να εκτελέσουμε το πρόβλημά μας. Αυτό το συμπέρασμα ισχύει με βάση την αρχική υπόθεση που κάναμε οτι δηλαδή η αύξηση του μεγέθους της εισόδου δεν αυξάνει τα αμιγώς σειριακά βήματα. Εικόνα Οι επιδράσεις του νόμου του Amdahl [1] [1] 31

44 ΚΕΦΑΛΑΙΟ 2 ΜΕΤΡΑ ΑΠΟΔΟΣΗΣ ΠΑΡΑΛΛΗΛΩΝ ΑΛΓΟΡΙΘΜΩΝ Εικόνα Επίδραση του σειριακού κομματιού του αλγορίθμου [1] Ο ΝΟΜΟΣ ΤΟΥ GUSTAFSON Ο νόμος του Amdahl φτάνει σε κάποια συμπεράσματα θεωρώντας όμως το μέγεθος του προβλήματος σταθερό. Τι γίνεται όμως όταν αυτό δεν μένει σταθερό αλλά αλλάζει. Στο τέλος της προηγούμενης παραγράφου κάναμε μια αναφορά σχετικά με το τι συμβαίνει όταν έχουμε αλλαγή στην είσοδο του προβλήματος. Εδώ θα αναφερθούμε στον νόμο του Gustafson, όπως παρουσιάζεται στα [7], [12], [1] και [2], δηλαδή στον τύπο της επιτάχυνσης έχοντας ως δεδομένο οτι η είσοδος του προβλήματος μπορεί να αλλάξει. Αν θεωρήσουμε λοιπόν οτι το κομμάτι του αλγορίθμου που εκτελείται αποκλειστικά σειριακά εξαρτάται από το μέγεθος της εισόδου, τότε το ποσοστό των εντολών που εκτελείται μόνο σειριακά είναι f ( N ), ενώ το ποσοστό των εντολών που εκτελείται παράλληλα είναι 1 f ( N ). Ο αλγόριθμος αυτός σε σειριακό υπολογιστή θα χρειαστεί χρόνο T 1 (N )= f ( N ) T n ( N )+(1 f ( N )) n T n ( N ) (2.1) [1] [2] to Parallel Computing.htm 32

45 ΚΕΦΑΛΑΙΟ 2 ΜΕΤΡΑ ΑΠΟΔΟΣΗΣ ΠΑΡΑΛΛΗΛΩΝ ΑΛΓΟΡΙΘΜΩΝ Από τον προηγούμενο τύπο παρατηρούμε οτι στον δεύτερο όρο του αθροίσματος μπαίνει ο παράγοντας n και επομένως η σειριακή υλοποίηση σε σχέση με την αντίστοιχη παράλληλη με n επεξεργαστές απαιτεί n περισσότερο χρόνο. Με βάση τον τύπο αυτό η επιτάχυνση προκύπτει S n (N )= f ( N )+(1 f ( N )) n=n (n 1) f ( N ) (2.11) Η σχέση αυτή αποκαλείται νόμος του Gustafson ή κλιμακώμενη επιτάχυνση (scaled speedup). Από την σχέση αυτή προκύπτει οτι αν ισχύει οτι καθώς το Ν τότε f ( N ), η επιτάχυνση τείνει στο ιδανικό, δηλαδή στο n. Επίσης μπορούμε να επιτύχουμε οποιαδήποτε επιτάχυνση και κατά συνέπεια οποιαδήποτε αποδοτικότητα ρυθμίζοντας κατάλληλα το f(n) μέσω του N. Επομένως αν αυξηθεί ο αριθμός των επεξεργαστών θα πρέπει να γίνει κλιμάκωση του μεγέθους της εισόδου N προκειμένου να επιτευχθεί η απαιτούμενη επιτάχυνση. 33

46 ΚΕΦΑΛΑΙΟ 3 : ΡΕΥΣΤΟΜΗΧΑΝΙΚΗ ΚΑΙ ΠΑΡΑΓΟΝΤΟΠΟΙΗΣΗ CHOLESKY ΣΚΟΠΟΣ Σκοπός του κεφαλαίου αυτού είναι να παρουσιαστεί το θεωρητικό υπόβαθρο της μεθόδου επίλυσης γραμμικών συστημάτων παραγοντοποίηση Cholesky, η οποία θα υλοποιηθεί στην διπλωματική εργασία, προκειμένου να γίνει κατανοητός ο τρόπος ανάπτυξής της. Επίσης θα περιγραφεί η σειριακή εφαρμογή που καλούμαστε να παραλληλοποιήσουμε.

47

48 ΚΕΦΑΛΑΙΟ 3 ΡΕΥΣΤΟΜΗΧΑΝΙΚΗ ΚΑΙ ΠΑΡΑΓΟΝΤΟΠΟΙΗΣΗ CHOLESKY ΕΦΑΡΜΟΓΗ ΡΕΥΣΤΟΜΗΧΑΝΙΚΗΣ Σε αυτό το σημείο θα παρουσιάσουμε την εφαρμογή που πρόκειται να παραλληλοποιήσουμε. Η ανάλυση που θα γίνει, δεν θα είναι σε θεωρητικό επίπεδο και επομένως δεν θα ασχοληθούμε με την φυσική πλευρά του ζητήματος. Ωστόσο σε αυτό το σημείο θα κάνουμε μια μικρή περιγραφή στην εφαρμογή και στο πρόβλημα που καλείται να επιλύσει. ΤΟ ΠΡΟΒΛΗΜΑ Όπως περιγράφεται στο [11], το πρόβλημα της συμπεριφοράς των γαγγλίων πετρελαίου κατά την κίνησή τους σε πορώδη πετρώματα, σχετίζεται με το τριτοβάθμιο στάδιο απόληψης πετρελαίου. Σε αυτό το στάδιο, σκοπός είναι η εκτόπιση του πετρελαίου που βρίσκεται στο κοίτασμα υπό μορφή μικρών παγιδευμένων γαγγλίων, τα οποία μπορεί να αποτελούν έως και τα δύο τρίτα του αρχικού πετρελαίου του κοιτάσματος. Η επιτυχία της διαδικασίας εξαρτάται από την κινητοποίηση και την επανασυγκόλληση των μικρών γαγγλίων, δημιουργώντας άλλα μεγαλύτερα, τα οποία θα αποτελέσουν την τράπεζα πετρελαίου. Η δημιουργία και η διατήρηση αυτής της τράπεζας πετρελαίου είναι αποτέλεσμα του ανταγωνισμού μεταξύ του μηχανισμού ομαδοποίησης και συνένωσης των γαγγλίων στο μέτωπο της πλημμύρας και του μηχανισμού διάσπασης και παγίδευσης των γαγγλίων. Για την θεωρητική μελέτη του προβλήματος, σύμφωνα με τα [11] και [14], αναπτύσσεται ένα τρισδιάστατο μοντέλων πορωδών μέσων, κατάλληλο για την εξομοίωση των πορωδών πετρωμάτων. Στο μοντέλο αυτό, το πορώδες μέσο θεωρείται ως ένα δίκτυο θαλάμων συνδεδεμένων με λαιμούς και προσεγγίζεται με ένα δίκτυο μοναδιαίων κελιών του τύπου σωλήνα με στένωση. 36

49 ΚΕΦΑΛΑΙΟ 3 ΡΕΥΣΤΟΜΗΧΑΝΙΚΗ ΚΑΙ ΠΑΡΑΓΟΝΤΟΠΟΙΗΣΗ CHOLESKY Εικόνα 3.1 Αναπαράσταση μεμονωμένου κελιού [14] Το μοντέλο των πορωδών μέσων χρησιμοποιείται για την εξομοίωση της κίνησης μοναχικών γαγγλίων διαμέσου πορωδών πετρωμάτων και τον υπολογισμό χρήσιμων μεγεθών. Η ΕΦΑΡΜΟΓΗ Η εφαρμογή, το θεωρητικό υπόβαθρο της οποίας παρουσιάστηκε παραπάνω, προσομοιώνει την σταθερής κατάσταση ροής δύο φάσεων σε πορώδη μέσα, η οποία επιλύεται με την βασική ανάλυση δικτύων. Θεωρούμε μια αναλογία μεταξύ του πορώδους μέσου και ενός ηλεκτρικού κυκλώματος, όπου κάθε κελί παριστάνεται ως μια αντίσταση. Η επίλυση του προβλήματος γίνεται σταδιακά θεωρώντας σε κάθε βήμα μια ψευδοσταθερή κατάσταση. Το γραμμικό σύστημα που περιγράφει αυτή την ψευδοσταθερή κατάσταση, λύνεται με την μέθοδο της παραγοντοποίησης Cholesky (Cholesky Factorization), ενώ θα πρέπει να λάβουμε υπ' όψιν μας την μεγάλη αραιότητα του πίνακα. Οι τιμές της πιέσεως, με την σειρά τους χρησιμοποιούνται για τον υπολογισμό των στιγμιαίων ρυθμών ροής μέσω των κελιών και την αντίστοιχη ταχύτητα των μηνίσκων. Θεωρώντας οτι αυτές παραμένουν σταθερές για μικρό χρονικό διάστημα, μπορεί να γίνει ο υπολογισμός των νέων θέσεων των μηνίσκων. Η συγκεκριμένη διαδικασία επαναλαμβάνεται. 37

50 ΚΕΦΑΛΑΙΟ 3 ΡΕΥΣΤΟΜΗΧΑΝΙΚΗ ΚΑΙ ΠΑΡΑΓΟΝΤΟΠΟΙΗΣΗ CHOLESKY Από την παραπάνω περιγραφή, γίνεται σαφές οτι η παραγοντοποίηση Cholesky, θα έχει κυρίαρχο ρόλο κατά την εκτέλεση των υπολογισμών. Κάνοντας δυναμική ανάλυση της εφαρμογής μέσω της διαδικασίας του profiling, τα αποτελέσματα της οποίας βλέπουμε στο παράρτημα B, βλέπουμε οτι η συνάρτηση που υλοποιεί την διαδικασία της παραγοντοποίησης Cholesky καταλαμβάνει περίπου το 4% του συνολικού χρόνου που απαιτεί η εφαρμογή και εκεί θα εστιάσουμε. Στην συνέχεια θα παρουσιάσουμε την διαδικασία της παραγοντοποίησης Cholesky, σε θεωρητικό επίπεδο, για έναν αλλά και περισσότερους επεξεργαστές. ΘΕΩΡΙΑ ΓΡΑΦΗΜΑΤΩΝ Πριν αναλύσουμε την μέθοδο παραγοντοποίησης Cholesky (Cholesky Factorization) θα πρέπει να κάνουμε μια μικρή εισαγωγή στην θεωρία των γραφημάτων, καθώς αυτά χρησιμοποιούνται στην διαδικασία επίλυσης ενός γραμμικού συστήματος με την μέθοδο αυτή. ΒΑΘΜΟΣ ΚΟΜΒΟΥ (DEGREE / VALENCY) Βαθμός ενός κόμβου του γραφήματος είναι ο αριθμός των δεσμών που φτάνουν σε αυτό. Εικόνα Γράφος στους κόμβους του οποίου σημειώνεται ο βαθμός τους[1] Στην προηγούμενη εικόνα ο κάθε κόμβος περιέχει τον βαθμό του. Στην περίπτωση όπου μια σύνδεση ξεκινάει από έναν κόμβο και καταλήγει στον ίδιο κόμβο τότε αυτό μετράει για δύο. Σε περίπτωση που έχουμε συγκεκριμένες τιμές στον βαθμό ενός κόμβου τότε έχουμε[1] : isolated vertex : κόμβος με βαθμό. [1] 38

51 ΚΕΦΑΛΑΙΟ 3 ΡΕΥΣΤΟΜΗΧΑΝΙΚΗ ΚΑΙ ΠΑΡΑΓΟΝΤΟΠΟΙΗΣΗ CHOLESKY leaf vertex : κόμβος με βαθμό 1. dominating vertex : ο βαθμός του κόμβου είναι n-1 σε γράφημα με n κόμβους. ΠΑΡΑΓΟΝΤΟΠΟΙΗΣΗ CHOLESKY (CHOLESKY FACTORIZATION) Έχουμε το ακόλουθο γραμμικό σύστημα Ax=b (3.1) Η επίλυση του παραπάνω συστήματος έχει κυρίαρχο ρόλο στα επιστημονικά προβλήματα και συναντάται συχνά σε αυτά. Γι αυτό έχουν αναπτυχθεί τρόποι επίλυσής τους που μετατρέπουν το παραπάνω πρόβλημα σε ένα ευκολότερο με την προϋπόθεση οτι πληρούνται κάποιες συνθήκες σχετικά με τον πίνακα Α. Η πιο γνωστή μέθοδος τέτοιου τύπου είναι η μέθοδος Gauss, η οποία ουσιαστικά μετατρέπει το παραπάνω πρόβλημα σε πρόβλημα τριγωνικών πινάκων που είναι πιο εύκολο να επιλυθούν. Οι μέθοδοι, όπως αυτή του Gauss λέγονται μέθοδοι LU παραγοντοποίησης (LU Factorization), και μία από αυτές είναι και η μέθοδος που εξετάζουμε. Προκειμένου να κάνουμε χρήση της μεθόδου της παραγοντοποίησης Cholesky, όπως αυτή παρουσιάζεται στα [8] και [1], θα πρέπει ο πίνακας Α να είναι ένας τετραγωνικός πίνακας n n, συμμετρικός και θετικά ορισμένος. Τα υπόλοιπα στοιχεία του συστήματος είναι τα γνωστά, δηλαδή το b είναι ένα γνωστό διάνυσμα μεγέθους n και x είναι το διάνυσμα το οποίο ψάχνουμε. Η μετατροπή του παραπάνω γραμμικού συστήματος σε ένα τριγωνικό σύστημα και η επίλυσή του περιλαμβάνει δύο βασικά βήματα. Αρχικά θα πρέπει να γίνει ο υπολογισμός του κάτω τριγωνικού πίνακα L, ο οποίος ονομάζεται παράγοντας Cholesky (Cholesky Factor), με βάση την σχέση A= L L T και στην συνέχεια έχουμε την τριγωνική επίλυση προκειμένου να υπολογίσουμε το διάνυσμα x με βάση τις επόμενες δύο σχέσεις Ly=b (3.2) και LT x= y (3.3) [1] 39

52 ΚΕΦΑΛΑΙΟ 3 ΡΕΥΣΤΟΜΗΧΑΝΙΚΗ ΚΑΙ ΠΑΡΑΓΟΝΤΟΠΟΙΗΣΗ CHOLESKY Η επίλυση μπορεί να γίνει και με άνω τριγωνικούς πίνακες ωστόσο συνηθίζεται η χρήση των κάτω τριγωνικών πινάκων. Για τον υπολογισμό των στοιχείων του πίνακα L μπορούμε να δούμε το επόμενο παράδειγμα. Ας υποθέσουμε οτι ο πίνακας Α είναι ένας 3 3 πίνακας και πληρεί τις προϋποθέσεις που αναφέρθηκαν παραπάνω ( a11 a21 a31 A= a21 a 22 a 23 a31 a32 a33 ) (3.4) Επομένως με βάση την σχέση που συνδέει τον πίνακα A με τον πίνακα L έχουμε ( )( )( ) a11 a21 a31 l 11 l 11 l 21 l 31 T A= a21 a 22 a23 = l 21 l 22 l 22 l 23 =L L (3.5) a31 a32 a33 l 31 l 32 l 33 l 33 Άρα κάνοντας τον πολλαπλασιασμό έχουμε ( 2 l 11 l 21 l 11 l 21 l l 21+ l 22 l 31 l 11 l 31 l 21+l 32 l 22 l 31 l 11 l 31 l 21+ l 32 l l +l + l 2 33 ) (3.6) Επομένως, βάση των παραπάνω, για τον υπολογισμό των στοιχείων του διανύσματος Cholesky έχουμε τους επόμενους γενικούς τύπους[1] : για τα διαγώνια στοιχεία k 1 l kk = a kk l 2kj (3.7) j=1 για τα στοιχεία που βρίσκονται κάτω από την διαγώνιο ( l ik, οπου i> k ) k 1 l ik = 1 (a l l ) (3.8) l kk ik j =1 ij kj [1] 4

53 ΚΕΦΑΛΑΙΟ 3 ΡΕΥΣΤΟΜΗΧΑΝΙΚΗ ΚΑΙ ΠΑΡΑΓΟΝΤΟΠΟΙΗΣΗ CHOLESKY Επομένως με τους τύπους αυτούς γίνεται ο υπολογισμός των στοιχείων του διανύσματος Cholesky. Στην περίπτωση όπου ο πίνακας Α είναι μια αραιά μήτρα, δηλαδή πολλά από τα στοιχεία της είναι μηδενικά τότε έχουμε αρκετούς υπολογισμούς από αυτούς που παρουσιάστηκαν παραπάνω να ισούνται με μηδέν και άρα να είναι περιττοί. Αυτό όμως δεν σημαίνει οτι όποια στοιχεία στον πίνακα Α είναι μηδέν τα ίδια στοιχεία θα είναι μηδέν και στον πίνακα L. Τα στοιχεία αυτά, που είναι μηδενικά στον πίνακα Α και μη μηδενικά στον πίνακα L, ονομάζονται fill ή fill-in. Αυτά τα στοιχεία μας δημιουργούν κάποια προβλήματα στους υπολογισμούς. Όμως είναι δυνατόν να γίνει κάποια αναδιάταξη των στηλών του πίνακα Α με αποτέλεσμα την αλλαγή του πλήθους αυτών των στοιχείων. Μια τέτοια αλλαγή δεν θα επηρεάσει το τελικό αποτέλεσμα και αυτό διότι ο πίνακας μας είναι θετικά ορισμένος. Όμως η εύρεση μια τέτοιας αναδιάταξης είναι ένα πολύ δύσκολο και περίπλοκο πρόβλημα (NP - complete πρόβλημα). Υπάρχουν όμως συγκεκριμένοι αλγόριθμοι που έχουν αναπτυχθεί και προσφέρουν μια αποδοτική αναδιάταξη των στοιχείων του πίνακα Α. Με χρήση κάποιας αναδιάταξης των στηλών του πίνακα Α, δηλαδή κάποιου πίνακα μετάθεσης (permutation matrix), αλλάζουν κάπως τα βήματα της τριγωνικής επίλυσης ενώ πλέον η μέθοδος αναλύεται στα επόμενα βήματα, σύμφωνα με το [1]. Να σημειωθεί οτι ένας πίνακας μετάθεσης είναι ένας δυαδικός πίνακας με όλα τα στοιχεία της κάθε στήλης να είναι μηδέν πλην της γραμμής που είναι η νέα θέση της συγκεκριμένης στήλης. Περισσότερα θα αναφερθούν παρακάτω. 1. Ordering Εύρεση ενός πίνακα μετάθεσης P, με βασικό σκοπό ο πίνακας L του P A P T να έχει λιγότερα fill από αυτά του Α. 2. Symbolic Factorization Εύρεση της δομής του πίνακα L. Υπολογίζεται ποια στοιχεία του πίνακα είναι μη μηδενικά και ποια είναι μηδενικά. 3. Numeric Factorization Εδώ γίνεται ο αριθμητικός υπολογισμός των στοιχείων του πίνακα L για τον 41

54 ΚΕΦΑΛΑΙΟ 3 πίνακα ΡΕΥΣΤΟΜΗΧΑΝΙΚΗ ΚΑΙ ΠΑΡΑΓΟΝΤΟΠΟΙΗΣΗ CHOLESKY P A P T (3.9) 4. Triangular Solution Λύνουμε τις επόμενες γραμμικές εξισώσεις για την εύρεση του διανύσματος x που είναι και το ζητούμενο L y=p b (3.1) LT z = y (3.11) T x=p z (3.12) Στην συνέχεια θα παρουσιάσουμε συνοπτικά τα παραπάνω βήματα της διαδικασίας Cholesky. Ordering Όπως ήδη αναφέρθηκε παραπάνω, η συγκεκριμένη διαδικασία ακολουθείται προκειμένου να βρεθεί μια διαφορετική διάταξη των στοιχείων του πίνακα Α, με βασικό σκοπό την μείωση των στοιχείων fill, προκειμένου να μειώσουμε τους υπολογισμούς κατά την διαδικασία υπολογισμού του παράγοντα Cholesky L. Η διαδικασία αυτή είναι μια δύσκολη διαδικασία και χαρακτηρίζεται ως NP - complete πρόβλημα. Όμως υπάρχουν κάποιοι αλγόριθμοι που μπορούν να χρησιμοποιηθούν προκειμένου να βρεθεί μια ικανοποιητική νέα διάταξη, η οποία να μειώνει τον αριθμό των fill. Οι δύο πιο γνωστοί αλγόριθμοι που χρησιμοποιούνται, βασιζόμενοι στο [1], είναι αυτός του ελάχιστου βαθμού (minimum degree), ο οποίος χρησιμοποιείται σε συνεργασία με το γράφημα του πίνακα Α, και αυτός του ένθετου τεμαχισμού (nested dissection), ο οποίος χρησιμοποιεί επίσης το γράφημα, και έχει την λογική του διαίρει και βασίλευε. Στον αλγόριθμο του ελάχιστου βαθμού (minimum degree)[1] [2] αφαιρούμε σταδιακά όλους τους κόμβους του γραφήματος σε σειρά με βάση το ποιος έχει τον μικρότερο βαθμό (σχετικά με τον βαθμό ενός κόμβου έχουμε αναφερθεί παραπάνω). Όταν ένας κόμβος αφαιρείται από το γράφημα, οι κόμβοι που είναι γείτονες με τον κόμβο που αφαιρείται συνδέονται μεταξύ τους, αν δεν είναι ήδη συνδεδεμένοι. Σε περίπτωση που δύο κόμβοι ή περισσότεροι κόμβοι έχουν τον ίδιο βαθμό τότε υπάρχουν διάφοροι τρόποι για να διαλέξουμε ποιον κόμβο να αφαιρέσουμε και ένας από αυτούς είναι να διαλέξουμε στην τύχη ποιον θα αφαιρέσουμε. Η διαδικασία αυτή επαναλαμβάνεται [1] [2] 42

55 ΚΕΦΑΛΑΙΟ 3 ΡΕΥΣΤΟΜΗΧΑΝΙΚΗ ΚΑΙ ΠΑΡΑΓΟΝΤΟΠΟΙΗΣΗ CHOLESKY μέχρι την αφαίρεση όλων των κόμβων του γραφήματος. Η σειρά με την οποία αφαιρέθηκαν αποτελεί την νέα διάταξη του πίνακα Α. Το πρόβλημα με τον αλγόριθμο αυτό είναι οτι μπορεί να μην έχουμε νέα διάταξη, αλλά με τον τρόπο που θα γίνει η αφαίρεση των κόμβων, να έχουμε τελικά την ίδια διάταξη (ειδικά στην περίπτωση που γίνεται τυχαία η επιλογή του κόμβου που θα αφαιρεθεί όταν έχουμε δύο ή περισσότερους με τον ίδιο βαθμό). Να τονίσουμε επίσης οτι το γράφημα που θα δημιουργηθεί από τον πίνακα με την νέα διάταξη δεν θα αλλάξει την μορφή του γραφήματος, αλλά μόνο την σειρά των κόμβων σε αυτό. Στην πρώτη εικόνα που ακολουθεί βλέπουμε τα στοιχεία του πίνακα Α και L χωρίς να έχουμε εφαρμόσει κάποιον αλγόριθμο ενώ στην δεύτερη βλέπουμε τα στοιχεία των δύο πινάκων με χρήση του αλγορίθμου του ελάχιστου βαθμού. Εικόνα 3.3 Πίνακας Α και ο αντίστοιχος L χωρίς την εφαρμογή κάποιου αλγορίθμου για την αναδιάταξη των στοιχείων[1] [1] 43

56 ΚΕΦΑΛΑΙΟ 3 ΡΕΥΣΤΟΜΗΧΑΝΙΚΗ ΚΑΙ ΠΑΡΑΓΟΝΤΟΠΟΙΗΣΗ CHOLESKY Εικόνα Πίνακας Α και ο αντίστοιχος L με εφαρμογή του αλγορίθμου του ελάχιστου βαθμού [1] Από τις δύο παραπάνω εικόνες βλέπουμε οτι το γράφημα του πίνακα Α παραμένει ίδιο και αυτό που αλλάζει είναι η σειρά των κόμβων ενώ η δομή του πίνακα L είναι διαφορετική. Ο δεύτερος γνωστός αλγόριθμος που χρησιμοποιείται για αυτή την διαδικασία είναι αυτός του ένθετου τεμαχισμού (nested dissection). Σε αυτήν τη διαδικασία[1] [2], αρχικά γίνεται η επιλογή ενός συνόλου κάποιων κόμβων (ή κόμβου), το οποίο καλείται διαχωριστής (separator), και η αφαίρεση αυτών από το γράφημα το χωρίζει σε δύο ανεξάρτητα γραφήματα (ουσιαστικά κάνουμε επιλογή κάποιου διαχωριστή κόμβων, όπως αναφέρθηκε στην θεωρία των γραφημάτων). Στην συνέχεια οι κόμβους του γραφήματος αριθμούνται εκ νέου, ξεκινώντας από τα δύο υπογραφήματα και αφήνοντας για το τέλος τους κόμβους του διαχωριστή. Στην συνέχεια, η διαδικασία αυτή εφαρμόζεται στα δύο υπογραφήματα με τον ίδιο τρόπο μέχρι την στιγμή που αριθμηθούν όλοι οι κόμβοι. Όσο μικρότερο είναι το πλήθος των κόμβων στους διαχωριστές που επιλέγονται τόσο πιο αποτελεσματικός θα είναι ο αλγόριθμος ως προς τον αριθμό των fill, ενώ σε περίπτωση όπου τα υπογραφήματα είναι περίπου ίσα μεταξύ τους τότε το elimination tree που θα προκύψει θα είναι αρκετά ισορροπημένο (σχετικά με το elimination tree θα αναφερθούμε παρακάτω). [1] [2] 44

57 ΚΕΦΑΛΑΙΟ 3 ΡΕΥΣΤΟΜΗΧΑΝΙΚΗ ΚΑΙ ΠΑΡΑΓΟΝΤΟΠΟΙΗΣΗ CHOLESKY Εικόνα Πίνακας Α και ο αντίστοιχος L με εφαρμογή του αλγορίθμου του ένθετου τεμαχισμού[26] Τέλος πριν κλείσουμε αυτήν την ενότητα θα κάνουμε μια αναφορά στον αλγόριθμο μονά-ζυγά, (odd-even) βάση του οποίου οι κόμβοι με μονό αριθμό τοποθετούνται πριν από αυτούς με ζυγό αριθμό και η διαδικασία αυτή επαναλαμβάνεται σε κάθε υποσύνολο που δημιουργείται. Αυτός ο αλγόριθμος δεν προσφέρεται για την μείωση των fill σε μία αραιή μήτρα όμως δίνει την δυνατότητα για καλύτερο παραλληλισμό [1]. Εικόνα Πίνακας Α και ο αντίστοιχος L με εφαρμογή του αλγορίθμου μονά-ζυγά [1] Μετά από την εφαρμογή κάποιου από τους παραπάνω αλγορίθμους, προκύπτει μια νέα διάταξη του πίνακα Α. Τόσο για τον υπολογισμό του νέου πίνακα Α όσο και για την τριγωνική επίλυση μας είναι απαραίτητος ένας πίνακας ο οποίος ονομάζεται πίνακας μετάθεσης (permutation matrix). Ο πίνακας αυτός[2] είναι ένας δυαδικός πίνακας ο οποίος έχει μόνο ένα [1] [2] 45

58 ΚΕΦΑΛΑΙΟ 3 ΡΕΥΣΤΟΜΗΧΑΝΙΚΗ ΚΑΙ ΠΑΡΑΓΟΝΤΟΠΟΙΗΣΗ CHOLESKY 1 ανά στήλη και όλα τα υπόλοιπα στοιχεία του. Η θέση στην οποία μπαίνει η μονάδα είναι η νέα θέση της στήλης αυτής. Δηλαδή αν η στήλη 2 έχει το 1 στην γραμμή 4 αυτό σημαίνει οτι στον νέο πίνακα Α η στήλη 4 θα είναι στην στήλη 2. Ο πίνακας ο οποίος προκύπτει μετά από την αναδιάταξή θα είναι επίσης συμμετρικός και θετικά ορισμένος. Εικόνα Πίνακας μετάθεσης[1] Στην εικόνα 3.6, τα κόκκινα κουτάκια αναπαριστούν την θέση των μονάδων του πίνακα ενώ τα λευκά κουτάκια είναι τα μηδενικά στοιχεία του πίνακα αυτού. Αν το 1 είναι στην διαγώνιο του πίνακα τότε η στήλη δεν θα αλλάξει θέση όπως φαίνεται και στην εικόνα για την στήλη 3. Symbolic Factorization Σε αυτό το βήμα, με βάση το [1], βρίσκουμε την δομή του πίνακα L ενώ βάση αυτής της δομής δημιουργούμε το δένδρο εξάλειψης (elimination tree). Το δένδρο εξάλειψης δεν έχει σημαντικό ρόλο στον σειριακό αλγόριθμο, όμως έχει ουσιώδη σημασία στον υλοποίηση του παράλληλου αλγορίθμου αφού αποτελεί ένα είδος γραφήματος εξάρτησης δεδομένων (data dependency graph). Ουσιαστικά σε αυτό το βήμα θα βρούμε ποια θα είναι τα στοιχεία που δεν είναι μηδέν και θα πρέπει να ασχοληθούμε μαζί τους στο επόμενο βήμα που είναι η αριθμητικές τιμές των στοιχείων του πίνακα L. Ουσιαστικά το συγκεκριμένο βήμα παρουσιάζεται συνοπτικά σε μία μόνο μαθηματική σχέση, η οποία εμφανίζεται στο [3] : [1] 46

59 ΚΕΦΑΛΑΙΟ 3 Ω (L i)=ω (A i ) ( ΡΕΥΣΤΟΜΗΧΑΝΙΚΗ ΚΑΙ ΠΑΡΑΓΟΝΤΟΠΟΙΗΣΗ CHOLESKY k <i {Ω ( L k ) mk =i}) {1,2,...,i 1} (3.13) Ω (.) τα μη μηδενικά στοιχεία A τα στοιχεία κάτω απο την διαγώνιο Στην ουσία η παραπάνω μαθηματική έκφραση μας λέει οτι η δομή της στήλης i του πίνακα L δίνεται από την δομή της στήλης i του πίνακα Α (χωρίς βέβαια να λαμβάνεται υπ' όψιν το κομμάτι της στήλης άνω της διαγωνίου) μαζί με την δομή των στηλών του πίνακα L για τις οποίες ισχύει οτι το πρώτο μη διαγώνιο στοιχείο που είναι μη μηδενικό είναι στην γραμμή i. Με τον τρόπο αυτό λοιπόν βρίσκουμε την δομή του πίνακα L. Με βάση τώρα την δομή του πίνακα L, μπορούμε να δημιουργήσουμε το δένδρο εξάλειψης. Για την δημιουργία του δένδρου αυτού, σαν πρώτο βήμα πρέπει να βρούμε τον γονέα της κάθε στήλης. Ο γονέας της κάθε στήλης είναι το πρώτο στοιχείο, κάτω από την διαγώνιο, που δεν είναι μηδέν, διαφορετικά μπαίνει η ίδια η στήλη. Αυτό συμβολίζεται ως parent[j], όπου j είναι η στήλη. Όπως ήδη αναφέραμε παραπάνω το συγκεκριμένο δένδρο αποτελεί βασικό κομμάτι του παράλληλου αλγορίθμου, όχι όμως για τον σειριακό αλγόριθμο και επομένως σχετικά με αυτό θα αναφερθούμε στην συνέχεια. Numeric Factorization Εδώ ουσιαστικά έχουμε τον υπολογισμό της αριθμητικής τιμής των στοιχείων που βρήκαμε πριν ως μη μηδενικά. Για το συγκεκριμένο βήμα έχουμε τρεις βασικούς αλγορίθμους που χρησιμοποιούνται και παρουσιάζονται στα [1], [2], [3] και [1]. Σε αυτή την διαδικασία οι αλγόριθμοι που χρησιμοποιούνται, χρησιμοποιούν τρεις δείκτες και ανάλογα με το ποιος είναι στο εξωτερικό βρόχο, έχουμε και τις διαφοροποιήσεις στους αλγορίθμους. Η διαφοροποίηση βρίσκεται στον τρόπο με τον οποίο θα προσπελαστούν τα στοιχεία του πίνακα Α. Submatrix Cholesky : Σε αυτή την περίπτωση στον εξωτερικό κόμβο μπαίνει ο δείκτης k Column Cholesky : Σε αυτή την περίπτωση στον εξωτερικό κόμβο μπαίνει ο δείκτης j Row Cholesky : Σε αυτή την περίπτωση στον εξωτερικό κόμβο μπαίνει ο δείκτης 47

60 ΚΕΦΑΛΑΙΟ 3 ΡΕΥΣΤΟΜΗΧΑΝΙΚΗ ΚΑΙ ΠΑΡΑΓΟΝΤΟΠΟΙΗΣΗ CHOLESKY i Στην εικόνα 3.7, βλέπουμε τον τρόπο με τον οποίο ο κάθε ένας από τους παραπάνω αλγορίθμους επεξεργάζεται τα στοιχεία στην μνήμη. Εικόνα 3.8 Προσπέλαση στοιχείων κατά την διαδικασία των υπολογισμών[1] Εικόνα 3.9 Ο αλγόριθμος Submatrix Cholesky[1] [1] 48

61 ΚΕΦΑΛΑΙΟ 3 ΡΕΥΣΤΟΜΗΧΑΝΙΚΗ ΚΑΙ ΠΑΡΑΓΟΝΤΟΠΟΙΗΣΗ CHOLESKY Σύμφωνα με τον αλγόριθμο Submatrix Cholesky, γίνεται σάρωση όλων των στηλών του πίνακα Α και αρχικά βρίσκουμε το διαγώνιο στοιχείο και στην συνέχεια βρίσκουμε όλα τα επόμενα στοιχεία του πίνακα με βάση τον τύπο (3.8). Στον τύπο αυτό υπάρχει η διαίρεση με το διαγώνιο στοιχείο, το οποίο υλοποιείται στον πρώτο βρόχο επανάληψης και στην συνέχεια, στον δεύτερο και τον τρίτο βρόχο επανάληψης, βρίσκουμε το γινόμενο των στοιχείων και τα αφαιρούμαι. Εικόνα 3.1 Ο αλγόριθμος Column Cholesky[1] Εδώ, σε αντίθεση με τον προηγούμενο αλγόριθμο, τα πράγματα συμβαίνουν με διαφορετική σειρά. Σαν πρώτο βήμα είναι ο υπολογισμός των γινομένων των στοιχείων του πίνακα L και στην συνέχεια γίνεται η εύρεση του διαγώνιου στοιχείου και η διαίρεση με αυτό. Παρατηρούμε και στους δύο αλγορίθμους οτι υπάρχουν κάποια κομμάτια κώδικα τα οποία είναι ίδια. Αυτά αποτελούν δύο βασικές συναρτήσεις στην υλοποίηση του numeric factorization της μεθόδου παραγοντοποίηση Cholesky. Οι δύο αυτές συναρτήσεις είναι η CDIV και CMOD και είναι οι επόμενες, όπως ορίζονται στα [1] και [3] 49

62 ΚΕΦΑΛΑΙΟ 3 ΡΕΥΣΤΟΜΗΧΑΝΙΚΗ ΚΑΙ ΠΑΡΑΓΟΝΤΟΠΟΙΗΣΗ CHOLESKY Εικόνα 3.11 Ο αλγόριθμος της συνάρτησης Εικόνα 3.12 Ο αλγόριθμος της συνάρτησης CDIV[1] CMOD[1] Η πρώτη συνάρτηση (CDIV) διαιρεί το κάθε στοιχείο της στήλης j με την τετραγωνική ρίζα του διαγώνιου στοιχείου, ενώ η δεύτερη συνάρτηση (CMOD) αλλάζει τα στοιχεία της στήλης j πολλαπλασιάζοντας με αυτά της στήλης k. Τις δύο αυτές συναρτήσεις θα συναντήσουμε και στην υλοποίηση της διπλωματικής εργασίας. Triangular Solution Στο τέταρτο και τελευταίο βήμα της μεθόδου έχουμε την τριγωνική λύση με σκοπό την εύρεση του διανύσματος x. Αφού έχει υπολογιστεί ο πίνακας L και έχουμε τον πίνακα μετάθεσης, μπορούμε να προχωρήσουμε στους υπολογισμούς που απαιτούνται. Οι υπολογισμοί αυτοί είναι οι ακόλουθοι L y=p b (3.14) T L z = y (3.15) x=p T z (3.16) Αρχικά υπολογίζουμε ένα βοηθητικό διάνυσμα y σύμφωνα με την σχέση (3.14), το οποίο το χρησιμοποιούμε προκειμένου να βρεθεί ένα δεύτερο βοηθητικό διάνυσμα z, το οποίο με την σειρά του χρησιμοποιείται για την εύρεση του τελικού διανύσματος x το οποίο είναι και το ζητούμενο. ΠΑΡΑΓΟΝΤΟΠΟΙΗΣΗ CHOLESKY ΣΕ ΠΟΛΛΟΥΣ ΕΠΕΞΕΡΓΑΣΤΕΣ Για την επίλυση του γραμμικού συστήματος με την μέθοδο της παραγοντοποίησης Cholesky σε πολλούς επεξεργαστές ταυτόχρονα, τα πράγματα δεν αλλάζουν και πάρα πολύ. Τα βήματα που ακολουθούνται μέχρι την τελική επίλυση είναι σχεδόν ίδια με την διαφορά οτι προστίθεται ένα επιπλέον βήμα, αυτό της αντιστοίχησης των στηλών στους επεξεργαστές. Για το συγκεκριμένο βήμα είναι απαραίτητη η χρήση του δένδρου εξάλειψης που αναφέρθηκε παραπάνω και αυτό διότι δείχνει τις εξαρτήσεις μεταξύ των 5

63 ΚΕΦΑΛΑΙΟ 3 ΡΕΥΣΤΟΜΗΧΑΝΙΚΗ ΚΑΙ ΠΑΡΑΓΟΝΤΟΠΟΙΗΣΗ CHOLESKY στηλών του πίνακα. Συνοπτικά λοιπόν η επίλυση περιλαμβάνει τα ακόλουθα βήματα, σύμφωνα με το [1] : 1. Ordering 2. Mapping 3. Symbolic factorization 4. Numeric factorization 5. Triangular solution Στην γενική περίπτωση ισχύουν όλα όσα έχουμε ήδη αναφέρει παραπάνω, όμως κάποια πράγματα αλλάζουν με σκοπό να γίνει ο διαμοιρασμός των υπολογισμών στους επεξεργαστές. Ordering Η διαφορά με τον σειριακό αλγόριθμο είναι οτι πλέον σκοπός του βήματος αυτού δεν είναι η μείωση των fill, αλλά η δημιουργία όσον το δυνατόν περισσότερου παραλληλισμού. Αυτό μπορεί να εκτιμηθεί μέσω της δομής του δένδρου εξάλειψης, καθώς βάση αυτού γίνεται ο διαμοιρασμός στους επεξεργαστές. Παρά το γεγονός οτι ο σκοπός του βήματος αλλάζει, οι αλγόριθμοι δεν αλλάζουν και είναι οι ίδιοι που χρησιμοποιούνται και στην περίπτωση του σειριακού αλγορίθμου, καθώς προσφέρουν ικανοποιητικά αποτελέσματα. Στις επόμενες εικόνες βλέπουμε τους αλγορίθμους του ελάχιστου βαθμού και του ένθετου τεμαχισμού πως επιδρούν στην δομή του πίνακα L καθώς επίσης και στο αντίστοιχο δένδρο εξάλειψης 51

64 ΚΕΦΑΛΑΙΟ 3 ΡΕΥΣΤΟΜΗΧΑΝΙΚΗ ΚΑΙ ΠΑΡΑΓΟΝΤΟΠΟΙΗΣΗ CHOLESKY Εικόνα 3.13 Αρχική δομή πίνακα Α και L καθώς και το δένδρο εξάλειψης που προκύπτει[1] Εικόνα 3.14 Δομή πίνακα Α και L καθώς και το δένδρο εξάλειψης που προκύπτει, μετά την εφαρμογή του αλγορίθμου του ελάχιστου βαθμού[1] 52

65 ΚΕΦΑΛΑΙΟ 3 ΡΕΥΣΤΟΜΗΧΑΝΙΚΗ ΚΑΙ ΠΑΡΑΓΟΝΤΟΠΟΙΗΣΗ CHOLESKY Εικόνα 3.15 Δομή πίνακα Α και L καθώς και το δένδρο εξάλειψης που προκύπτει, μετά την εφαρμογή του αλγορίθμου του ένθετου τεμαχισμού[1] Mapping Σε αυτό το βήμα σκοπός είναι η ανάθεση υπολογισμών στους επεξεργαστές. Ο κάθε επεξεργαστής, μετά από αυτή την διαδικασία θα είναι υπεύθυνος για τους υπολογισμούς κάποιων στηλών του πίνακα Α. Η ανάθεση θα πρέπει να γίνει αφενός προσφέροντας μια εξισορρόπηση στους υπολογισμούς, δηλαδή οι επεξεργαστές να έχουν τον ίδιο φόρτο εργασία, αφετέρου να μην είναι αναγκαία η αποστολή πολλών μηνυμάτων μεταξύ των επεξεργαστών καθώς, όπως έχουμε αναφέρει σε προηγούμενο κεφάλαιο, είναι ένας σημαντικός παράγοντας καθυστέρησης. Οι αλγόριθμοι που χρησιμοποιούνται σε αυτό το βήμα είναι αυτός του subtree to subcube, όπου κάθε επεξεργαστής αναλαμβάνει ένα υποδένδρο του δένδρου εξάλειψης, και αυτός του wrap mapping, όπου ξεκινώντας από κάτω προς τα πάνω αναθέτουμε τις στήλες σε διαφορετικούς επεξεργαστές. Οι παραπάνω αλγόριθμοι φαίνονται σχηματικά στο επόμενο σχήμα 53

66 ΚΕΦΑΛΑΙΟ 3 ΡΕΥΣΤΟΜΗΧΑΝΙΚΗ ΚΑΙ ΠΑΡΑΓΟΝΤΟΠΟΙΗΣΗ CHOLESKY Εικόνα 3.16 subtree to subcube[1] 54

67 ΚΕΦΑΛΑΙΟ 3 ΡΕΥΣΤΟΜΗΧΑΝΙΚΗ ΚΑΙ ΠΑΡΑΓΟΝΤΟΠΟΙΗΣΗ CHOLESKY Εικόνα 3.17 wrap mapping[3] Symbolic factorization Σκοπός του βήματος αυτού είναι η δημιουργία της δομής του πίνακα L χωρίς να αλλάζει κάτι σε σχέση με αυτά που αναφέρθηκαν παραπάνω. Δεν παρουσιάζεται κάποιος συγκεκριμένος αλγόριθμος για την υλοποίηση αυτού του βήματος παράλληλα. Numeric factorization Σε αυτό το βήμα γίνεται ο υπολογισμός των τιμών των μη μηδενικών στοιχείων του πίνακα L. Προηγουμένως παρουσιάστηκαν κάποιοι αλγόριθμοι που υπολογίζουν τις τιμές των στοιχείων, οι οποίοι όμως δεν μπορούν να χρησιμοποιηθούν εδώ. Οι αλγόριθμοι που μπορούν να υλοποιήσουν την συγκεκριμένη διαδικασία παράλληλα είναι τρεις, ο fan - in αλγόριθμος, ο fan - out αλγόριθμος και ο multifrontal αλγόριθμος, σύμφωνα με το [1]. Ως βασικό συστατικό των δύο πρώτων αλγορίθμων είναι οι δύο συναρτήσεις που 55

68 ΚΕΦΑΛΑΙΟ 3 ΡΕΥΣΤΟΜΗΧΑΝΙΚΗ ΚΑΙ ΠΑΡΑΓΟΝΤΟΠΟΙΗΣΗ CHOLESKY παρουσιάστηκαν παραπάνω, δηλαδή η CDIV και η CMOD. Εικόνα 3.18 Fan out αλγόριθμος [2] Ο αλγόριθμος fan out, ο οποίος παρουσιάζεται στο [2], χωρίζεται σε δύο μέρη, το πρώτο στο οποίο γίνεται ένας έλεγχος για τον αριθμό των μη μηδενικών στοιχείων της στήλης και αν αυτός είναι μηδενικός τότε εφαρμόζεται η συνάρτηση CDIV ενώ στο δεύτερο κομμάτι του γίνονται όλοι οι υπόλοιποι υπολογισμοί κανονικά. Μετά από την εφαρμογή της συνάρτησης CDIV, γίνεται αποστολή της στήλης σε όσους επεξεργαστές χρειάζονται αυτή την στήλη. 56

69 ΚΕΦΑΛΑΙΟ 3 ΡΕΥΣΤΟΜΗΧΑΝΙΚΗ ΚΑΙ ΠΑΡΑΓΟΝΤΟΠΟΙΗΣΗ CHOLESKY Εικόνα 3.19 Fan in αλγόριθμος [1] Ο αλγόριθμος fan in, όπως παρουσιάζεται στο [1], με την σειρά του είναι βασισμένος στον αλγόριθμο column Cholesky και μοιάζει αρκετά με την διαδικασία του παράλληλου πολλαπλασιασμού, όπου κάθε επεξεργαστής κάνει τοπικά πράξεις μεταξύ των στηλών που έχει αναλάβει, μειώνοντας τα δεδομένα σε έναν αριθμό και αφού τελειώσει στέλνει τα στοιχεία που έχει υπολογίσει στους υπόλοιπους επεξεργαστή όπου γίνεται η ίδια διαδικασία. Triangular solution Πέμπτο και τελευταίο βήμα της διαδικασίας είναι η τριγωνική λύση με τις εξισώσεις που έχουν αναφερθεί παραπάνω. Εδώ δεν παρουσιάζεται κάποιος συγκεκριμένος αλγόριθμος, όμως υπάρχουν κάποιες προσεγγίσεις για την παράλληλη λύση του προβλήματος. Μια από αυτές υλοποιεί την τριγωνική λύση με μία διαδικασία που είναι ίδια με αυτή της μεθόδου της παραγοντοποίησης Cholesky, όπως δείχνεται στο [5]. Μια 57

70 ΚΕΦΑΛΑΙΟ 3 ΡΕΥΣΤΟΜΗΧΑΝΙΚΗ ΚΑΙ ΠΑΡΑΓΟΝΤΟΠΟΙΗΣΗ CHOLESKY διαφορετική προσέγγιση είναι αυτή του απλού παράλληλου πολλαπλασιασμού ενός πίνακα με ένα διάνυσμα. 58

71 ΚΕΦΑΛΑΙΟ 3 ΡΕΥΣΤΟΜΗΧΑΝΙΚΗ ΚΑΙ ΠΑΡΑΓΟΝΤΟΠΟΙΗΣΗ CHOLESKY 59

72 ΚΕΦΑΛΑΙΟ 4 : ΥΛΟΠΟΙΗΣΗ ΣΚΟΠΟΣ Στο κεφάλαιο αυτό θα γίνει αναλυτική παρουσίαση της υλοποίησης της μεθόδου παραγοντοποίησης Cholesky για συστήματα κατανεμημένης μνήμης με την χρήση του πρωτοκόλλου MPI. Η ανάλυση της υλοποίησης θα στηριχθεί στην θεωρία που παρουσιάστηκε στο κεφάλαιο 4, η οποία αποτέλεσε θεμέλιο στην διαδικασία δημιουργίας του παράλληλου αλγορίθμου.

73

74 ΚΕΦΑΛΑΙΟ 4 ΥΛΟΠΟΙΗΣΗ ΕΙΣΑΓΩΓΗ Η διαδικασία της υλοποίησης του παράλληλου αλγορίθμου για την επίλυση γραμμικών συστημάτων με την μέθοδο της παραγοντοποίησης Cholesky παρουσιάστηκε θεωρητικά στο προηγούμενο κεφάλαιο. Εκεί είδαμε την ανάπτυξη της επίλυσης του συγκεκριμένου προβλήματος σε πέντε βήματα. Αρχικά θα γίνει προσπάθεια για την εφαρμογή της θεωρίας όπως παρουσιάστηκε εφαρμόζοντας τα τέσσερα από τα θεωρητικά βήματα και αυτά είναι 1. Δημιουργία νέας διάταξης των στηλών του πίνακα Α (Reorder) 2. Ανάθεση στηλών του πίνακα Α στους επεξεργαστές (Mapping) 3. Υπολογισμός του πίνακα L (Numeric Factorization) 4. Εύρεση του διανύσματος x (Triangular Solution) Αυτή θα είναι η πρώτη έκδοση. Για λόγους που θα δείξουμε στο επόμενο κεφάλαιο, αυτό της πειραματικής μελέτης, θα υλοποιήσουμε και μία δεύτερη υλοποίηση του παράλληλου αλγορίθμου χρησιμοποιώντας τα τρία από τα παραπάνω βήματα 1. Ανάθεση στηλών του πίνακα Α στους επεξεργαστές (Mapping) 2. Υπολογισμός του πίνακα L (Numeric Factorization) 3. Εύρεση του διανύσματος x (Triangular Solution) Η εφαρμογή θα πρέπει αφενός μεν να δίνει σωστά αποτελέσματα αφετέρου δε να τα δίνει σε ταχύτερο χρόνο ώστε να έχει νόημα η κατανεμημένη επεξεργασία. Γι αυτό τον λόγο γίνεται και η δεύτερη έκδοση του παράλληλου αλγορίθμου χωρίς να γίνεται πιστή μεταφορά της θεωρίας, αλλά ορισμένα τμήματα είτε παραλείπονται είτε ενσωματώνονται σε άλλες διαδικασίες. Από τις n διεργασίες που θα αναλάβουν την επίλυση του προβλήματος, μια εξ αυτών δεν θα συμμετέχει στην διαδικασία των υπολογισμών, αλλά θα είναι υπεύθυνη για την αποστολή των δεδομένων όποτε αυτό χρειάζεται, την συλλογή αυτών, το συντονισμό της όλης διαδικασίας και γενικότερα διαδικασιών που δεν μπορούν να εκτελεστούν παράλληλα ή είναι προαπαιτούμενες για τον καταμερισμό των εργασιών. Οι υπόλοιπες 62

75 ΚΕΦΑΛΑΙΟ 4 ΥΛΟΠΟΙΗΣΗ διεργασίες αναλαμβάνουν να εκτελέσουν τα παραπάνω βήματα της διαδικασίας για τις στήλες του πίνακα Α που είναι υπεύθυνες και τους έχουν ανατεθεί από την κεντρική διεργασία. Αυτό θα ισχύει και στις δύο υλοποιήσεις. Τα δεδομένα αποθηκεύονται στην μνήμη σε μορφή αραιάς μήτρας, δηλαδή για το κάθε κελί του πίνακα που περιέχει μη μηδενικό στοιχείο, αποθηκεύεται η τιμή του, η γραμμή στην οποία βρίσκεται και η στήλη στην οποία βρίσκεται. Όμως, οι αλγόριθμοι που χρησιμοποιούνται στην μέθοδο Cholesky, προσθέτουν και αφαιρούν συνεχώς στοιχεία από τον πίνακα. Επίσης θα μπορούσαμε να οργανώσουμε κάπως τα δεδομένα, ώστε να κερδίσουμε λίγο χρόνο από κάποιες επαναλήψεις κατά την διάρκεια των αναζητήσεων στοιχείων. Γι αυτό τα δεδομένα οργανώνονται σε μορφή διασυνδεδεμένης λίστας, κάθε στοιχείο της οποίας περιέχει τα παραπάνω στοιχεία, ενώ ορίζουμε μία λίστα για κάθε στήλη του πίνακα Α. Με τον τρόπο αυτό πετυχαίνουμε εύκολη περιήγηση μεταξύ των στηλών του πίνακα Α. Στην συνέχεια παρουσιάζεται η λογική και ο τρόπος υλοποίησης της μεθόδου παραγοντοποίησης Cholesky με χρήση ψευδοκώδικα και διαγραμμάτων ροής για ευκολότερη κατανόηση. Αρχικά θα παρουσιαστεί η πρώτη υλοποίηση, ενώ στην συνέχεια επισημαίνονται οι διαφοροποιήσεις που έγιναν στην δεύτερη υλοποίηση. Στο ΠΑΡΑΡΤΗΜΑ Δ βρίσκεται όλος ο κώδικας της εφαρμογής ανεπτυγμένος σε FORTRAN και για τις δύο υλοποιήσεις. ΠΡΩΤΗ ΥΛΟΠΟΙΗΣΗ ΒΗΜΑ 1 : ΕΥΡΕΣΗ ΝΕΑΣ ΔΙΑΤΑΞΗΣ ΤΟΥ ΠΙΝΑΚΑ Α Αυτό είναι το σημαντικότερο βήμα, καθώς η διάταξη των μη μηδενικών στοιχείων του πίνακα Α καθορίζουν το επίπεδο της παράλληλης επεξεργασίας. Ανάλογα με την θέση τους δηλαδή, κάποιες στήλης μπορούν να υπολογίσουν τα στοιχεία τους χωρίς να περιμένουν να τελειώσουν οι υπολογισμοί σε όλες τις προηγούμενες, όπως συμβαίνει στον σειριακό αλγόριθμο, και με τον τρόπο αυτό μπορούμε να λύσουμε το πρόβλημα παράλληλα, με μικρές αναμονές. Έτσι λοιπόν, γίνεται σαφές, οτι η παράσταση των μη μηδενικών στοιχείων του πίνακα Α παίζει πολύ σημαντικό ρόλο στο επίπεδο παραλληλοποίησης και άρα στην ταχύτητα του αλγορίθμου. Για την εύρεση της νέας διάταξης του πίνακα Α, πρόβλημα που θεωρείται NP - complete, θα χρησιμοποιηθεί ο αλγόριθμος του ελάχιστου βαθμού που αναφέρθηκε και στο προηγούμενο κεφάλαιο. Το 63

76 ΚΕΦΑΛΑΙΟ 4 ΥΛΟΠΟΙΗΣΗ βήμα αυτό θα χωριστεί σε δύο κομμάτια, το πρώτο θα ορίσει τις αναθέσεις των στηλών, ενώ το δεύτερο θα βρει την νέα διάταξη του πίνακα Α με την χρήση του αλγορίθμου του ελάχιστου βαθμού. ΒΗΜΑ 1.1 : ΔΙΑΜΟΙΡΑΣΜΟΣ ΤΩΝ ΣΤΗΛΩΝ ΤΟΥ ΠΙΝΑΚΑ Α Στο πρώτο κομμάτι του πρώτου βήματος, η κεντρική διεργασία, αναλαμβάνει τον διαμοιρασμό των στηλών του πίνακα Α στις υπόλοιπες διεργασίες προκειμένου να ξεκινήσει η διαδικασία για την εύρεση της νέας διάταξης. Σε αυτήν την πρώτη ανάθεση στηλών (θα ξαναγίνει ανάθεση στηλών μετά την εύρεση της νέας διάταξης), δεν χρειάζεται να γίνει η ανάθεση με συγκεκριμένο τρόπο, γι αυτό στέλνουμε τις στήλες με την σειρά. Το μόνο που πρέπει να προσέξουμε είναι στην περίπτωση που οι στήλες δεν διαμοιράζονται ακριβώς στις διεργασίες. Τότε, κάποιες από τις διεργασίες (συγκεκριμένα όσο είναι το υπόλοιπο της διαίρεσης των στηλών με τον αριθμό των διεργασιών) αναλαμβάνουν μία στήλη παραπάνω. Επομένως η κεντρική διεργσία στέλνει στις υπόλοιπες την αρχική και τη τελική στήλη από αυτές που θα αναλάβουν και έπειτα τους στέλνει τα στοιχεία αυτών των στηλών. Εικόνα 4.1 Διάγραμμα ροής για την διαδικασία ανάθεσης στηλών από την κεντρική διεργασία.!rank is id of processes!size is the total number of processes IF (rank == ) THEN 64

77 ΚΕΦΑΛΑΙΟ 4 ΥΛΟΠΟΙΗΣΗ k=n/(size-1) l=mod(n,size-1) c= DO i=1,size-1 IF (l>) SEND first, is c, and last column, is c+k, to is c+k, to process i c_start=(c*n)+1 c_end=(k+1)*n SEND elements of columns to process i c=c+k+1 l=l-1 ELSE SEND first, is c, and last column, process i c_start=(c*n)+1 c_end=(k-1)*n SEND elements of columns to process i c=c+k ELSE RECEIVE first and last column from root RECEIVE columns elements Eικόνα 4.2 Ψευδοκώδικας του βήματος

78 ΚΕΦΑΛΑΙΟ 4 ΥΛΟΠΟΙΗΣΗ Αρχικά, λοιπόν, ελέγχουμε το υπόλοιπο της διαίρεσης του αριθμού των στηλών με τον αριθμό των διεργασιών που αναλάβουν τους υπολογισμούς προκειμένου να δούμε αν θα χρειαστεί κάποιες απο αυτές να πάρουν κάποια στήλη παραπάνω. Στην συνέχεια, γίνεται ο υπολογισμός της πρώτης και της τελευταίας στήλης που θα αναλάβει η κάθε διεργασία, με την βοήθεια των μεταβλητών c και k. Έπειτα γίνεται αποστολή στην κάθε διεργασία το αποτέλεσμα αυτών των υπολογισμών. Τέλος, η κεντρική διεργασία, που είναι και κάτοχος του πίνακα Α, βρίσκει τα στοιχεία που χρειάζεται να στήλη, βάση των προηγούμενων υπολογισμών και στέλνει όλες τις στήλες στις αντίστοιχες διεργασίες. Μετά το πέρας αυτής της διαδικασίας, η κάθε διεργασία έχει τα δεδομένα που χρειάζεται για να ξεκινήσει τον αλγόριθμο του ελάχιστου βαθμού. ΒΗΜΑ 1.2 : ΕΥΡΕΣΗ ΝΕΑΣ ΔΙΑΤΑΞΗΣ ΠΙΝΑΚΑ Α ΑΛΓΟΡΙΘΜΟΣ ΕΛΑΧΙΣΤΟΥ ΒΑΘΜΟΥ Μετά τον διαμοιρασμό των στηλών του πίνακα Α, ξεκινάει ο αλγόριθμος του ελάχιστου βαθμού για την αναδιοργάνωση του πίνακα Α. Το αποτέλεσμα αυτού του βήματος είναι ο λεγόμενος πίνακας μετάθεσης (permutation matrix), που δηλώνει την νέα οργάνωση του πίνακα Α. Λόγω του μεγάλου μεγέθους του πίνακα Α και του τρόπου που δουλεύει ο αλγόριθμος του ελάχιστου βαθμού, θα πρέπει να γίνει χρήση λιστών ως δομή δεδομένων αποθήκευσης των στοιχείων του πίνακα Α, προκειμένου να είναι εύκολη η αφαίρεση και η προσθήκη νέων στοιχείων στον πίνακα. Επομένως, μετά την λήψη των στοιχείων του πίνακα Α από την κεντρική διεργασία, δημιουργούμε την δομή της λίστας που αναπαριστά τις στήλες του πίνακα Α. Κάθε στοιχείο της λίστας, περιέχει την τιμή του κελιού και την θέση του στον πίνακα. Επομένως τα μη μηδενικά στοιχεία παραλείπονται προκειμένου να γίνει εξοικονόμηση χώρου στην μνήμη. Παράλληλα, κατά την δημιουργία της δομής δεδομένων, υπολογίζουμε και τον βαθμό της κάθε στήλης, δηλαδή τον αριθμό των μη μηδενικών στοιχείων της, που αποτελεί την βάση του αλγορίθμου μας. Ο αλγόριθμος του ελάχιστου βαθμού, επιλέγει τον κόμβο με τον μικρότερο βαθμό από το γράφημα του πίνακα Α, τον διαγράφει και έπειτα προσθέτει ακμές στους γείτονές του που δεν είναι συνδεδεμένοι μεταξύ τους. Προκειμένου να εφαρμοστεί αυτός ο αλγόριθμος παράλληλα, η κάθε διεργασία βρίσκει τον κόμβο με τον μικρότερο βαθμό, από αυτούς που έχει αναλάβει και στέλνει τον βαθμό του στην κεντρική διεργασία. Η 66

79 ΚΕΦΑΛΑΙΟ 4 ΥΛΟΠΟΙΗΣΗ κεντρικής διεργασία συλλέγει αυτά τα δεδομένα από κάθε διεργασία και με την σειρά της βρίσκει την διεργασία που της έστειλε τον μικρότερο βαθμό, δηλαδή βρίσκει τον μικρότερο από τους μικρότερους βαθμούς. Αφού γίνει η επιλογή του μικρότερου βαθμού, η κεντρική διεργασία, ενημερώνει τις υπόλοιπες για την επιλογή της. Επίσης σημειώνει τον κόμβο που επιλέχθηκε προκειμένου να δημιουργήσει τον μετάθεσης. Στην συνέχεια, η διεργασία που έχει τον κόμβο με τον μικρότερο βαθμό, θα πρέπει να στείλει σε όλες τις άλλες τους γείτονές του προκειμένου να γίνουν οι απαραίτητες προσθήκες νέων γειτόνων για να συνεχίσει η διαδικασία. Πριν την αποστολή του κόμβου, δηλαδή της στήλης με τα λιγότερα μη μηδενικά στοιχεία, η λίστα μετατρέπεται σε πίνακα εφόσον το openmpi δεν παρέχει την δυνατότητα αποστολής λίστας. Η όλη διαδικασία στις διεργασίες κρατάει έως ότου επιλεγούν όλοι οι κόμβοι που έχει αναλάβει. 67

80 ΚΕΦΑΛΑΙΟ 4 ΥΛΟΠΟΙΗΣΗ Εικόνα 4.3 Διάγραμμα ροής για τον αλγόριθμο που εκτελείται στην κεντρική διεργασία!mda_fin(size) is a counter for how many vertices have been selected!from a process!permutation(n) and permutationt(n) are permutation matrix and its!inversion matrix mda_fin= permutation= permutationt= 68

81 ΚΕΦΑΛΑΙΟ 4 ΥΛΟΠΟΙΗΣΗ DO j=1,n DO i=1,size-1 IF (process i has columns) THEN RECEIVE minimum degree from process i na put it to allminde(i) ELSE allminde(i)=n+1 Find the minimum degree from the received DO i=1,size-1 IF (process i has columns) THEN SEND process rank who has minimum degree mda_fin(process with minimum degree vertex)=mda_fin(minrank(1))+1 RECEIVE vertex number with minimum degree and put it to permutationt matrix permutation(permutationt(j))=j 69

82 ΚΕΦΑΛΑΙΟ 4 ΥΛΟΠΟΙΗΣΗ Eικόνα 4.4 Ψευδοκώδικας για το βήμα 1.2 που εκτελείται στην κεντρική διεργασία Εικόνα 4.5 Διάγραμμα ροής για τον αλγόριθμο που εκτελείται στις υπόλοιπες διεργασίες!deg(n) is an array where stored the degrees of process's vertices!minde(2) is an array where stored vertex number and its degree!mycoldel is a counter for deleted vertices mycoldel= DO WHILE(mycoldel /= total number of process's vertices) Find which vertex has the minimum degree 7

83 ΚΕΦΑΛΑΙΟ 4 ΥΛΟΠΟΙΗΣΗ minde(1)=vertex number minde(2)=deg(minde(1)) SEND minde(2) to root process RECEIVE the process's rank who has the vertex with minimum degree IF (rank == the process's rank who has the vertex with minimum degree) THEN SEND vertex number to root process Convert list to array delete_column mycoldel=mycoldel+1 DO i=,size-1 IF (i /= rank) THEN SEND delete_column to process i IF (mycoldel /= total number of process's vertices) THEN RECEIVE delete_column vertex with minimum degree 71 from process who has the

84 ΚΕΦΑΛΑΙΟ 4 ΥΛΟΠΟΙΗΣΗ DO i=,(total number of vertices)-mycoldel IF ( delete_column(column i of process) /= ) DO WHILE list has elements IF (delete_column(list element%row) == ) THEN temp_deg=temp_deg+1 delete_column(list element %row)=1 list element=>list element%next deg(i) = delete_column degree + temp_deg - 1 Remake list of column Eικόνα 4.6 Ψευδοκώδικας για το βήμα 1.2 που εκτελείται στις υπόλοιπες διεργασίες Το αποτέλεσμα της διαδικασίας αυτής, είναι ένα διάνυσμα μεγέθους όσο και το πλήθος των στηλών του πίνακα Α που σημειώνονται οι μετατοπίσεις των στηλών. Αυτό αρκεί καθώς ο πίνακας μετάθεσης, όπως αναφέρθηκε προηγούμενα, είναι ένας δυαδικός πίνακας. Επίσης, δημιουργείται και ο ανάστροφος πίνακας ( P T ) που μας είναι επίσης χρήσιμος. 72

85 ΚΕΦΑΛΑΙΟ 4 ΥΛΟΠΟΙΗΣΗ Το βήμα αυτό ολοκληρώνεται με την αποστολή του πίνακα μετάθεσης σε όλες τις διεργασίες. ΒΗΜΑ 2 : ΝΕΑ ΑΝΤΙΣΤΟΙΧΙΣΗ ΣΤΗΛΩΝ ΣΤΟΥΣ ΕΠΕΞΕΡΓΑΣΤΕΣ Με την εύρεση της νέας δομής του πίνακα Α, αρχικά θα πρέπει να ξαναφτιάξουμε τον πίνακα Α και στην συνέχεια να αντιστοιχίσουμε τις στήλες του πίνακα εκ νέου με βάση το δένδρο εξάλειψης (elimination tree), όπως περιγράφτηκε και στην θεωρία. Το πρόβλημα σε αυτό το σημείο είναι οτι η δημιουργία του δένδρου εξάλειψης βασίζεται στην δομή του πίνακα L και επομένως θα πρέπει να προηγηθεί το βήμα του Symbolic Factorization. Όπως αναφέρθηκε και στην εισαγωγή όμως, σκοπός μας είναι η παράληψη αυτού του βήματος. Σε θεωρητικό επίπεδο λοιπόν, αρχικά θα βρίσκαμε την δομή του πίνακα L, ουσιαστικά δηλαδή θα βρίσκαμε τα στοιχεία εκείνα που θα ήταν μη μηδενικά στον πίνακα L ενώ τα αντίστοιχα στον πίνακα A θα ήταν μηδενικά, έπειτα θα βρίσκαμε το δένδρο εξάλειψης, το οποίο αποτελεί ένα είδος διαγράμματος εξάρτησης δεδομένων (data dependency graph). Βασιζόμενοι σε αυτό, θα ακολουθούσαμε έναν αλγόριθμο, που αναθέτει σε κάθε γονέα του δένδρου μια διεργασία, ενώ οι απόγονοί του ανατίθενται στην ίδια διεργασία, γνωστός και ως subtree to subcube. Όμως, μη έχοντας την δομή του δένδρου, θα ακολουθήσουμε την λογική του αλγορίθμου wrap mapping. Εφαρμόζοντας τον αλγόριθμο, παρατηρούμε, όπως βλέπουμε και στην εικόνα 4.7, οτι κάθε κόμβος του δένδρου ανατίθεται σε διαφορετική διεργασία. 73

86 ΚΕΦΑΛΑΙΟ 4 ΥΛΟΠΟΙΗΣΗ Εικόνα 4.7 wrap mapping αλγόριθμος, πηγή [1] Η εύρεση των κόμβων που είναι φύλλα είναι σημαντική, καθώς από αυτές τις στήλες θα γίνει η εκκίνηση του αλγορίθμου για τον υπολογισμό των στοιχείων του πίνακα L, αφού δεν εξαρτώνται από τα στοιχεία κάποιας άλλης στήλης. Θα στηριχθούμε στο [4] όπου γίνεται η παρουσίαση ενός αλγορίθμου για την εύρεση του elimination tree από την δομή του πίνακα A. Στον αλγόριθμο αυτό δομείται αρχικά ένα δένδρο με βάση την δομή του πίνακα Α, το οποίο καλείται ψεύτικο, και στην συνέχεια με βάση αυτό γίνεται η εύρεση του σωστού δένδρου. Ο αλγόριθμος αυτός στηρίζεται σε ορισμένα λήμματα τα οποία χρησιμοποιούμε και εμείς στην υλοποίηση του παράλληλου αλγορίθμου. Αρχικά λοιπόν αποδεικνύεται οτι ένας κόμβος φύλλο του αληθινού δένδρου είναι φύλλο και του ψεύτικου ενώ το αντίθετο δεν ισχύει. Για να είναι ένα κόμβος φύλλο του ψεύτικου δένδρου κόμβος φύλλο και στο αληθινό θα πρέπει όλα τα στοιχεία της αντίστοιχης 74

87 ΚΕΦΑΛΑΙΟ 4 ΥΛΟΠΟΙΗΣΗ γραμμής πριν το διαγώνιο στοιχείο να είναι μηδενικά. Τότε ο κόμβος είναι φύλλο και στο δένδρο εξάλειψης. Με βάση λοιπόν όσα αναφέρθηκαν παραπάνω, δεν είναι απαραίτητη η εύρεση της δομής του δένδρου εξάλειψης, αλλά μόνο των κόμβων που έχουν βαθμό ένα. Όλοι οι άλλοι κόμβοι μπορούν να αντιστοιχιστούν με την λογική που παρουσιάζεται στο [6] όπου η στήλη i αντιστοιχίζεται σε μια διεργασία βάση της ακόλουθης σχέσης {i mod n}th process όπου n ο αριθμός των διεργασιών. Επομένως, σε αυτό το βήμα η κεντρική διεργασία, με χρήση του παραπάνω τύπου στέλνει τις στήλες του Α στην διεργασία που έχουν αντιστοιχηθεί. Στην συνέχεια, ο κάθε διεργασία δημιουργεί την αντίστοιχη λίστα για κάθε μία στήλη, σημειώνοντας τις γραμμές στις οποίες έχει τοποθετήσει στοιχεία. Τέλος η κάθε διεργασία στέλνει στην κεντρική διεργασία πόσα στοιχεία έχει τοποθετήσει σε κάθε γραμμή, και αυτή υπολογίζει τα μη μηδενικά στοιχεία κάθε γραμμής μέχρι το διαγώνιο στοιχείο. Τα αποτελέσματα αυτά στέλνονται σε όλες τις διεργασίες και πλέον όλα είναι έτοιμα για να ξεκινήσει η επόμενη φάση, ο υπολογισμός των στοιχείων του πίνακα L. 75

88 ΚΕΦΑΛΑΙΟ 4 ΥΛΟΠΟΙΗΣΗ Εικόνα 4.8 Διάγραμμα ροής του βήματος 2!nmod(n) is array with the number of non-zero at each row!ncols how many columns has the process nmod= ncols= IF (rank==) THEN DO i=,n-1 SEND column i of mod((i),size-1)+1 ELSE 76 A to process with rank

89 ΚΕΦΑΛΑΙΟ 4 ΥΛΟΠΟΙΗΣΗ c= DO i=,n-1 IF (mod((i),size-1)+1==rank) THEN c=c+1 RECEIVE a column A from root ncols=ncols+1 Convert received column to list Calculate non-zero elements at each row and store to nmod Root collects nmod from each process and summarize them Root send total nmod to all processes Εικόνα 4.9 Ψευδοκώδικας του βήματος 2 ΒΗΜΑ 3 : ΥΠΟΛΟΓΙΣΜΟΣ ΤΩΝ ΣΤΟΙΧΕΙΩΝ ΤΟΥ ΠΙΝΑΚΑ L Για τον υπολογισμών των στοιχείων του πίνακα L θα χρησιμοποιήσουμε τον αλγόριθμο fan out όπως αυτός παρουσιάζεται στο [2]. Η ίδια λογική θα χρησιμοποιηθεί και για το τέταρτο βήμα όπου γίνεται η τριγωνική επίλυση. Όπως σε όλα τα βήματα, έτσι και εδώ, η κεντρική διεργασία δεν παίρνει ρόλο στους υπολογισμούς. Όταν μια διεργασία τελειώνει με τους υπολογισμούς κάποιας στήλης, την στέλνει στις υπόλοιπες προκειμένου να την χρησιμοποιήσουν. Όμως θα πρέπει να σταλεί και στον εαυτό της, καθώς ο αλγόριθμος ενεργοποιείται από τα εισερχόμενα μηνύματα. Αυτή η δυνατότητα όμως δεν παρέχεται από το openmpi, και γι αυτό η κεντρικής διεργασία αναλαμβάνει 77

90 ΚΕΦΑΛΑΙΟ 4 ΥΛΟΠΟΙΗΣΗ αυτή την αποστολή. Εικόνα 4.1 Δομικό διάγραμμα του αλγορίθμου fan-out IF (rank /=) THEN leaves= DO i=1,ncols IF (nmod(column i of process) == ) THEN leaves=leaves+1 cdiv(j) SEND column to other processes ncols=ncols - leaves 78

91 ΚΕΦΑΛΑΙΟ 4 ΥΛΟΠΟΙΗΣΗ DO WHILE (ncols > ) RECEIVE a column from an other process DO i=1,ncols IF (column i of process > incoming column ) THEN cmod(j, k) nmod(column i of process)=nmod(column i of process)-1 IF (nmod(column i of process) == ) THEN cdiv(j) SEND column to other processes ncols=ncols-1 ELSE DO i=,n-1 RECEIVE a column from a process Store to A Εικόνα 4.11 Ψευδοκώδικας του αλγορίθμου fan-out Όπως βλέπουμε στον αλγόριθμο, στο πρώτο κομμάτι του, η κάθε διεργασία βρίσκει τις στήλες που είναι φύλλα στο δένδρο εξάλειψης, δηλαδή οι αντίστοιχες γραμμές δεν έχουν μη μηδενικά στοιχεία μέχρι το διαγώνιο στοιχείο και επομένως ο υπολογισμός του 79

92 ΚΕΦΑΛΑΙΟ 4 ΥΛΟΠΟΙΗΣΗ στοιχείου του πίνακα L με βάση τον τύπο 3.8, δεν εξαρτάται από άλλες στήλες, και υπολογίζει τα στοιχεία της στήλης. Όταν τελειώσει με τους υπολογισμούς, η στήλη στέλνεται σε όλες τις άλλες διεργασίες, στην κεντρική για την συλλογή των στοιχείων, και στις υπόλοιπες για να την χρησιμοποιήσουν για τους υπολογισμούς τους. Πάντα θα υπάρχει κάποια τέτοια στήλη και αυτή είναι σίγουρα η πρώτη, αν δεν προκύψει κάποια άλλη από την αναδιάταξή του πίνακα A. Όλα τα στοιχεία που χρειάζονται για το πρώτο τμήμα, έχουν υπολογιστεί από το προηγούμενο βήμα. Στην συνέχεια, με βάση τις στήλες που στάλθηκαν από το πρώτο κομμάτι του κώδικα ξεκινάει η διαδικασία για τις υπόλοιπες στήλες. Επειδή δεν έχει γίνει δόμηση του πίνακα L, προκειμένου να γνωρίζουμε τα μη μηδενικά στοιχεία θα κάνουμε μια μικρή αλλαγή στον αλγόριθμο με βάση αυτόν που χρησιμοποιείται για τις πυκνές μήτρες και παρουσιάζεται και στο [6]. Έτσι λοιπόν θα κάνουμε τους ελέγχους για την ύπαρξη μη μηδενικών στοιχείων εδώ παράλληλα με τους υπολογισμούς κερδίζοντας κάποιες επαναλήψεις από το να πραγματοποιούσαμε το Symbolic Factorization μεμονωμένα σαν ένα ξεχωριστό βήμα. Για κάθε στήλη i που έρχεται από κάποια άλλη διεργασία λοιπόν, ελέγχουμε αν τα μη μηδενικά στοιχεία, και συνεχίζουμε τον αλγόριθμο με τους υπολογισμούς. Οι επαναλήψεις είναι ίσες με τον ταξικό αριθμό της στήλης μείον ένα. Όταν ολοκληρωθούν οι επαναλήψεις, συνεχίζουμε στην συνάρτηση cdiv, όπως έχει παρουσιαστεί στο κεφάλαιο 3, και τέλος στέλνουμε την στήλη στις υπόλοιπους διεργασίες. Η διαδικασία αυτή επαναλαμβάνεται μέχρι να τελειώσουν όλες οι διεργασίες με τις στήλες που έχουν αναλάβει. Μετά το πέρας του βήματος αυτού, η κάθε διεργασία θα έχει κάποιες στήλες του πίνακα L. Οι στήλες αυτές θα χρησιμοποιηθούν στην επόμενη φάση της τριγωνικής λύσης, όπου θα ακολουθήσουμε μια παρόμοια λογική για την εύρεση του διανύσματος x που είναι και ο στόχος μας. ΒΗΜΑ 4 : ΤΡΙΓΩΝΙΚΗ ΛΥΣΗ Το τελευταίο βήμα για την εύρεση του διανύσματος x είναι η τριγωνική λύση. Γι αυτό το βήμα πρέπει να λυθούν τρεις γραμμικές εξισώσεις όπως περιγράφονται και στην αντίστοιχη θεωρία. Στην πράξη ωστόσο, χρειάζεται να λύσουμε τις δύο από αυτές, καθώς η τρίτη αποτελεί απλή μετακίνηση των στοιχείων ενός διανύσματος. Παρατηρώντας καλύτερα το σύστημα που έχουμε να λύσουμε βλέπουμε οτι: 8

93 ΚΕΦΑΛΑΙΟ 4 [ ΥΛΟΠΟΙΗΣΗ ][ ] [ ] a11 a21 a22 a31 a32 a33 a41 a 42 a 43 a 44 y1 b1 y2 b = 2 y3 b3 y4 b4 a 11 y1=b1 a 21 y1 + a22 y 2=b2 (4.2) a31 y 1+a32 y 2 + a33 y 3=b 3 a 41 y1 + a42 y 2 + a43 y 3 +a 44 y 4=b4 (4.1) Επομένως για την εύρεση κάποιου στοιχείου του διανύσματος y θα πρέπει να έχουμε πρώτα υπολογίσει όλα τα προηγούμενα, δηλαδή αν θέλουμε να υπολογίσουμε το θα πρέπει να έχουμε υπολογίσει πρώτα τα y1 και y3 y 2. Όμως στην περίπτωση που έχουμε μηδενικά στοιχεία, κάποια στοιχεία του διανύσματος y, μπορούν να υπολογιστούν χωρίς να πρέπει να υπολογιστούν όλα τα προηγούμενα στοιχεία. Σε αυτή την περίπτωση λοιπόν έχουμε κάποιο επίπεδο παραλληλοποίησης. Σύμφωνα με το [5] θα έπρεπε να βρίσκαμε και σε αυτή την περίπτωση κάποια καλή διάταξη των στοιχείων του πίνακα, προκειμένου να έχουμε όσο το δυνατόν καλύτερο επίπεδο παράλληλης επεξεργασίας, όμως εμείς θα χρησιμοποιήσουμε την διάταξη του που έχει προκύψει από το προηγούμενο βήμα. Επομένως γίνεται σαφές οτι ο αλγόριθμος που παρουσιάστηκε στο προηγούμενο βήμα μπορεί να χρησιμοποιηθεί και εδώ με την ίδια ακριβώς λογική. Πιο συγκεκριμένα, αρχικά θα βρούμε τις γραμμές εκείνες που έχουν όλα τα στοιχεία τους μηδέν εκτός από το στοιχείο της διαγωνίου, τα οποία δεν απαιτούν κάποιο προηγούμενο στοιχείο του διανύσματος. Αν για παράδειγμα τα στοιχεία τότε ο υπολογισμός του y3 δεν απαιτεί τα στοιχεία a 31 και a 32 ήταν μηδενικά y1 και y 2. Επομένως μπορούμε να το υπολογίσουμε αμέσως. Στην συνέχεια υπολογίζουμε όλα τα γινόμενα a i j y j και τα στοιχεία στέλνονται στις υπόλοιπες διεργασίες, προκειμένου να το χρησιμοποιήσουν για τους δικούς τους υπολογισμούς. Τα στοιχεία του διανύσματος y που μπορούν να υπολογιστούν μόνα τους και ανεξάρτητα συμπίπτουν με τις στήλες του πίνακα L που μπορούν να υπολογιστούν χωρίς να χρειάζονται κάποια προηγούμενη στήλη του, και επομένως είναι τα φύλλα του elimination tree που έχουν προκύψει από το δεύτερο βήμα. Για την επίλυση του δεύτερου γραμμικού συστήματος, τα πράγματα δεν αλλάζουν πολύ. Η διαφορά είναι στο γεγονός οτι δεν χρησιμοποιείται ο πίνακας L, αλλά ο ανάστροφός του και για να μην χάνουμε χρόνο στους υπολογισμούς χρησιμοποιούμε τα ίδια δεδομένα, δηλαδή αυτά του πίνακα L. Εδώ τα στοιχεία που μπορούν να ξεκινήσουν τον 81

94 ΚΕΦΑΛΑΙΟ 4 ΥΛΟΠΟΙΗΣΗ αλγόριθμο, δηλαδή μπορούν να υπολογιστούν πρώτα και ανεξάρτητα από τα υπόλοιπα, βρίσκονται με βάση τα μη μηδενικά στοιχεία των στηλών του πίνακα L. Αν μια στήλη έχει όλα τα στοιχεία της μηδέν, εκτός από αυτό της διαγωνίου, μπορεί να ξεκινήσει. ΔΕΥΤΕΡΗ ΥΛΟΠΟΙΗΣΗ Στην δεύτερη αυτή υλοποίηση θα γίνει εφαρμογή των τριών τελευταίων βημάτων της προηγούμενης υλοποίησης. Δεν θα αναδιατάξουμε τον πίνακα Α και αυτό μας δίνει το πλεονέκτημα να γνωρίζουμε εκ των προτέρων την δομή των πινάκων Α και L, με αποτέλεσμα την μείωση αρκετών επαναλήψεων. Επομένως αφενός παραλείπεται ένα βήμα, το οποίο όπως θα φανεί στο επόμενο κεφάλαιο, είναι χρονοβόρο αφετέρου μειώνεται αισθητά ο χρόνος εκτέλεσης άλλων τμημάτων του προγράμματος. Η αντίστοιχη σειριακή υλοποίηση δέχεται ταινιωτούς πίνακες (band matrix) που έχουν μία συγκεκριμένη δομή και αποκτούμε το πλεονέκτημα της γνώσης τον απαιτούμενων επαναλήψεων. Δεν χρειάζεται να παρουσιάσουμε κάτι περισσότερο, καθώς σε επίπεδο λογικής και διαγραμμάτων ροής, η υλοποίηση δεν διαφοροποιείται. 82

95 ΚΕΦΑΛΑΙΟ 4 ΥΛΟΠΟΙΗΣΗ 83

96 ΚΕΦΑΛΑΙΟ 5 : ΠΕΙΡΑΜΑΤΙΚΑ ΑΠΟΤΕΛΕΣΜΑΤΑ ΣΚΟΠΟΣ Στο κεφάλαιο αυτό θα παρουσιάσουμε τα αποτελέσματα των πειραματικών μετρήσεων. Θα δείξουμε την βελτίωση του χρόνου της συνάρτησης Cholesky, αλλά και της εφαρμογής συνολικά. Επίσης θα γίνει σαφής, ο λόγος, που μας οδήγησε σε δεύτερη υλοποίηση, προσαρμοσμένη περισσότερο στο σύστημα προς επίλυση.

97

98 ΚΕΦΑΛΑΙΟ 5 ΠΕΙΡΑΜΑΤΙΚΑ ΑΠΟΤΕΛΕΣΜΑΤΑ ΕΙΣΑΓΩΓΗ Σε αυτό το κεφάλαιο θα γίνει η παρουσίαση των πειραματικών μετρήσεων. Σκοπός είναι να εφαρμόσουμε ορισμένα παραδείγματα γραμμικών εξισώσεων, με σκοπό την παρατήρηση των συμπεριφορών και των πλεονεκτημάτων ή μειονεκτημάτων των παράλληλων αλγορίθμων. Σε θεωρητικό επίπεδο, ασχοληθήκαμε με αυτά τα ζητήματα στο κεφάλαιο 2. Θα πραγματοποιήσουμε 5 διαφορετικά παραδείγματα. Όπως έχει αναφερθεί στο κεφάλαιο 3, οι συναρτήσεις επιλύουν συστήματα γραμμικών εξισώσεων, A x=b Για κάθε παράδειγμα θα ορίσουμε έναν πίνακα Α (ταινιωτός πίνακες) και ένα διάνυσμα b, με τα ακόλουθα χαρακτηριστικά: πίνακας Α 1 θέσεων με ταινία 5 (37575 στοιχεία) και διάνυσμα b 1 θέσεων πίνακας Α 2 θέσεων με ταινία 1 (1515 στοιχεία) και διάνυσμα b 2 θέσεων πίνακας Α 3 θέσεων με ταινία 15 ( στοιχεία) και διάνυσμα b 3 θέσεων πίνακας Α 4 θέσεων με ταινία 2 (63 στοιχεία) και διάνυσμα b 4 θέσεων πίνακας Α 5 θέσεων με ταινία 25 ( στοιχεία) και διάνυσμα b 5 θέσεων Για την παράλληλη εφαρμογή θα εφαρμόσουμε τα παραπάνω παραδείγματα χρησιμοποιώντας 3 εως 8 επεξεργαστές. Τέλος θα δούμε το κέρδος στο χρόνο εκτέλεσης ολόκληρης της εφαρμογής της ρευστομηχανικής. ΣΕΙΡΙΑΚΗ ΕΦΑΡΜΟΓΗ Αρχικά θα μετρήσουμε την επίδοση της σειριακής συνάρτησης για τα παραδείγματα που αναφέρθηκαν στην εισαγωγή. Ο στόχος μας είναι, η παράλληλη έκδοση της μεθόδου, να 86

99 ΚΕΦΑΛΑΙΟ 5 ΠΕΙΡΑΜΑΤΙΚΑ ΑΠΟΤΕΛΕΣΜΑΤΑ είναι γρηγορότερη απο τους χρόνους που θα παρουσιαστούν εδώ. Εφαρμόζοντας λοιπόν τις παραπάνω εισόδους έχουμε τα επόμενα αποτελέσματα, Μέγεθος sec sec sec sec sec εισόδου Χρόνος εκτέλεσης Τα παραπάνω αποτελέσματα είναι αναμενόμενα. Ο χρόνος εκτέλεσης και η είσοδος του προβλήματος, όπως φαίνεται και από το επόμενο διάγραμμα, έχουν εκθετική σχέση. 12 Χρόνος Εκτέλεσης (sec) Στοιχεία Πίνακα Γράφημα 5.1 Χρόνος εκτέλεσης της σειριακής συνάρτησης σε σχέση με την είσοδο Αυτό είναι λογικό από την στιγμή που ο αλγόριθμος της συνάρτησης είναι Ο(n3). Στόχος μας είναι να βρεθούμε κάτω από αυτούς τους χρόνους. Δυστυχώς δεν μπορούμε να αποφύγουμε επαναλήψεις τύπου Ο(n 3), όμως μπορούμε να περιορίσουμε το μέγεθος του n, μέσω της κατανομής του προβλήματος σε περισσότερες από μια διεργασίες. Θα 87

100 ΚΕΦΑΛΑΙΟ 5 ΠΕΙΡΑΜΑΤΙΚΑ ΑΠΟΤΕΛΕΣΜΑΤΑ πρέπει ωστόσο να προσέξουμε, τον χρόνο που θα κερδίσουμε από τους βρόχους επανάληψης, να μην καλυφθεί από τα μηνύματα και τον συγχρονισμό. ΠΑΡΑΛΛΗΛΗ ΕΦΑΡΜΟΓΗ ΠΡΩΤΗ ΥΛΟΠΟΙΗΣΗ Στην πρώτη έκδοση του παράλληλου αλγορίθμου, όπως παρουσιάστηκε στο προηγούμενο κεφάλαιο, έγινε προσπάθεια για εφαρμογή της θεωρίας του 3ου κεφαλαίου παραμετρικά, να είναι δηλαδή δυνατή η επίλυση του συστήματος σε οποιαδήποτε δομή του πίνακα Α και αν έχουμε ως είσοδο. Όμως υπάρχουν δύο βήματα τα οποία καταναλώνουν αρκετό χρόνο και τελικώς η προσπάθεια αυτή απέτυχε. Από την στιγμή που δεν πετύχαμε το επιθυμητό αποτέλεσμα αναλύουμε το πρόβλημα αυτό προκειμένου να βρούμε λύσεις που θα διορθώσουν το πρόβλημα και θα μειώσουν τον χρόνο εκτέλεσης. Οι παρατηρήσεις αυτές οδήγησαν στην δεύτερη υλοποίηση. Οι χρόνοι που μετρήθηκαν με αυτή την υλοποίηση ήταν αρκετά μεγαλύτεροι απο τους αντίστοιχους χρόνους της σειριακής εφαρμογής. Ενδεικτικά θα παρουσιάσουμε τους χρόνους εκτέλεσης για 8 διαθέσιμους επεξεργαστές-διεργασίες, Μέγεθος sec sec >12. sec >12. sec >12. sec εισόδου Χρόνος εκτέλεσης Με βάση τους χρόνους ανάμεσα στα βήματα του αλγορίθμου, αυτός χωρίζεται όπως φαίνεται στο επόμενο σχήμα. 88

101 ΚΕΦΑΛΑΙΟ 5 ΠΕΙΡΑΜΑΤΙΚΑ ΑΠΟΤΕΛΕΣΜΑΤΑ % 2% 42% Βήμα 1 56% Βήμα 2 Βήμα 3 Βήμα 4 Γράφημα 5.2 Ανάλυση του χρόνου εκτέλεσης της πρώτης υλοποίησης Από το παραπάνω γράφημα, παρατηρούμε οτι τα βήματα 3 και 4 είναι αυτά που καταναλώνουν σχεδόν όλο τον χρόνο. Επομένως θα πρέπει να εστιάσουμε σε αυτά τα δύο βήματα για την βελτίωση του χρόνου εκτέλεσης. Πριν περάσουμε στις πειραματικές μετρήσεις της δεύτερης υλοποίησης, θα πρέπει να σχολιάσουμε τα παραπάνω αποτελέσματα. Ο λόγος για τον μεγάλο χρόνο εκτέλεσης (σε σχέση με τον αντίστοιχο σειριακό), είναι κυρίως η μη γνώση της δομής του πίνακα Α, όπως αναφέραμε και στο προηγούμενο κεφάλαιο. Επομένως, μπορούμε να βελτιώσουμε τα δύο μεγάλα τμήματα του αλγορίθμου, ενώ το βήμα 1, που πραγματοποιεί την αναδιάταξη του πίνακα Α, είναι περιττό. Βασιζόμενοι λοιπόν στα παραπάνω συμπεράσματα, οδηγηθήκαμε στην δεύτερη υλοποίηση του αλγορίθμου. ΔΕΥΤΕΡΗ ΥΛΟΠΟΙΗΣΗ Στην δεύτερη υλοποίηση του αλγόριθμου, έγινε προσπάθεια για επιτάχυνση του χρόνου εκτέλεσης του προβλήματος, σε σχέση με τα αποτελέσματα και τα συμπεράσματα της πρώτης έκδοσης. Η γνώση της δομής του πίνακα μας δίνει την ευχέρεια της μείωσης των επαναλήψεων αφού πολλές από αυτές, στην πρώτη έκδοση, γίνονται άνευ λόγου αφού αφορούν μηδενικά στοιχεία και δεν μπορούν να αγνοηθούν. Για την συγκεκριμένη έκδοση έγιναν οι επόμενες μετρήσεις: 89

102 ΚΕΦΑΛΑΙΟ 5 ΠΕΙΡΑΜΑΤΙΚΑ ΑΠΟΤΕΛΕΣΜΑΤΑ Επεξεργαστές sec sec sec sec sec sec sec sec 5.91 sec sec sec sec sec sec sec sec sec 9.61 sec sec sec sec sec sec sec sec sec sec sec 3.53 sec sec Σε αυτό το σημείο δεν θα κάνουμε σύγκριση με την σειριακή εφαρμογή. Αυτό θα γίνει στην συνέχεια. Εδώ θα δούμε την συμπεριφορά της παράλληλης υλοποίησης. Θα παρουσιάσουμε τα παραπάνω διαγράμματα σε δύο διαγράμματα 1 Χρόνος Αριθμός Επεξεργαστών Γράφημα 5.3 Χρόνος εκτέλεσης κατά την αύξηση του αριθμού των επεξεργαστών 9

103 ΚΕΦΑΛΑΙΟ 5 ΠΕΙΡΑΜΑΤΙΚΑ ΑΠΟΤΕΛΕΣΜΑΤΑ 6 Χρόνος Εκτέλεσης Είσοδος Γράφημα 5.4 Χρόνος εκτέλεσης κατά την αύξηση της εισόδου Στο πρώτο γράφημα, βλέπουμε την συμπεριφορά του κάθε παραδείγματος καθώς αυξάνουμε τον αριθμό των επεξεργαστών-διεργασιών στους οποίους θα κατανείμουμε το πρόβλημα. Σε αυτό παρατηρούμε, οτι από κάποιο σημείο και μετά δεν έχουμε μεγάλο κέρδος ενώ σε ορισμένες περιπτώσεις έχουμε και καθυστέρηση. Στο δεύτερο γράφημα, βλέπουμε την αντίδραση του παράλληλου αλγορίθμου όταν αυξάνουμε την είσοδο ενώ έχουμε τον ίδιο αριθμό από διαθέσιμους επεξεργαστές. Εδώ βλέπουμε οτι το κέρδος στον χρόνο εκτέλεσης είναι μεγαλύτερο όταν καθώς αυξάνουμε το μέγεθος της εισόδου, αυξάνουμε αντίστοιχα και τον αριθμό των διαθέσιμων επεξεργαστών. Δηλαδή, στο πρόβλημα με τον πίνακα των 3 στηλών δεν παρατηρούμε μεγάλο κέρδος καθώς αυξάνουμε τους επεξεργαστές. Αντίθετα, στο προβλημάτων 5 στηλών βλέπουμε οτι υπάρχει μεγαλύτερο κέρδος όταν έχουμε 5 επεξεργαστές σε σχέση με τους 3. Τα παραπάνω συμπεράσματα ήταν αναμενόμενα καθώς η πρώτη παρατήρηση προκύπτει από τον νόμο του Amdahl ενώ η δεύτερη από τον νόμο του Gustafson. ΣΥΓΚΡΙΣΗ ΕΚΔΟΣΕΩΝ ΣΕΙΡΙΑΚΗΣ ΚΑΙ ΠΑΡΑΛΛΗΛΗΣ ΥΛΟΠΟΙΗΣΗΣ Σε αυτό το σημείο θα συγκρίνουμε την συμπεριφορά του σειριακού αλγορίθμου με τον παράλληλο της δεύτερης υλοποίησης και θα υπολογίσουμε το κέρδος που έχουμε όταν λύνουμε το πρόβλημα παράλληλα. Η σύγκριση με την πρώτη υλοποίηση δεν έχει κάποιο νόημα, αφού από τα ενδεικτικά αποτελέσματα που παρουσιάστηκαν, παρατηρούμε οτι δεν έχουμε κέρδος στον χρόνο εκτέλεσης. 91

104 ΚΕΦΑΛΑΙΟ 5 ΠΕΙΡΑΜΑΤΙΚΑ ΑΠΟΤΕΛΕΣΜΑΤΑ Στον επόμενο πίνακα θα υπολογίσουμε την επιτάχυνση και την αποδοτικότητα, σύμφωνα με τους τύπους (2.1) και (2.5) που παρουσιάστηκαν στο 2ο κεφάλαιο. Για την επιτάχυνση έχουμε Επεξεργαστές Ενώ για την αποδοτικότητα έχουμε Επεξεργαστές Απο τους παραπάνω δύο πίνακες βλέπουμε, σαν πρώτη παρατήρηση, οτι δεν η παραλληλοποίηση του προβλήματος δεν επιφέρει ταχύτερο χρόνο για όλες τις εισόδους, αλλά από κάποιο μέγεθος εισόδου και μετά. Στα παραδείγματα που παρουσιάσαμε βλέπουμε οτι για στοιχεία δεν έχουμε επιτάχυνση ενώ για 1515 στοιχεία και περισσότερα έχουμε. Επίσης, παρατηρούμε την χρησιμότητα των επεξεργαστών σύμφωνα με τον πίνακα της αποδοτικότητας. Αν και έχουμε μείωση του χρόνου εκτέλεσης καθώς οι διαθέσιμοι επεξεργαστές αυξάνονται, βλέπουμε οτι έχουμε μεγαλύτερη απόδοση στους 3 επεξεργαστές. Επομένως, για τα προβλήματα τα οποία παρουσιάσαμε εδώ, αν και έχουμε μείωση του χρόνου εκτέλεσης, αυτή η μείωση δεν είναι αρκετά μεγάλη για να απαιτεί την αύξηση της υπολογιστικής ισχύς πέραν των 3 επεξεργαστών. ΣΥΓΚΡΙΣΗ ΕΦΑΡΜΟΓΗΣ ΡΕΥΣΤΟΜΗΧΑΝΙΚΗΣ ΓΙΑ ΠΑΡΑΛΛΗΛΗ ΚΑΙ 92

105 ΚΕΦΑΛΑΙΟ 5 ΠΕΙΡΑΜΑΤΙΚΑ ΑΠΟΤΕΛΕΣΜΑΤΑ ΣΕΙΡΙΑΚΗ ΕΚΤΕΛΕΣΗ Εδώ θα δούμε τις επιδόσεις της εφαρμογής συνολικά. Το παράδειγμα που θα χρησιμοποιήσουμε είναι για έναν πίνακα 76 στήλες και συνολικά στοιχείων. Τα αποτελέσματα τα βλέπουμε στον επόμενο πίνακα Επεξεργαστές Χρόνος Εκτέλεσης (sec) Επιτάχυνση Αποδοτικ- ότητα Στο επόμενο γράφημα βλέπουμε τον χρόνο εκτέλεσης, σε συνάρτηση με το αριθμό των διαθέσιμων επεξεργαστών: 14 Χρόνος Εκτέλεσης (sec) Αριθμός επεξεργαστών Γράφημα 5.5 Χρόνος εκτέλεσης σε συνάρτηση με τον αριθμό των επεξεργαστών Από τα παραπάνω αποτελέσματα βλέπουμε οτι έχουμε μεγαλύτερη αποδοτικότητα όταν κατανέμουμε την εφαρμογή σε 3 επεξεργαστές - διεργασίες, που ήταν αναμενόμενο. ΣΥΜΠΕΡΑΣΜΑΤΑ Η παρούσα διπλωματική εργασία, είχε ως σκοπό να αναλύσει τα πλεονεκτήματα και τα 93

106 ΚΕΦΑΛΑΙΟ 5 ΠΕΙΡΑΜΑΤΙΚΑ ΑΠΟΤΕΛΕΣΜΑΤΑ μειονεκτήματα του παράλληλου προγραμματισμού. Για τον λόγο αυτό πήραμε ένα πρόγραμμα, το οποίο απαιτεί αρκετό χρόνο για την εκτέλεσή του και έχει νόημα η ανάλυση του και η προσπάθεια για την μείωσή του. Το συγκεκριμένο πρόγραμμα, ασχολείται με την ρευστομηχανική και λεπτομέρειες του παρουσιάστηκαν στο 3ο κεφάλαιο. Μέσα από μια ανάλυση, καθαρά λογισμικού, βρέθηκε το κομμάτι των υπολογισμών που απαιτεί ένα μεγάλο μέρος του προγράμματος, και ήταν αυτό που προσπαθήσαμε να παραλληλοποιήσουμε. Τα αποτελέσματα αυτού του εγχειρήματος παρουσιάστηκαν προηγούμενα. Στο πρώτο και στο δεύτερο κεφάλαιο, παρουσιάσαμε, σε θεωρητικό επίπεδο, τα πλεονεκτήματα και τα μειονεκτήματα που θα έχουμε από την επεξεργασία μιας εφαρμογής παράλληλα. Αυτά τα ζητήματα θα πρέπει να δούμε αν ισχύουν στην πράξη, και πόσο επηρεάζουν την τελική απόδοση μιας παράλληλης εφαρμογής. Όπως φάνηκε και από τα αποτελέσματα των πειραματικών μετρήσεων, υπάρχει πλήρη επαλήθευση των νόμων του Gustafson και του Amdahl. Είδαμε επίσης, οτι η παράλληλη επεξεργασία δεν οδηγεί πάντα σε γρηγορότερα προγράμματα. Το ερώτημα λοιπόν που τίθεται είναι αν η παράλληλη επεξεργασία μιας εφαρμογής οδηγεί σε γρηγορότερα αποτελέσματα ώστε να αξίζει τον κόπο κάποιος να ασχοληθεί με αυτήν. Μέσα από την εμπειρία που αποκτήθηκε κατά την εκπόνηση της διπλωματικής εργασίας αλλά και από τα αποτελέσματα που παρουσιάστηκαν βλέπουμε οτι αξίζει ανάλογα με πρόβλημα και το μέγεθός του. 94

107 ΚΕΦΑΛΑΙΟ 5 ΠΕΙΡΑΜΑΤΙΚΑ ΑΠΟΤΕΛΕΣΜΑΤΑ 95

108 ΠΑΡΑΡΤΗΜΑ Α MESSAGE PASSING INTERFACE (MPI) ΠΑΡΑΡΤΗΜΑ Α MESSAGE PASSING INTERFACE (MPI) Το MPI είναι ένα πρωτόκολλο για την ανταλλαγή μηνυμάτων μεταξύ διεργασιών. Δίνει την δυνατότητα για ανταλλαγή μηνυμάτων μεταξύ δυο συγκεκριμένων διεργασιών, αποστολή μηνυμάτων σε όλες τις διεργασίες και συγχρονισμού. Είναι κατάλληλο για συστήματα με αρχιτεκτονική κατανεμημένης μνήμης όμως μπορεί να χρησιμοποιηθεί και για συστήματα κοινής μνήμης καθώς επίσης και για υβριδικά συστήματα που συνδυάζουν τις δύο προηγούμενες αρχιτεκτονικές (υπολογιστές συνδεδεμένοι μεταξύ τους, ο καθένας εκ των οποίων έχει αρχιτεκτονική κοινής μνήμης). Το πρωτόκολλο παρέχεται για τις γλώσσες προγραμματισμού C/C++ και Fortran. ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ ΜΕ ΧΡΗΣΗ MPI Ένα πρόγραμμα με χρήση του MPI δεν διαφέρει πολύ από ένα κοινό πρόγραμμα για εκτέλεση σε σειριακό επεξεργαστή. Αυτό που αλλάζει είναι το γεγονός οτι θα πρέπει να καθοριστεί το τι θα εκτελέσει η κάθε διεργασία, δηλαδή αν κάποιο κομμάτι του προγράμματος θα το εκτελέσουν όλες οι διεργασίες, κάποιες από αυτές ή μια συγκεκριμένη. Η διαφοροποίηση αυτή μπορεί να γίνει με την χρήση του rank, που είναι ουσιαστικά η ταυτότητα μιας διεργασίας. Θα πρέπει να τονίσουμε οτι όλες οι διεργασίες εκτελούν τις ίδιες εντολές (Single Program Multiple Data). Αρχικά θα πρέπει να καλέσουμε την βιβλιοθήκη του MPI προκειμένου να μπορέσουμε να κάνουμε χρήση των συναρτήσεων του πρωτοκόλλου. Για να γίνει αυτό, ανάλογα με την γλώσσα προγραμματισμού που χρησιμοποιούμε έχουμε C include file #include "mpi.h" Fortran include file include 'mpif.h' Στην συνέχεια πρέπει να κάνουμε αρχικοποίηση του περιβάλλοντος. Στην ουσία εδώ ξεκινάει ο παράλληλος κώδικας. Πριν από αυτό το βήμα θα πρέπει να έχουμε ορίσει ορισμένες μεταβλητές χρήσιμες για το πρωτόκολλο, ειδικά στην περίπτωση που χρησιμοποιούμε Fortran καθώς έχει την ιδιαιτερότητα να γίνονται όλες οι δηλώσεις των μεταβλητών στην αρχή του προγράμματος. Μετά την αρχικοποίηση του περιβάλλοντος σειρά έχει ο κώδικας του προγράμματος. 96

109 ΠΑΡΑΡΤΗΜΑ Α MESSAGE PASSING INTERFACE (MPI) Εκεί γράφουμε τον κωδικά μας, όπως θα κάναμε και στην περίπτωση του σειριακού κώδικα, με την διαφορά οτι ανάλογα με το τι θέλουμε να κάνει η κάθε διεργασία έχουμε δομές ελέγχου με βάση το rank. Επίσης χρησιμοποιούμε τις συναρτήσεις του πρωτοκόλλου για την ανταλλαγή μηνυμάτων. Τέλος, πριν την λήξη του προγράμματος, θα πρέπει να τερματίσουμε το περιβάλλον. Αυτό είναι αρκετά σημαντικό καθώς μη τερματισμός του θα δημιουργήσει λανθασμένα και μη αναμενόμενα αποτελέσματα. Εικόνα Α1 - Η δομή ενος προγράμματος με την χρήση του πρωτοκόλλου MPI[1] COMMUNICATORS ΚΑΙ RANK Στο MPI, ένας communicator, είναι ένας τρόπος με τον οποίο μπορούμε να καθορίσουμε ομάδες διεργασιών, οι οποίες μπορούν να επικοινωνούν μεταξύ τους. Οι περισσότερες από τις συναρτήσεις του MPI χρησιμοποιούν ως όρισμά τους έναν communicator. Αρχικά ορίζεται ένας communicator που περιλαμβάνει όλες τις διεργασίες του συστήματος και [1] 97

110 ΠΑΡΑΡΤΗΜΑ Α MESSAGE PASSING INTERFACE (MPI) αυτός είναι ο MPI_COMM_WORLD. Σε κάθε communicator, η κάθε διεργασία, διαθέτει έναν μοναδικό αριθμό ως ταυτότητα, ο οποίος καλείται rank. Τον συγκεκριμένο αριθμό τον χρησιμοποιεί ο προγραμματιστής προκειμένου να καθορίσει τις διεργασίες που στέλνουν ή λαμβάνουν κάποιο μήνυμα ή για να καθοριστούν κάποιες ενέργειες που θα εκτελεστούν από μια συγκεκριμένη διεργασία (συνήθως με συνθήκες ελέγχου if (rank == 1) do this / if (rank!= ) do that). ΕΠΙΚΟΙΝΩΝΙΕΣ ΣΤΟ MPI Ένα βασικό κομμάτι στο MPI είναι η ανταλλαγή μηνυμάτων μεταξύ των διεργασιών. Αυτό διότι με αυτόν τον τρόπο είναι δυνατή η ανταλλαγή δεδομένων ή ο συγχρονισμός των διεργασιών που τρέχουν στον κάθε επεξεργαστή. Το MPI προσφέρει δύο βασικούς τρόπους επικοινωνίας, τις επικοινωνίες point to point, όπου επικοινωνούν μόνο δυο διεργασίες μεταξύ τους, και τις συλλογικές επικοινωνίες (collective communications), όπου υπάρχει επικοινωνία όλων των διεργασιών μεταξύ τους. Σημαντικό ρόλο στις επικοινωνίες παίζει ο Buffer του συστήματος, ο οποίος έχει τα δεδομένα από την αποστολή ενός μηνύματος και θα πρέπει να προσπελαστεί πριν κάποια άλλη αποστολή δεσμεύσει τον buffer αυτόν (αυτό είναι ευθύνη του προγραμματιστή, δηλαδή να έχει φροντίσει πριν την αποστολή κάποιου μηνύματος να έχει γίνει η ανάγνωση του προηγούμενου). Στην εικόνα Α2, παρουσιάζεται η διαδικασία λήψης ενός μηνύματος. Εικόνα Α2 Διαδικασία λήψης μηνύματος[13] Όπως βλέπουμε στην προηγούμενη εικόνα, κατά την διαδικασία λήψης ενός μηνύματος, η διεργασία παίρνει τα δεδομένα από τον buffer του συστήματος. Αν πριν πάρει αυτά τα 98

Παράλληλη Επεξεργασία Κεφάλαιο 1 Γιατί Παράλληλος Προγραμματισμός;

Παράλληλη Επεξεργασία Κεφάλαιο 1 Γιατί Παράλληλος Προγραμματισμός; Παράλληλη Επεξεργασία Κεφάλαιο 1 Γιατί Παράλληλος Προγραμματισμός; Κωνσταντίνος Μαργαρίτης Καθηγητής Τμήμα Εφαρμοσμένης Πληροφορικής Πανεπιστήμιο Μακεδονίας kmarg@uom.gr http://eos.uom.gr/~kmarg Αρετή

Διαβάστε περισσότερα

Οργάνωση επεξεργαστή (2 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

Οργάνωση επεξεργαστή (2 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική Οργάνωση επεξεργαστή (2 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική Ταχύτητα εκτέλεσης Χρόνος εκτέλεσης = (αριθμός εντολών που εκτελούνται) Τί έχει σημασία: Χ (χρόνος εκτέλεσης εντολής) Αριθμός

Διαβάστε περισσότερα

Αρχιτεκτονική Υπολογιστών

Αρχιτεκτονική Υπολογιστών Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Αρχιτεκτονική Υπολογιστών Ενότητα 13: (Μέρος Γ ) Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών

Διαβάστε περισσότερα

Δομή Ηλεκτρονικού υπολογιστή

Δομή Ηλεκτρονικού υπολογιστή Δομή Ηλεκτρονικού υπολογιστή Η κλασσική δομή του μοντέλου που πρότεινε το 1948 ο Von Neumann Κεντρική Μονάδα Επεξεργασίας Είσοδος Αποθήκη Αποθήκη - Έξοδος Εντολών Δεδομένων Κλασσικό μοντέλο Von Neumann

Διαβάστε περισσότερα

EM 361: Παράλληλοι Υπολογισμοί

EM 361: Παράλληλοι Υπολογισμοί ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ EM 361: Παράλληλοι Υπολογισμοί Ενότητα #2: Αρχιτεκτονική Διδάσκων: Χαρμανδάρης Ευάγγελος ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΩΝ ΜΑΘΗΜΑΤΙΚΩΝ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΠΙΣΤΗΜΩΝ

Διαβάστε περισσότερα

Μετρικές & Επιδόσεις. Κεφάλαιο V

Μετρικές & Επιδόσεις. Κεφάλαιο V Μετρικές & Επιδόσεις Κεφάλαιο V Χρόνος εκτέλεσης & επιτάχυνση Σειριακός χρόνος εκτέλεσης: Τ (για τον καλύτερο σειριακό αλγόριθμο) Παράλληλος χρόνος εκτέλεσης: (με επεξεργαστές) Επιτάχυνση (speedup): S

Διαβάστε περισσότερα

Είναι το «μυαλό» του υπολογιστή μας. Αυτός κάνει όλους τους υπολογισμούς και τις πράξεις. Έχει δική του ενσωματωμένη μνήμη, τη λεγόμενη κρυφή

Είναι το «μυαλό» του υπολογιστή μας. Αυτός κάνει όλους τους υπολογισμούς και τις πράξεις. Έχει δική του ενσωματωμένη μνήμη, τη λεγόμενη κρυφή 1 Είναι το «μυαλό» του υπολογιστή μας. Αυτός κάνει όλους τους υπολογισμούς και τις πράξεις. Έχει δική του ενσωματωμένη μνήμη, τη λεγόμενη κρυφή μνήμη(cache). Η cache είναι πολύ σημαντική, πολύ γρήγορη,

Διαβάστε περισσότερα

2. Στοιχεία Αρχιτεκτονικής Παράλληλων Υπολογιστών... 45

2. Στοιχεία Αρχιτεκτονικής Παράλληλων Υπολογιστών... 45 ΠΕΡΙΕΧΟΜΕΝΑ Πρόλογος... 9 1. Εισαγωγή... 13 1.1 Οι Μεγάλες Σύγχρονες Επιστημονικές Προκλήσεις... 13 1.2 Εξέλιξη της Παράλληλης Επεξεργασίας Δεδομένων... 14 1.3 Οι Έννοιες της Σωλήνωσης, του Παραλληλισμού

Διαβάστε περισσότερα

Το υλικό του υπολογιστή

Το υλικό του υπολογιστή Το υλικό του υπολογιστή Ερωτήσεις 1. Τι αντιλαμβάνεστε με τον όρο υλικό; Το υλικό(hardware) αποτελείται από το σύνολο των ηλεκτρονικών τμημάτων που συνθέτουν το υπολογιστικό σύστημα, δηλαδή από τα ηλεκτρονικά

Διαβάστε περισσότερα

Αρχιτεκτονική Υπολογιστών

Αρχιτεκτονική Υπολογιστών Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Αρχιτεκτονική Υπολογιστών Ενότητα 13: (Μέρος Γ ) Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών

Διαβάστε περισσότερα

13.2 Παράλληλος Προγραµµατισµός Γλωσσάρι, Σελ. 1

13.2 Παράλληλος Προγραµµατισµός Γλωσσάρι, Σελ. 1 13.2 Παράλληλος Προγραµµατισµός Γλωσσάρι, Σελ. 1 ΓΛΩΣΣΑΡΙ Αµοιβαίος αποκλεισµός (mutual exclusion) Στο µοντέλο κοινού χώρου διευθύνσεων, ο αµοιβαίος αποκλεισµός είναι ο περιορισµός του αριθµού των διεργασιών

Διαβάστε περισσότερα

Συστήματα σε Ολοκληρωμένα Κυκλώματα

Συστήματα σε Ολοκληρωμένα Κυκλώματα Συστήματα σε Ολοκληρωμένα Κυκλώματα Κεφάλαιο 4: Αρχιτεκτονική των Embedded Μικροεπεξεργαστών Διδάσκων: Καθηγητής Οδυσσέας Κουφοπαύλου Τμήμα Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών ΕΙΣΑΓΩΓΗ Παρουσιάζεται

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών 44 Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών Διδακτικοί στόχοι Σκοπός του κεφαλαίου είναι οι μαθητές να κατανοήσουν τα βήματα που ακολουθούνται κατά την ανάπτυξη μιας εφαρμογής.

Διαβάστε περισσότερα

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ www.cslab.ece.ntua.gr Διπλωματικές

Διαβάστε περισσότερα

Το ολοκληρωμένο κύκλωμα μιας ΚΜΕ. «Φέτα» ημιαγωγών (wafer) από τη διαδικασία παραγωγής ΚΜΕ

Το ολοκληρωμένο κύκλωμα μιας ΚΜΕ. «Φέτα» ημιαγωγών (wafer) από τη διαδικασία παραγωγής ΚΜΕ Το ολοκληρωμένο κύκλωμα μιας ΚΜΕ Η Κεντρική Μονάδα Επεξεργασίας (Central Processing Unit -CPU) ή απλούστερα επεξεργαστής αποτελεί το μέρος του υλικού που εκτελεί τις εντολές ενός προγράμματος υπολογιστή

Διαβάστε περισσότερα

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

Προβλήματα, αλγόριθμοι, ψευδοκώδικας Προβλήματα, αλγόριθμοι, ψευδοκώδικας October 11, 2011 Στο μάθημα Αλγοριθμική και Δομές Δεδομένων θα ασχοληθούμε με ένα μέρος της διαδικασίας επίλυσης υπολογιστικών προβλημάτων. Συγκεκριμένα θα δούμε τι

Διαβάστε περισσότερα

Επιστημονικοί Υπολογισμοί - Μέρος ΙΙΙ: Παράλληλοι Υπολογισμοί

Επιστημονικοί Υπολογισμοί - Μέρος ΙΙΙ: Παράλληλοι Υπολογισμοί Επιστημονικοί Υπολογισμοί - Μέρος ΙΙΙ: Παράλληλοι Υπολογισμοί Χαρμανδάρης Βαγγέλης, Τμήμα Εφαρμοσμένων Μαθηματικών Πανεπιστήμιο Κρήτης, Εαρινό Εξάμηνο 2013/14 Κεφάλαιο 3: Θεωρία Παράλληλου Προγραμματισμού

Διαβάστε περισσότερα

Αρχιτεκτονική Υπολογιστών

Αρχιτεκτονική Υπολογιστών Γιώργος Δημητρίου Ενότητα 11 η : Εισαγωγή σε Παράλληλες Αρχιτεκτονικές Παράλληλη Επεξεργασία Επίπεδο Παραλληλισμού Από εντολές έως ανεξάρτητες διεργασίες Οργανώσεις Παράλληλων Αρχιτεκτονικών Συμμετρικοί,

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 2: Χειρισµός εδοµένων

ΚΕΦΑΛΑΙΟ 2: Χειρισµός εδοµένων ΚΕΦΑΛΑΙΟ 2: Χειρισµός εδοµένων 2.1 Αρχιτεκτονική Υπολογιστών 2.1 Αρχιτεκτονική Υπολογιστών 2.2 Γλώσσα Μηχανής 2.3 Εκτέλεση προγράµµατος 2.4 Αριθµητικές και λογικές εντολές 2.5 Επικοινωνία µε άλλες συσκευές

Διαβάστε περισσότερα

Αρχιτεκτονική Eckert-von Neumann. Πως λειτουργεί η ΚΜΕ; Κεντρική μονάδα επεξεργασίας [3] ΕΠΛ 031: ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Αρχιτεκτονική Eckert-von Neumann. Πως λειτουργεί η ΚΜΕ; Κεντρική μονάδα επεξεργασίας [3] ΕΠΛ 031: ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Αρχιτεκτονική Eckert-von Neumann εισόδου μεταφορά δεδομένων από έξω προς τον Η/Υ εξόδου μεταφορά δεδομένων από τον Η/Υ προς τα έξω ΕΠΛ 031: ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Κύκλος Μηχανής κεντρικός έλεγχος/πράξεις

Διαβάστε περισσότερα

Κατανεμημένα Συστήματα

Κατανεμημένα Συστήματα Κατανεμημένα Συστήματα Σημειώσεις εργαστηρίου Lab#5 - SISD, SIMD, Νόμος του Amdahl, Γράφος εξάρτησης Νεβράντζας Βάιος-Γερμανός Λάρισα, Φεβρουάριος 2013 Lab#5, σελίδα 1 Περίληψη Στο 2ο μέρος του εργαστηριακού

Διαβάστε περισσότερα

Μάθημα 4: Κεντρική Μονάδα Επεξεργασίας

Μάθημα 4: Κεντρική Μονάδα Επεξεργασίας Μάθημα 4: Κεντρική Μονάδα Επεξεργασίας 4.1 Γενικά Ο υπολογιστής επεξεργάζεται δεδομένα ακολουθώντας βήμα βήμα, τις εντολές ενός προγράμματος. Το τμήμα του υπολογιστή, που εκτελεί τις εντολές και συντονίζει

Διαβάστε περισσότερα

Α Ν Α Λ Τ Η Α Λ Γ Ο Ρ Ι Θ Μ Ω Ν Κ Ε Υ Α Λ Α Ι Ο 5. Πως υπολογίζεται ο χρόνος εκτέλεσης ενός αλγορίθμου;

Α Ν Α Λ Τ Η Α Λ Γ Ο Ρ Ι Θ Μ Ω Ν Κ Ε Υ Α Λ Α Ι Ο 5. Πως υπολογίζεται ο χρόνος εκτέλεσης ενός αλγορίθμου; 5.1 Επίδοση αλγορίθμων Μέχρι τώρα έχουμε γνωρίσει διάφορους αλγόριθμους (αναζήτησης, ταξινόμησης, κ.α.). Στο σημείο αυτό θα παρουσιάσουμε ένα τρόπο εκτίμησης της επίδοσης (performance) η της αποδοτικότητας

Διαβάστε περισσότερα

Τμήμα Λογιστικής. Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές. Μάθημα 8. 1 Στέργιος Παλαμάς

Τμήμα Λογιστικής. Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές. Μάθημα 8. 1 Στέργιος Παλαμάς ΤΕΙ Ηπείρου Παράρτημα Πρέβεζας Τμήμα Λογιστικής Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές Μάθημα 8 Κεντρική Μονάδα Επεξεργασίας και Μνήμη 1 Αρχιτεκτονική του Ηλεκτρονικού Υπολογιστή Μονάδες Εισόδου Κεντρική

Διαβάστε περισσότερα

ΑΕΠΠ Ερωτήσεις θεωρίας

ΑΕΠΠ Ερωτήσεις θεωρίας ΑΕΠΠ Ερωτήσεις θεωρίας Κεφάλαιο 1 1. Τα δεδομένα μπορούν να παρέχουν πληροφορίες όταν υποβάλλονται σε 2. Το πρόβλημα μεγιστοποίησης των κερδών μιας επιχείρησης είναι πρόβλημα 3. Για την επίλυση ενός προβλήματος

Διαβάστε περισσότερα

Στοιχεία από την αρχιτεκτονική των μικροϋπολογιστών

Στοιχεία από την αρχιτεκτονική των μικροϋπολογιστών Στοιχεία από την αρχιτεκτονική των μικροϋπολογιστών Η επεξεργασία των δεδομένων ακολουθεί μια στερεότυπη διαδρομή: τα δεδομένα εισάγονται στο υπολογιστικό σύστημα, υφίστανται μια ορισμένη επεξεργασία και

Διαβάστε περισσότερα

Μηχανοτρονική. Τμήμα Μηχανικών Παραγωγής και Διοίκησης 7 ο Εξάμηνο,

Μηχανοτρονική. Τμήμα Μηχανικών Παραγωγής και Διοίκησης 7 ο Εξάμηνο, Τμήμα Μηχανικών Παραγωγής και Διοίκησης 7 ο Εξάμηνο, 2016-2017 ΜΙΚΡΟΕΠΕΞΕΡΓΑΣΤΕΣ Μικροϋπολογιστής Υπολογιστής που χρησιμοποιείται για την είσοδο, επεξεργασία και έξοδο πληροφοριών. Είδη μικροϋπολογιστών:

Διαβάστε περισσότερα

Μάθημα 3.2: Κεντρική Μονάδα Επεξεργασίας

Μάθημα 3.2: Κεντρική Μονάδα Επεξεργασίας Κεφάλαιο 3 ο Αρχιτεκτονική Υπολογιστών Μάθημα 3.: Κεντρική Μονάδα Επεξεργασίας Όταν ολοκληρώσεις το κεφάλαιο θα μπορείς: Να σχεδιάζεις την εσωτερική δομή της ΚΜΕ και να εξηγείς τη λειτουργία των επιμέρους

Διαβάστε περισσότερα

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

Για τις λύσεις των προβλημάτων υπάρχει τρόπος εκτίμησης της επίδοσης (performance) και της αποδοτικότητας (efficiency). Ερωτήματα για την επίδοση Επίδοση Αλγορίθμων Για τις λύσεις των προβλημάτων υπάρχει τρόπος εκτίμησης της επίδοσης (performance) και της αποδοτικότητας (efficiency). Ερωτήματα για την επίδοση πώς υπολογίζεται ο χρόνος εκτέλεσης

Διαβάστε περισσότερα

Τμήμα Οικιακής Οικονομίας και Οικολογίας. Οργάνωση Υπολογιστών

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

Διαβάστε περισσότερα

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

ΕΙΔΙΚΟΤΗΤΑ: ΤΕΧΝΙΚΟΣ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΕΙΔΙΚΟΤΗΤΑ: ΤΕΧΝΙΚΟΣ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ (Τμήματα Υπολογιστή) ΕΚΠΑΙΔΕΥΤΗΣ:ΠΟΖΟΥΚΙΔΗΣ ΚΩΝΣΤΑΝΤΙΝΟΣ ΤΜΗΜΑΤΑ ΗΛΕΚΤΡΟΝΙΚΟΥ ΥΠΟΛΟΓΙΣΤΗ Κάθε ηλεκτρονικός υπολογιστής αποτελείται

Διαβάστε περισσότερα

Κεφάλαιο 3. Διδακτικοί Στόχοι

Κεφάλαιο 3. Διδακτικοί Στόχοι Κεφάλαιο 3 Σε ένα υπολογιστικό σύστημα η Κεντρική Μονάδα Επεξεργασίας (ΚΜΕ) εκτελεί τις εντολές που βρίσκονται στην κύρια μνήμη του. Οι εντολές αυτές ανήκουν σε προγράμματα τα οποία, όταν εκτελούνται,

Διαβάστε περισσότερα

ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΑΡΧΕΣ ΤΗΣ ΕΠΙΣΤΗΜΗΣ ΤΩΝ Η/Υ

ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΑΡΧΕΣ ΤΗΣ ΕΠΙΣΤΗΜΗΣ ΤΩΝ Η/Υ ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΑΡΧΕΣ ΤΗΣ ΕΠΙΣΤΗΜΗΣ ΤΩΝ Η/Υ ΜΕΡΛΙΑΟΥΝΤΑΣ ΣΤΕΦΑΝΟΣ, ΠΕ19 ΚΕΦΑΛΑΙΟ 3 Αλγόριθμοι 3. Αλγόριθμοι 2 3. Αλγόριθμοι 3.1 Η έννοια του αλγορίθμου 3.2 Χαρακτηριστικά αλγορίθμου 3.3 Ανάλυση αλγορίθμων

Διαβάστε περισσότερα

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

Μάθημα 8: Διαχείριση Μνήμης Μάθημα 8: Διαχείριση Μνήμης 8.1 Κύρια και δευτερεύουσα μνήμη Κάθε μονάδα ενός υπολογιστή που χρησιμεύει για τη μόνιμη ή προσωρινή αποθήκευση δεδομένων ανήκει στην μνήμη (memory) του υπολογιστή. Οι μνήμες

Διαβάστε περισσότερα

Ψευδοκώδικας. November 7, 2011

Ψευδοκώδικας. November 7, 2011 Ψευδοκώδικας November 7, 2011 Οι γλώσσες τύπου ψευδοκώδικα είναι ένας τρόπος περιγραφής αλγορίθμων. Δεν υπάρχει κανένας τυπικός ορισμός της έννοιας του ψευδοκώδικα όμως είναι κοινός τόπος ότι οποιαδήποτε

Διαβάστε περισσότερα

Παράλληλος προγραμματισμός: παράλληλες λ υπολογιστικές πλατφόρμες και ανάλυση προγραμμάτων

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

Διαβάστε περισσότερα

Μάθημα 3: Αρχιτεκτονική Υπολογιστών

Μάθημα 3: Αρχιτεκτονική Υπολογιστών Μάθημα 3: Αρχιτεκτονική Υπολογιστών 3.1 Περιφερειακές μονάδες και τμήμα επεξεργασίας Στην καθημερινή μας ζωή ερχόμαστε συνέχεια σε επαφή με υπολογιστές. Ο υπολογιστής είναι μια συσκευή που επεξεργάζεται

Διαβάστε περισσότερα

Αρχές Δικτύων Επικοινωνιών. Επικοινωνίες Δεδομένων Μάθημα 4 ο

Αρχές Δικτύων Επικοινωνιών. Επικοινωνίες Δεδομένων Μάθημα 4 ο Αρχές Δικτύων Επικοινωνιών Επικοινωνίες Δεδομένων Μάθημα 4 ο Τα επικοινωνιακά δίκτυα και οι ανάγκες που εξυπηρετούν Για την επικοινωνία δύο συσκευών απαιτείται να υπάρχει μεταξύ τους σύνδεση από σημείο

Διαβάστε περισσότερα

i Throughput: Ο ρυθμός ολοκλήρωσης έργου σε συγκεκριμένο χρόνο

i Throughput: Ο ρυθμός ολοκλήρωσης έργου σε συγκεκριμένο χρόνο Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών 6-7 Απόδοση ΚΜΕ (Μέτρηση και τεχνικές βελτίωσης απόδοσης) http://mixstef.github.io/courses/comparch/ Μ.Στεφανιδάκης Κεντρική Μονάδα Επεξεργασίας

Διαβάστε περισσότερα

Πληροφορική Ι. Μάθημα 6 ο Εκτέλεση πράξεων, Αρχιτεκτονική Η/Υ. Τμήμα Χρηματοοικονομικής & Ελεγκτικής ΤΕΙ Ηπείρου Παράρτημα Πρέβεζας

Πληροφορική Ι. Μάθημα 6 ο Εκτέλεση πράξεων, Αρχιτεκτονική Η/Υ. Τμήμα Χρηματοοικονομικής & Ελεγκτικής ΤΕΙ Ηπείρου Παράρτημα Πρέβεζας Τμήμα Χρηματοοικονομικής & Ελεγκτικής ΤΕΙ Ηπείρου Παράρτημα Πρέβεζας Πληροφορική Ι Μάθημα 6 ο Εκτέλεση πράξεων, Αρχιτεκτονική Η/Υ Δρ. Γκόγκος Χρήστος Εκτέλεση προγραμμάτων Πρόγραμμα: Ένα σύνολο από εντολές.

Διαβάστε περισσότερα

Ενότητα 4. Εισαγωγή στην Πληροφορική. Αναπαράσταση δεδοµένων. Αναπαράσταση πληροφορίας. υαδικοί αριθµοί. Χειµερινό Εξάµηνο 2006-07

Ενότητα 4. Εισαγωγή στην Πληροφορική. Αναπαράσταση δεδοµένων. Αναπαράσταση πληροφορίας. υαδικοί αριθµοί. Χειµερινό Εξάµηνο 2006-07 Ενότητα 4 Εισαγωγή στην Πληροφορική Κεφάλαιο 4Α: Αναπαράσταση πληροφορίας Κεφάλαιο 4Β: Επεξεργαστές που χρησιµοποιούνται σε PCs Χειµερινό Εξάµηνο 2006-07 ρ. Παναγιώτης Χατζηδούκας (Π..407/80) Εισαγωγή

Διαβάστε περισσότερα

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

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών Απόδοση ΚΜΕ. (Μέτρηση και τεχνικές βελτίωσης απόδοσης) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών 2016-17 Απόδοση ΚΜΕ (Μέτρηση και τεχνικές βελτίωσης απόδοσης) http://mixstef.github.io/courses/comparch/ Μ.Στεφανιδάκης Κεντρική Μονάδα Επεξεργασίας

Διαβάστε περισσότερα

Μετρικές και Επιδόσεις 6

Μετρικές και Επιδόσεις 6 Μετρικές και Επιδόσεις 6 Στο κεφάλαιο αυτό θα δούμε με ποιον τρόπο προσδιορίζουμε τις επιδόσεις ενός παράλληλου αλγορίθμου / προγράμματος. Βασικός σκοπός μας επίσης είναι να δούμε πώς διαμορφώνονται αυτές

Διαβάστε περισσότερα

Προγραμματισμός Ι (HY120)

Προγραμματισμός Ι (HY120) Προγραμματισμός Ι (HY20) # μνήμη & μεταβλητές πρόγραμμα & εκτέλεση Ψηφιακά δεδομένα, μνήμη, μεταβλητές 2 Δυαδικός κόσμος Οι υπολογιστές είναι δυαδικές μηχανές Όλη η πληροφορία (δεδομένα και κώδικας) κωδικοποιείται

Διαβάστε περισσότερα

Μάριος Αγγελίδης

Μάριος Αγγελίδης ΠΙΝΑΚΕΣ Ενότητες βιβλίου: 3.3, 9.1-9.3 Ώρες διδασκαλίας: 1 Σε όλα τα προβλήματα μέχρι τώρα διαβάζαμε μία τιμή την φορά, την επεξεργαζόμασταν και χωρίς να την αποθηκεύουμε επαναλαμβάναμε την διαδικασία

Διαβάστε περισσότερα

Κεφάλαιο 5 Ανάλυση Αλγορίθμων

Κεφάλαιο 5 Ανάλυση Αλγορίθμων Κεφάλαιο 5 Ανάλυση Αλγορίθμων 5.1 Επίδοση αλγορίθμων Τα πρωταρχικά ερωτήματα που προκύπτουν είναι: 1. πώς υπολογίζεται ο χρόνος εκτέλεσης ενός αλγορίθμου; 2. πώς μπορούν να συγκριθούν μεταξύ τους οι διάφοροι

Διαβάστε περισσότερα

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

Δομές Δεδομένων & Αλγόριθμοι Θέματα Απόδοσης Αλγορίθμων 1 Η Ανάγκη για Δομές Δεδομένων Οι δομές δεδομένων οργανώνουν τα δεδομένα πιο αποδοτικά προγράμματα Πιο ισχυροί υπολογιστές πιο σύνθετες εφαρμογές Οι πιο σύνθετες εφαρμογές απαιτούν

Διαβάστε περισσότερα

Περιεχόμενα. Δομές δεδομένων. Τεχνικές σχεδίασης αλγορίθμων. Εισαγωγή στον προγραμματισμό. Υποπρογράμματα. Επαναληπτικά κριτήρια αξιολόγησης

Περιεχόμενα. Δομές δεδομένων. Τεχνικές σχεδίασης αλγορίθμων. Εισαγωγή στον προγραμματισμό. Υποπρογράμματα. Επαναληπτικά κριτήρια αξιολόγησης Περιεχόμενα Δομές δεδομένων 37. Δομές δεδομένων (θεωρητικά στοιχεία)...11 38. Εισαγωγή στους μονοδιάστατους πίνακες...16 39. Βασικές επεξεργασίες στους μονοδιάστατους πίνακες...25 40. Ασκήσεις στους μονοδιάστατους

Διαβάστε περισσότερα

5.1. Προσδοκώμενα αποτελέσματα

5.1. Προσδοκώμενα αποτελέσματα 5.1. Προσδοκώμενα αποτελέσματα Όταν θα έχεις ολοκληρώσει τη μελέτη αυτού του κεφαλαίου θα έχεις κατανοήσει τις τεχνικές ανάλυσης των αλγορίθμων, θα μπορείς να μετράς την επίδοση των αλγορίθμων με βάση

Διαβάστε περισσότερα

Μικροεπεξεργαστές - Μικροελεγκτές Ψηφιακά Συστήματα

Μικροεπεξεργαστές - Μικροελεγκτές Ψηφιακά Συστήματα Μικροεπεξεργαστές - Μικροελεγκτές Ψηφιακά Συστήματα 1. Ποια είναι η σχέση της έννοιας του μικροεπεξεργαστή με αυτή του μικροελεγκτή; Α. Ο μικροεπεξεργαστής εμπεριέχει τουλάχιστο έναν μικροελεγκτή. Β. Ο

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΥΞΗΣΗΣ ΤΗΣ ΑΠΟΔΟΣΗΣ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ I

ΤΕΧΝΙΚΕΣ ΑΥΞΗΣΗΣ ΤΗΣ ΑΠΟΔΟΣΗΣ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ I ΤΕΧΝΙΚΕΣ ΑΥΞΗΣΗΣ ΤΗΣ ΑΠΟΔΟΣΗΣ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ I MIPS Η MIPS (Microprocessor without Interlocked Pipeline Stages) είναι μία αρχιτεκτονική συνόλου εντολών (ISA) γλώσσας μηχανής που αναπτύχθηκε από την εταιρεία

Διαβάστε περισσότερα

ΠΕΡΙΕΧΟΜΕΝΑ. Μονοδιάστατοι πίνακες Πότε πρέπει να χρησιμοποιούνται πίνακες Πολυδιάστατοι πίνακες Τυπικές επεξεργασίες πινάκων

ΠΕΡΙΕΧΟΜΕΝΑ. Μονοδιάστατοι πίνακες Πότε πρέπει να χρησιμοποιούνται πίνακες Πολυδιάστατοι πίνακες Τυπικές επεξεργασίες πινάκων ΠΕΡΙΕΧΟΜΕΝΑ Μονοδιάστατοι πίνακες Πότε πρέπει να χρησιμοποιούνται πίνακες Πολυδιάστατοι πίνακες Τυπικές επεξεργασίες πινάκων Εισαγωγή Η χρήση των μεταβλητών με δείκτες στην άλγεβρα είναι ένας ιδιαίτερα

Διαβάστε περισσότερα

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

Συστήματα μνήμης και υποστήριξη μεταφραστή για MPSoC Συστήματα μνήμης και υποστήριξη μεταφραστή για MPSoC Πλεονεκτήματα MPSoC Είναι ευκολότερο να σχεδιαστούν πολλαπλοί πυρήνες επεξεργαστών από τον σχεδιασμό ενός ισχυρότερου και πολύ πιο σύνθετου μονού επεξεργαστή.

Διαβάστε περισσότερα

Αρχιτεκτονική Μνήμης

Αρχιτεκτονική Μνήμης ΕΣ 08 Επεξεργαστές Ψηφιακών Σημάτων Αρχιτεκτονική Μνήμης Τμήμα Επιστήμη και Τεχνολογίας Τηλεπικοινωνιών Πανεπιστήμιο Πελοποννήσου Βιβλιογραφία Ενότητας Kuo [2005]: Chapters 3 & 4 Lapsley [2002]: Chapter

Διαβάστε περισσότερα

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2 Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2 1. Ο αλγόριθμος είναι απαραίτητος μόνο για την επίλυση προβλημάτων Πληροφορικής 2. Ο αλγόριθμος αποτελείται από ένα πεπερασμένο σύνολο εντολών 3. Ο αλγόριθμος

Διαβάστε περισσότερα

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

5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ 5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ 5.1 Εισαγωγή στους αλγορίθμους 5.1.1 Εισαγωγή και ορισμοί Αλγόριθμος (algorithm) είναι ένα πεπερασμένο σύνολο εντολών οι οποίες εκτελούν κάποιο ιδιαίτερο έργο. Κάθε αλγόριθμος

Διαβάστε περισσότερα

Ενδεικτικές Ερωτήσεις Θεωρίας

Ενδεικτικές Ερωτήσεις Θεωρίας Ενδεικτικές Ερωτήσεις Θεωρίας Κεφάλαιο 2 1. Τι καλούμε αλγόριθμο; 2. Ποια κριτήρια πρέπει οπωσδήποτε να ικανοποιεί ένας αλγόριθμος; 3. Πώς ονομάζεται μια διαδικασία που δεν περατώνεται μετά από συγκεκριμένο

Διαβάστε περισσότερα

Λειτουργικά Συστήματα (διαχείριση επεξεργαστή, μνήμης και Ε/Ε)

Λειτουργικά Συστήματα (διαχείριση επεξεργαστή, μνήμης και Ε/Ε) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2015-16 Λειτουργικά Συστήματα (διαχείριση επεξεργαστή, και Ε/Ε) http://di.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης Τι είναι

Διαβάστε περισσότερα

Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας

Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας Ενότητα 2: Αρχιτεκτονικές Von Neuman, Harvard. Κατηγοριοποίηση κατά Flynn. Υπολογισμός απόδοσης Συστημάτων

Διαβάστε περισσότερα

Τι είναι ένα λειτουργικό σύστημα (ΛΣ); Μια άλλη απεικόνιση. Το Λειτουργικό Σύστημα ως μέρος του υπολογιστή

Τι είναι ένα λειτουργικό σύστημα (ΛΣ); Μια άλλη απεικόνιση. Το Λειτουργικό Σύστημα ως μέρος του υπολογιστή Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2014-15 Λειτουργικά Συστήματα (διαχείριση επεξεργαστή, και Ε/Ε) http://di.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης Τι είναι

Διαβάστε περισσότερα

Αρχιτεκτονική Μνήµης

Αρχιτεκτονική Μνήµης ΕΣ 08 Επεξεργαστές Ψηφιακών Σηµάτων Αρχιτεκτονική Μνήµης Τµήµα Επιστήµη και Τεχνολογίας Τηλεπικοινωνιών Πανεπιστήµιο Πελοποννήσου Βιβλιογραφία Ενότητας Kuo [2005]: Chapters 3 & 4 Lapsley [2002]: Chapter

Διαβάστε περισσότερα

ΠΛΗ10 Κεφάλαιο 2. ΠΛΗ10 Εισαγωγή στην Πληροφορική: Τόμος Α Κεφάλαιο: 2 2.1: Bασική Δομή του Υπολογιστή

ΠΛΗ10 Κεφάλαιο 2. ΠΛΗ10 Εισαγωγή στην Πληροφορική: Τόμος Α Κεφάλαιο: 2 2.1: Bασική Δομή του Υπολογιστή Εισαγωγή στην Πληροφορική: Τόμος Α Κεφάλαιο: 2 2.1: Bασική Δομή του Υπολογιστή Στόχοι Μαθήματος: Να γνωρίσετε τις βασικές λειτουργίες ενός Η/Υ. Να γνωρίσετε τις έννοιες δεδομένα, πληροφορία, επεξεργασία,

Διαβάστε περισσότερα

Η ΤΑΞΙΝΟΜΗΣΗ ΤΟΥ FLYNN!!! 1 ο ΕΠΑΛ ΡΟΔΟΥ ΤΟΜΕΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ!!!! Χατζηνικόλας Κώστας www.costaschatzinikolas.gr

Η ΤΑΞΙΝΟΜΗΣΗ ΤΟΥ FLYNN!!! 1 ο ΕΠΑΛ ΡΟΔΟΥ ΤΟΜΕΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ!!!! Χατζηνικόλας Κώστας www.costaschatzinikolas.gr Η ΤΑΞΙΝΟΜΗΣΗ ΤΟΥ FLYNN 1 ο ΕΠΑΛ ΡΟΔΟΥ ΤΟΜΕΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Χατζηνικόλας Κώστας www.costaschatzinikolas.gr Τα 4 Είδη Των Αρχιτεκτονικών Των Σύγχρονων Η/Υ Ο Michael J. Flynn 1 το 1966 πρότεινε τον χωρισμό

Διαβάστε περισσότερα

Επιστημονικοί Υπολογισμοί - Μέρος ΙΙΙ: Παράλληλοι Υπολογισμοί

Επιστημονικοί Υπολογισμοί - Μέρος ΙΙΙ: Παράλληλοι Υπολογισμοί Επιστημονικοί Υπολογισμοί - Μέρος ΙΙΙ: Παράλληλοι Υπολογισμοί Χαρμανδάρης Βαγγέλης, Τμήμα Εφαρμοσμένων Μαθηματικών Πανεπιστήμιο Κρήτης, Εαρινό Εξάμηνο 2013/14 Κεφάλαιο 4: Παράλληλοι Αλγόριθμοι Ταξινόμηση

Διαβάστε περισσότερα

Κεφάλαιο 4 ο. Ο Προσωπικός Υπολογιστής

Κεφάλαιο 4 ο. Ο Προσωπικός Υπολογιστής Κεφάλαιο 4 ο Ο Προσωπικός Υπολογιστής Μάθημα 4.3 Ο Επεξεργαστής - Εισαγωγή - Συχνότητα λειτουργίας - Εύρος διαδρόμου δεδομένων - Εύρος διαδρόμου διευθύνσεων - Εύρος καταχωρητών Όταν ολοκληρώσεις το μάθημα

Διαβάστε περισσότερα

Ερώτηση 1 η μεταγωγής κυκλώματος? : Ποια είναι τα κύρια χαρακτηριστικά της. Ερώτηση 2 η : Ποια είναι τα κύρια χαρακτηριστικά της μεταγωγής μηνύματος?

Ερώτηση 1 η μεταγωγής κυκλώματος? : Ποια είναι τα κύρια χαρακτηριστικά της. Ερώτηση 2 η : Ποια είναι τα κύρια χαρακτηριστικά της μεταγωγής μηνύματος? Μετάδοση Δεδομένων Δίκτυα Υπολογιστών 68 Ερώτηση 1 η μεταγωγής κυκλώματος? : Ποια είναι τα κύρια χαρακτηριστικά της Απάντηση : Στα δίκτυα μεταγωγής κυκλώματος (circuit switching networks), η μετάδοση των

Διαβάστε περισσότερα

Κεφάλαιο 1.6: Συσκευές αποθήκευσης

Κεφάλαιο 1.6: Συσκευές αποθήκευσης Κεφάλαιο 1.6: Συσκευές αποθήκευσης 1.6.1 Συσκευές αποθήκευσης Μνήμη τυχαίας προσπέλασης - RAM Η μνήμη RAM (Random Access Memory Μνήμη Τυχαίας Προσπέλασης), κρατεί όλη την πληροφορία (δεδομένα και εντολές)

Διαβάστε περισσότερα

10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος.

10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος. 1. Δώστε τον ορισμό του προβλήματος. 2. Σι εννοούμε με τον όρο επίλυση ενός προβλήματος; 3. Σο πρόβλημα του 2000. 4. Σι εννοούμε με τον όρο κατανόηση προβλήματος; 5. Σι ονομάζουμε χώρο προβλήματος; 6.

Διαβάστε περισσότερα

Κεφάλαιο 4: Λογισμικό Συστήματος

Κεφάλαιο 4: Λογισμικό Συστήματος Κεφάλαιο 4: Λογισμικό Συστήματος Ερωτήσεις 1. Να αναφέρετε συνοπτικά τις κατηγορίες στις οποίες διακρίνεται το λογισμικό συστήματος. Σε ποια ευρύτερη κατηγορία εντάσσεται αυτό; Το λογισμικό συστήματος

Διαβάστε περισσότερα

Μνήμη Διευθύνσεις Δείκτες. Προγραμματισμός II 1

Μνήμη Διευθύνσεις Δείκτες. Προγραμματισμός II 1 Μνήμη Διευθύνσεις Δείκτες Προγραμματισμός II 1 lalis@inf.uth.gr Μνήμη Η/Υ Ειδικό υλικό, ξεχωριστό από τον επεξεργαστή Χρησιμεύει για την αποθήκευση δεδομένων και της κατάστασης εκτέλεσης του προγράμματος

Διαβάστε περισσότερα

Πολυπύρηνοι επεξεργαστές Multicore processors

Πολυπύρηνοι επεξεργαστές Multicore processors Πολυπύρηνοι επεξεργαστές Multicore processors 1 Μετάβαση στους πολυπύρηνους(1) Απόδοση των µονοεπεξεργαστών 25% ετήσια βελτίωση της απόδοσης από το 1978 έως το 1986 Κυρίως από την εξέλιξη της τεχνολογίας

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 1: Τα είδη των Δικτύων Εισαγωγή

ΚΕΦΑΛΑΙΟ 1: Τα είδη των Δικτύων Εισαγωγή ΚΕΦΑΛΑΙΟ 1: Τα είδη των Δικτύων 1.1. Εισαγωγή Γενικότερα δεν υπάρχει κάποια ταξινόμηση των πιθανών δικτύων κάτω από την οποία να ταιριάζουν όλα τα δίκτυα. Παρόλα αυτά η ταξινόμηση τους είθισται να γίνεται

Διαβάστε περισσότερα

Εξωτερική Αναζήτηση. Ιεραρχία Μνήμης Υπολογιστή. Εξωτερική Μνήμη. Εσωτερική Μνήμη. Κρυφή Μνήμη (Cache) Καταχωρητές (Registers) μεγαλύτερη ταχύτητα

Εξωτερική Αναζήτηση. Ιεραρχία Μνήμης Υπολογιστή. Εξωτερική Μνήμη. Εσωτερική Μνήμη. Κρυφή Μνήμη (Cache) Καταχωρητές (Registers) μεγαλύτερη ταχύτητα Ιεραρχία Μνήμης Υπολογιστή Εξωτερική Μνήμη Εσωτερική Μνήμη Κρυφή Μνήμη (Cache) μεγαλύτερη χωρητικότητα Καταχωρητές (Registers) Κεντρική Μονάδα (CPU) μεγαλύτερη ταχύτητα Πολλές σημαντικές εφαρμογές διαχειρίζονται

Διαβάστε περισσότερα

Κεφάλαιο 7. ΕΠΑΛ Σύμης Εφαρμογές πληροφορικής Ερωτήσεις επανάληψης

Κεφάλαιο 7. ΕΠΑΛ Σύμης Εφαρμογές πληροφορικής Ερωτήσεις επανάληψης ΕΠΑΛ Σύμης Εφαρμογές πληροφορικής Ερωτήσεις επανάληψης Κεφάλαιο 7 1. Σε τι διαφέρει ο Η/Υ από τις υπόλοιπες ηλεκτρικές και ηλεκτρονικές συσκευές; Που οφείλεται η δυνατότητά του να κάνει τόσο διαφορετικές

Διαβάστε περισσότερα

Προγραμματισμός Υπολογιστών

Προγραμματισμός Υπολογιστών Προγραμματισμός Υπολογιστών Βασικές γνώσεις Κ. Βασιλάκης, ΣΤΕΦ, ΤΕΙ Κρήτης Η Πληροφορική και τα εργαλεία της Παροχή έγκαιρης και έγκυρης πληροφόρησης. Καταχώριση στοιχείων Αποθήκευση Επεξεργασία ψηφιακών

Διαβάστε περισσότερα

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

ΔΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ. Λειτουργικά Συστήματα Ι. Διδάσκων: Καθ. Κ. Λαμπρινουδάκης ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι Μάθημα: Λειτουργικά Συστήματα Ι ΔΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ Διδάσκων: Καθ. Κ. Λαμπρινουδάκης clam@unipi.gr 1 ΕΙΣΑΓΩΓΗ Μνήμη : Πόρος ζωτικής σημασίας του οποίου η διαχείριση απαιτεί ιδιαίτερη

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 1.7. Πρωτόκολλα και Αρχιτεκτονική Δικτύου

ΚΕΦΑΛΑΙΟ 1.7. Πρωτόκολλα και Αρχιτεκτονική Δικτύου ΚΕΦΑΛΑΙΟ 1.7 Πρωτόκολλα και Αρχιτεκτονική Δικτύου Επικοινωνία δύο σταθμών Ύπαρξη διαδρομής Αποκατάσταση σύνδεσης Ο σταθμός-πηγή πρέπει να ξέρει πότε ο σταθμός-προορισμός είναι έτοιμος να λάβει δεδομένα.

Διαβάστε περισσότερα

Λιβανός Γιώργος Εξάμηνο 2017Β

Λιβανός Γιώργος Εξάμηνο 2017Β Λιβανός Γιώργος Εξάμηνο 2017Β Υπολογιστικό σύστημα Υλικό (hardware) Λογισμικό (Software) Ολοκληρωμένα κυκλώματα, δίσκοι, οθόνη, κλπ. Λογισμικό συστήματος Προγράμματα εφαρμογών Χρειάζονται ένα συντονιστή!!!

Διαβάστε περισσότερα

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

Έστω ένας πίνακας με όνομα Α δέκα θέσεων : 1 η 2 η 3 η 4 η 5 η 6 η 7 η 8 η 9 η 10 η Μονοδιάστατοι Πίνακες Τι είναι ο πίνακας γενικά : Πίνακας είναι μια Στατική Δομή Δεδομένων. Δηλαδή συνεχόμενες θέσεις μνήμης, όπου το πλήθος των θέσεων είναι συγκεκριμένο. Στις θέσεις αυτές καταχωρούμε

Διαβάστε περισσότερα

Στοιχεία αρχιτεκτονικής μικροεπεξεργαστή

Στοιχεία αρχιτεκτονικής μικροεπεξεργαστή Στοιχεία αρχιτεκτονικής μικροεπεξεργαστή Αριθμός bit δίαυλου δεδομένων (Data Bus) Αριθμός bit δίαυλου διευθύνσεων (Address Bus) Μέγιστη συχνότητα λειτουργίας (Clock Frequency) Τύποι εντολών Αριθμητική

Διαβάστε περισσότερα

Γενικά Στοιχεία Ηλεκτρονικού Υπολογιστή

Γενικά Στοιχεία Ηλεκτρονικού Υπολογιστή Γενικά Στοιχεία Ηλεκτρονικού Υπολογιστή 1. Ηλεκτρονικός Υπολογιστής Ο Ηλεκτρονικός Υπολογιστής είναι μια συσκευή, μεγάλη ή μικρή, που επεξεργάζεται δεδομένα και εκτελεί την εργασία του σύμφωνα με τα παρακάτω

Διαβάστε περισσότερα

Υπάρχουν δύο τύποι μνήμης, η μνήμη τυχαίας προσπέλασης (Random Access Memory RAM) και η μνήμη ανάγνωσης-μόνο (Read-Only Memory ROM).

Υπάρχουν δύο τύποι μνήμης, η μνήμη τυχαίας προσπέλασης (Random Access Memory RAM) και η μνήμη ανάγνωσης-μόνο (Read-Only Memory ROM). Μνήμες Ένα από τα βασικά πλεονεκτήματα των ψηφιακών συστημάτων σε σχέση με τα αναλογικά, είναι η ευκολία αποθήκευσης μεγάλων ποσοτήτων πληροφοριών, είτε προσωρινά είτε μόνιμα Οι πληροφορίες αποθηκεύονται

Διαβάστε περισσότερα

Πρόβλημα 37 / σελίδα 207

Πρόβλημα 37 / σελίδα 207 Πρόβλημα 37 / σελίδα 207 2.5. Ôåóô áõôïáîéïëüãçóçò Δίνονται οι παρακάτω ομάδες προτάσεων. Σε κάθε μία από αυτές, να κάνετε τις απαραίτητες διορθώσεις ώστε να ισχύουν οι προτάσεις 1. Η αναπαράσταση

Διαβάστε περισσότερα

ΜΑΘΗΜΑ: Εισαγωγή στις Αρχές της Επιστήμης των Η/Υ. 1 η ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ: ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ

ΜΑΘΗΜΑ: Εισαγωγή στις Αρχές της Επιστήμης των Η/Υ. 1 η ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ: ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΜΑΘΗΜΑ: Εισαγωγή στις Αρχές της Επιστήμης των Η/Υ 1 η ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ: ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ Στόχος Θεματικής Ενότητας Οι μαθητές να περιγράφουν τους βασικούς τομείς της Επιστήμης των Υπολογιστών και να μπορούν

Διαβάστε περισσότερα

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

Δομές Δεδομένων. Ενότητα 1 - Εισαγωγή. Χρήστος Γκουμόπουλος. Πανεπιστήμιο Αιγαίου Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων Δομές Δεδομένων Ενότητα 1 - Εισαγωγή Χρήστος Γκουμόπουλος Πανεπιστήμιο Αιγαίου Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων Αντικείμενο μαθήματος Δομές Δεδομένων (ΔΔ): Στην επιστήμη υπολογιστών

Διαβάστε περισσότερα

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

ΣΥΓΚΡΙΤΙΚΗ ΜΕΛΕΤΗ ΤΕΧΝΟΛΟΓΙΩΝ ΔΙΑΔΙΚΤΥΑΚΩΝ ΥΠΗΡΕΣΙΩΝ ΚΑΙ ΑΞΙΟΛΟΓΗΣΗ ΤΗΣ ΤΕΧΝΟΛΟΓΙΑΣ REST ΠΛΑΣΤΑΡΑΣ ΕΥΡΙΠΙΔΗΣ ΣΥΓΚΡΙΤΙΚΗ ΜΕΛΕΤΗ ΤΕΧΝΟΛΟΓΙΩΝ ΔΙΑΔΙΚΤΥΑΚΩΝ ΥΠΗΡΕΣΙΩΝ ΚΑΙ ΑΞΙΟΛΟΓΗΣΗ ΤΗΣ ΤΕΧΝΟΛΟΓΙΑΣ REST ΠΛΑΣΤΑΡΑΣ ΕΥΡΙΠΙΔΗΣ ΘΕΣΣΑΛΟΝΙΚΗ, 2016 ΕΙΣΑΓΩΓΗ Μια διαδικτυακή υπηρεσία μπορεί να περιγραφεί απλά σαν μια οποιαδήποτε

Διαβάστε περισσότερα

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

Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1 Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1 lalis@inf.uth.gr Ο κώδικας δεν εκτελείται «μόνος του» Ο εκτελέσιμος κώδικας αποθηκεύεται σε ένα αρχείο Το αρχείο είναι μια «παθητική» οντότητα

Διαβάστε περισσότερα

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

Λειτουργικά Συστήματα (Λ/Σ) Λειτουργικά Συστήματα (Λ/Σ) Διαχείριση Μνήμης Βασίλης Σακκάς 6/12/2013 1 Διαχείριση Μνήμης 1 Το τμήμα του Λ/Σ που διαχειρίζεται τη μνήμη λέγεται Διαχειριστής Μνήμης (Memory manager). Καθήκον του είναι

Διαβάστε περισσότερα

Πανεπιστήμιο Θεσσαλίας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων

Πανεπιστήμιο Θεσσαλίας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων Πανεπιστήμιο Θεσσαλίας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων Οργάνωση Η/Υ Ενότητα 1η: Εισαγωγή στην Οργάνωση Η/Υ Άσκηση 1: Αναλύστε τη διαδοχική εκτέλεση των παρακάτω εντολών MIPS με βάση τις

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 10 ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ

ΚΕΦΑΛΑΙΟ 10 ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ ΚΕΦΑΛΑΙΟ 10 Όπως είδαμε και σε προηγούμενο κεφάλαιο μια από τις βασικότερες τεχνικές στον Δομημένο Προγραμματισμό είναι ο Τμηματικός Προγραμματισμός. Τμηματικός προγραμματισμός ονομάζεται η τεχνική σχεδίασης

Διαβάστε περισσότερα

Πρότυπο Αναφοράς Open Systems Interconnection (OSI) Επικοινωνίες Δεδομένων Μάθημα 5 ο

Πρότυπο Αναφοράς Open Systems Interconnection (OSI) Επικοινωνίες Δεδομένων Μάθημα 5 ο Πρότυπο Αναφοράς Open Systems Interconnection (OSI) Επικοινωνίες Δεδομένων Μάθημα 5 ο Πρωτόκολλα και Αρχιτεκτονική Δικτύου Για να ανταλλάξουν δεδομένα δύο σταθμοί, εκτός από την ύπαρξη διαδρομής μεταξύ

Διαβάστε περισσότερα

Μάθημα 3 ο ΔΙΕΡΓΑΣΙΕΣ (PROCESSES)

Μάθημα 3 ο ΔΙΕΡΓΑΣΙΕΣ (PROCESSES) Μάθημα 3 ο ΔΙΕΡΓΑΣΙΕΣ (PROCESSES) Εισαγωγή H κεντρική μονάδα επεξεργασίας (ΚΜΕ) και η κύρια μνήμη αποτελούν τα βασικά δομικά στοιχεία ενός υπολογιστικού συστήματος. Η πρώτη εκτελεί εντολές χειρισμού δεδομένων

Διαβάστε περισσότερα

4.4 Μετατροπή από μία μορφή δομής επανάληψης σε μία άλλη.

4.4 Μετατροπή από μία μορφή δομής επανάληψης σε μία άλλη. 4.4 Μετατροπή από μία μορφή δομής επανάληψης σε μία άλλη. Η μετατροπή μιας εντολής επανάληψης σε μία άλλη ή στις άλλες δύο εντολές επανάληψης, αποτελεί ένα θέμα που αρκετές φορές έχει εξεταστεί σε πανελλαδικό

Διαβάστε περισσότερα

Κεφάλαιο 1ο. 1.1.5 Πολυπρογραμματισμός 1.1.6 Πολυδιεργασία 1.2.2. Κατηγορίες Λειτουργικών Συστημάτων

Κεφάλαιο 1ο. 1.1.5 Πολυπρογραμματισμός 1.1.6 Πολυδιεργασία 1.2.2. Κατηγορίες Λειτουργικών Συστημάτων Κεφάλαιο 1ο 1.1.5 Πολυπρογραμματισμός 1.1.6 Πολυδιεργασία 1.2.2. Κατηγορίες Λειτουργικών Συστημάτων http://leitourgika-systhmata-epal-b.ggia.info Creative Commons License 3.0 Share-Alike Πολυπρογραμματισμός

Διαβάστε περισσότερα

Παράλληλος προγραμματισμός περιστροφικών αλγορίθμων εξωτερικών σημείων τύπου simplex ΠΛΟΣΚΑΣ ΝΙΚΟΛΑΟΣ

Παράλληλος προγραμματισμός περιστροφικών αλγορίθμων εξωτερικών σημείων τύπου simplex ΠΛΟΣΚΑΣ ΝΙΚΟΛΑΟΣ Παράλληλος προγραμματισμός περιστροφικών αλγορίθμων εξωτερικών σημείων τύπου simplex ΠΛΟΣΚΑΣ ΝΙΚΟΛΑΟΣ Διπλωματική Εργασία Μεταπτυχιακού Προγράμματος στην Εφαρμοσμένη Πληροφορική Κατεύθυνση: Συστήματα Υπολογιστών

Διαβάστε περισσότερα

Γενική οργάνωση υπολογιστή «ΑΒΑΚΑ»

Γενική οργάνωση υπολογιστή «ΑΒΑΚΑ» Περιεχόμενα Γενική οργάνωση υπολογιστή «ΑΒΑΚΑ»... 2 Καταχωρητές... 3 Αριθμητική-λογική μονάδα... 3 Μονάδα μνήμης... 4 Μονάδα Εισόδου - Εξόδου... 5 Μονάδα ελέγχου... 5 Ρεπερτόριο Εντολών «ΑΒΑΚΑ»... 6 Φάση

Διαβάστε περισσότερα

Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού

Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΧΗΜΙΚΩΝ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΙΚΟ ΚΕΝΤΡΟ Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού Μάθημα 2ο Aντώνης Σπυρόπουλος v2_061015 Οροι που

Διαβάστε περισσότερα

Κεντρική Μονάδα Επεξεργασίας. Επανάληψη: Απόδοση ΚΜΕ. ΚΜΕ ενός κύκλου (single-cycle) Παραλληλισμός σε επίπεδο εντολών. Υπολογιστικό σύστημα

Κεντρική Μονάδα Επεξεργασίας. Επανάληψη: Απόδοση ΚΜΕ. ΚΜΕ ενός κύκλου (single-cycle) Παραλληλισμός σε επίπεδο εντολών. Υπολογιστικό σύστημα Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών 2016-17 Παραλληλισμός σε επίπεδο εντολών (Pipelining και άλλες τεχνικές αύξησης απόδοσης) http://mixstef.github.io/courses/comparch/ Μ.Στεφανιδάκης

Διαβάστε περισσότερα

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2. Α1. Ο αλγόριθμος είναι απαραίτητος μόνο για την επίλυση προβλημάτων πληροφορικής

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2. Α1. Ο αλγόριθμος είναι απαραίτητος μόνο για την επίλυση προβλημάτων πληροφορικής Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2 Α1. Ο αλγόριθμος είναι απαραίτητος μόνο για την επίλυση προβλημάτων πληροφορικής Α2. Ο αλγόριθμος αποτελείται από ένα πεπερασμένο σύνολο εντολών Α3. Ο αλγόριθμος

Διαβάστε περισσότερα

ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Α ΤΑΞΗ

ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Α ΤΑΞΗ ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Α ΤΑΞΗ Απαντήσεις στις ερωτήσεις του βιβλίου ΚΕΦΑΛΑΙΟ 3 1. 2. Από ποια στοιχεία αποτελείται το κεντρικό μέρος ενός υπολογιστή και ποια η λειτουργία καθενός; Κεντρική Μονάδα επεξεργασίας

Διαβάστε περισσότερα