Παράλληλοι αλγόριθμοι και εφαρμογές σε πολυπύρηνες μονάδες επεξεργασίας γραφικών

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

Download "Παράλληλοι αλγόριθμοι και εφαρμογές σε πολυπύρηνες μονάδες επεξεργασίας γραφικών"

Transcript

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

2

3

4

5 Στην οικογένειά μου

6

7 Πρόλογος Η παρούσα διατριβή εκπονήθηκε στο Εργαστήριο Συστημάτων Υπολογιστών του Τμήματος Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών του Πανεπιστημίου Πατρών. Ευχαριστώ όλους όσους με οποιοδήποτε τρόπο συνεισέφεραν σε αυτή και ιδιαίτερα: τον επιβλέποντα καθηγητή μου, Καθηγητή Ευθύμιο Χούσο, τα μέλη της συμβουλευτικής μου επιτροπής, Καθηγητές κ.κ. Δημήτρη Σερπάνο και Σταύρο Κουμπιά, τους καθηγητές κ. κ. Βλάση Μαυραντζά και Νικόλαο Ασπράγκαθο, τους κ.κ. Δρ. Αρτέμιο Βογιατζή, Δρ. Σωτηρόπουλο Παναγιώτη, Δρ. Γιώργο Γούλα, τους κ.κ. Δρ. Παναγιώτη Αλεφραγκή, Δρ. Γκόγκο Χρήστο, Δρ. Στεφανίδη Κυριάκο, Δρ. Βασίλη Κελεφούρα, την κ. Φλώρα Τσούρτου, τον Δρ. Ορέστη Αλεξιάδη, τους κ. κ. Ανδρέα Παπαλάμπρου, Παναγιώτη Σουφρίλα, Ιορδάνη Ξανθόπουλο, Νίκο Κωνσταντινίδη, την γραμματέα του εργαστηρίου κ. Γκόλφω Ζαμπάρα, τον κ. Γιώργο Θωμόπουλο, όλους τους φίλους και φίλες μου και τους γονείς μου, Δημήτρη και Ιουλία και την αδερφή μου Ειρήνη Κολώνια. vii

8

9 Περιεχόμενα Γλωσσάρι Ακρωνύμια Εισαγωγή Αντικείμενο και σκοπός της διατριβής Προβλήματα που επιλύθηκαν Επιστημονικές περιοχές Συμβολή της διατριβής Οργάνωση της διατριβής Επισκόπηση ερευνητικής περιοχής Εισαγωγή Παράλληλα Συστήματα Υπολογιστών Ο νόμος του Moore "Το δωρεάν γεύμα τελείωσε" Ταξινόμηση παράλληλων συστημάτων Μέτρηση της απόδοσης ενός παράλληλου συστήματος υπολογιστών Οργάνωση μνήμης σε παράλληλα συστήματα υπολογιστών Παραλληλοποίηση προγραμμάτων / αλγορίθμων Μονάδες Επεξεργασίας Γραφικών Ιστορική αναδρομή Αρχιτεκτονική μονάδων επεξεργασίας γραφικών Προγραμματιστικό μοντέλο Μέθοδοι βελτιστοποίησης απόδοσης Διαφορές CPUs GPUs Αλγόριθμος ταξινόμησης count sort Εισαγωγή Ο αλγόριθμος count sort Περιγραφή του αλγορίθμου Σταθερότητα Περιπτώσεις χρήσης Παράλληλη εκτέλεση Σχετική βιβλιογραφία Σχεδιασμός count sort σε CUDA GPU Σχεδίαση count sort για CUDA Μεταφορά δεδομένων από τη CPU στη GPU

10 2 ΠΕΡΙΕΧΟΜΕΝΑ Αρχικοποίηση του πίνακα καταμέτρησης Μέτρηση εμφάνισης τιμών Επικάλυψη μεταφοράς δεδομένων εισόδου και καταμέτρηση εμφανίσεων Υπολογισμός πίνακα εξόδου Εξάλειψη συγχρονισμού νημάτων Μεταφορά δεδομένων από τη συσκευή στη CPU Συνδυασμός εξάλειψης συγχρονισμού νημάτων και μεταφοράς αποτελεσμάτων Αποτελέσματα Μεταφορά δεδομένων από τη CPU στη GPU Αρχικοποίηση πίνακα καταμέτρησης Καταμέτρηση εμφανίσεων Επικάλυψη μέτρησης εμφανίσεων στοιχείων με μεταφορά δεδομένων εισόδου Εξάλειψη συγχρονισμού νημάτων Επικάλυψη πυρήνα εξάλειψης συγχρονισμού νημάτων και μεταφοράς αποτελεσμάτων Υλοποίηση της count sort σε CUDA Συμπεράσματα Πρόβλημα χρονοπρογραμματισμού εξετάσεων Πανεπιστημίων Εισαγωγή Περιγραφή του προβλήματος Σχετική βιβλιογραφία Μεθοδολογία Κωδικοποίηση και αναπαράσταση Κατασκευή αρχικών λύσεων Υπολογισμός κόστους Αναπαραγωγή Μετάλλαξη Κριτήριο τερματισμού Άπληστος αλγόριθμος απότομης καθόδου Αποτελέσματα Επιταχύνσεις Συμπιεσμένος πίνακας συγκρούσεων Βελτίωση από τη χρήση του άπληστου αλγορίθμου απότομης καθόδου Μέγεθος επιλογής τουρνουά Ποιότητα λύσεων Περιορισμοί και πλεονεκτήματα Συμπεράσματα και μελλοντικές κατευθύνσεις Εύρεση σχεδίου κίνησης αυτόνομου υποβρυχίου οχήματος Εισαγωγή Σχεδιασμός κίνησης για UVMS Οι GPUs στον σχεδιασμό κίνησης

11 ΠΕΡΙΕΧΟΜΕΝΑ Αποδοτικός σχεδιασμός κίνησης Κινηματική ανάλυση του UVMS Σχεδιασμός κίνησης χωρίς συγκρούσεις σε Bump-επιφάνεια Μέθοδος ολικού σχεδιασμού κίνησης Προσέγγιση διαδρομής Γενετικός αλγόριθμος Παράλληλη διαδικασία Αποτελέσματα Σύγκριση σειριακής και παράλληλης μεθόδου Ποιότητα λύσεων Συμπεράσματα Μέθοδος τοπικού σχεδιασμού κίνησης Αποδοτική εκτέλεση εργασίας Περιγραφή της αντικειμενικής συνάρτησης Υλοποίηση του αλγορίθμου Υλοποίηση εξελικτικού αλγόριθμου Αξιολόγηση της μεθόδου - Αποτελέσματα Συμπεράσματα Επιτάχυνση της Μεθόδου Μοριακής Προσομοίωσης Monte Carlo για Ημιφθοριωμένα Αλκάνια Εισαγωγή Μοριακή προσομοίωση Monte Carlo Παράλληλη υλοποίηση σε GPU της μεθόδου MC Η μέθοδος parallel tempering Συμπεράσματα Συμπεράσματα - μελλοντικές κατευθύνσεις Περιορισμοί αρχιτεκτονικής και επιθυμητά αλγοριθμικά χαρακτηριστικά Μελλοντικές κατευθύνσεις

12 4 ΠΕΡΙΕΧΟΜΕΝΑ

13 Γλωσσάρι 5 Γλωσσάρι API Διεπαφή προγράμματος εφαρμογής. AUV Αυτόνομα υποθαλάσσια οχήματα. Coalesced access pattern Προσβάσεις σε συνεχόμενες θέσεις μνήμης. CUDA Αρχιτεκτονική υπολογισμού ενοποιημένων συσκευών. ETP Πρόβλημα χρονοπρογραμματισμού εξετάσεων Πανεπιστημίων. GPGPU Γενικού σκοπού μονάδα επεξεργασίας γραφικών. GPU Μονάδα επεξεργασίας γραφικών. IAUV Αυτόνομα υποθαλάσσια οχήματα παρέμβασης. Pinned memory Δεσμευμένη μνήμη που βρίσκεται πάντα στην RAM και δεν πηγαίνει στον δίσκο. Prefix sum Άθροισμα ενός στοιχείου και του προηγούμενού του. PSO Βελτιστοποίηση σμήνους σωματιδίων. Reduction Λειτουργία στον παράλληλο προγραμματισμό που κάνει ταυτόχρονα την ίδια πράξη σε πολλές θέσεις μέχρι να επιτευχθεί το τελικό αποτέλεσμα. ROV Τηλεκατευθυνόμενα οχήματα. Streams Ροές εκτέλεσης. UUV Μη επανδρωμένα υποθαλάσσια οχήματα. UVMS Υποθαλάσσια οχήματα με βραχίονα. VPU Μονάδα επεξεργασίας εικόνας. Zero-copy pinned memory Δεσμευμένη μνήμη που βρίσκεται στη RAM και μπορεί να προσπελαστεί από τη συσκευή.

14 6 Ακρωνύμια Ακρωνύμια API Application Programming Interface. AUV Autonomous Underwater Vehicle. CSR Compressed Sparse Row. CUDA Compute Unified Device Architecture. ETP Examination Timetabling Problem. GPGPU General Purpose Graphics Processing Unit. GPU Graphics Processing Unit. GRASP Greedy Randomized Adaptive Search Procedure. IAUV Intervention Autonomous Underwater Vehicles. LBL Long BaseLine. PSO Particle Swarm Optimization. ROV Remotely Operated Vehicles. USBL Ultra Short BaseLine. UUV Unmanned Underwater Vehicles. UVMS Underwater Vehicle Manipulator Systems. VPU Visual Processing Unit.

15 Κατάλογος πινάκων 2.1 Μεγαλύτερος υπερ-υπολογιστής στον κόσμο (Νοέμβριος 2013) Τεχνικά χαρακτηριστικά των καρτών γραφικών ανά γενιά Αρχικοποίηση πίνακα καταμέτρησης για k = 2 15 και k = 2 20 (χρόνος σε ms) Προβλήματα του Πανεπιστημίου Τορόντο Συνολική επιτάχυνση του αλγορίθμου για την "παραλληλοποίηση γονιδίου" Χρόνος εκτέλεσης υπολογισμού κόστους στην GPU και βελτίωση χρόνου με τον συμπιεσμένο πίνακα συγκρούσεων Μέση απόσταση (%) από την καλύτερη λύση της βιβλιογραφίας με τον γενετικό αλγόριθμο (INF: infeasible solution) Μέση απόσταση (%) από την καλύτερη λύση της βιβλιογραφίας με τον υβριδικό εξελικτικό αλγόριθμο Μέση απόσταση (%) από την καλύτερη λύση της βιβλιογραφίας με τον γενετικό αλγόριθμο και μέγεθος επιλογής τουρνουά 10 (INF: infeasible solution) Μέση απόσταση (%) από την καλύτερη λύση της βιβλιογραφίας με τον γενετικό αλγόριθμο και μέγεθος επιλογής τουρνουά population size/32 (INF: infeasible solution) Ελάχιστο, μέγιστο και μέσο κόστος με μέγεθος πληθυσμού Ελάχιστο, μέγιστο και μέσο κόστος με μέγεθος πληθυσμού Σύγκριση με άλλες εξελικτικές μεθόδους και με την καλύτερη λύση της βιβλιογραφίας Διαμόρφωση των νημάτων Χρόνος εκτέλεσης σειριακής και παράλληλης προσέγγισης και επιτάχυνση Παράμετροι γενετικού αλγορίθμου Χρόνος εκτέλεσης κατασκευής Bump-επιφάνειας Συντελεστές βάρους MJD Μήκος πλέγματος και βήμα Χαρακτηριστικά του UVMS Τελικές διαμορφώσεις χωρίς υπάρχον σχέδιο Συντελεστές βάρους της f obj Διαμορφώσεις του υπάρχοντος σχεδίου κίνησης

16 8 ΚΑΤΑΛΟΓΟΣ ΠΙΝΑΚΩΝ 5.11 Τελικές διαμορφώσεις του σχεδίου κίνησης με ήδη υπάρχον σχέδιο Συντελεστές βάρους της f obj Τιμές του όρου MJD Παράμετροι εξελικτικού αλγόριθμου Χρόνοι εκτέλεσης στη CPU και στη GPU για τα 2 συστήματα F 12 H 12 στους Τ = 390 Κ και P = 100 atm για τις 2 υπορουτίνες Χρόνοι εκτέλεσης στη CPU και στη GPU για τα 2 συστήματα F 12 H 12 στους Τ = 390 Κ και P = 100 atm για όλο τον MC αλγόριθμο

17 Κατάλογος σχημάτων 2.1 Ο νόμος του Moore Ταχύτητα του ρολογιού με το πέρασμα του χρόνου Η κάρτα GTX 760 με 1152 πυρήνες Η κάρτα GT 640 με 384 πυρήνες για φορητούς υπολογιστές Η καρτα Tegra K1 για tablets Η κάρτα Tesla K20 για σταθμούς εργασίας με 2496 πυρήνες Αρχιτεκτονική Fermi των NVIDIA GPUs Ιεραρχία μνήμης των NVIDIA GPUs Εξυπηρετητής με πολλές GPUs Παράδειγμα υπολογισμού prefix sum για N = 14 και k = Παράδειγμα της εξάλειψης του συγχρονισμού νημάτων για N = 10 και k = Μεταφορά δεδομένων από τη CPU στη GPU (χρόνος σε ms) Καταμέτρηση εμφανίσεων (N = 2 23, χρόνος σε ms) για "T20" (αριστερά) και "T13" (δεξιά) Επικάλυψη πίνακα εισόδου με καταμέτρηση εμφανίσεων για την πλατφόρμα "T20" Επικάλυψη πίνακα εισόδου με καταμέτρηση εμφανίσεων για την πλατφόρμα "T13" Εξάλειψη συγχρονισμού νημάτων Σύγκριση της επικάλυψης των μεταφορών με την εξάλειψη του συγχρονισμού νημάτων στην πλατφόρμα "T20" Σύγκριση της επικάλυψης των μεταφορών με την εξάλειψη του συγχρονισμού νημάτων στην πλατφόρμα "T13" Αλγόριθμοι ταξινόμησης για k = 2 13 στην πλατφόρμα T Άμεση κωδικοποίηση: Τελεστής διασταύρωσης ενός σημείου μεταξύ δυο χρωμοσωμάτων μετά το δεύτερο γονίδιο. E1-E5: εξετάσεις, T1-T3: χρονικές περίοδοι Έμμεση κωδικοποίηση: Τελεστής διασταύρωσης ενός σημείου μεταξύ δυο χρωμοσωμάτων μετά το πρώτο γονίδιο. Οι εξετάσεις σε έντονο κόκκινο λείπουν ή εμφανίζονται δυο φορές E1-E5: εξετάσεις, T1-T3: χρονικές περίοδοι Συμπιεσμένος πίνακας συγκρούσεων Επιτάχυνση στον υπολογισμό κόστους για την "παραλληλοποίηση γονιδίου" με τη χρήση του συμπιεσμένου πίνακα συγκρούσεων

18 10 ΚΑΤΑΛΟΓΟΣ ΣΧΗΜΑΤΩΝ 4.5 Επιτάχυνση στην αναπαραγωγή για την "παραλληλοποίηση γονιδίου" με την υλοποίηση δύο πυρήνων Επιτάχυνση στη μετάλλαξη για την "παραλληλοποίηση γονιδίου" Επιτάχυνση στον άπληστο αλγόριθμο απότομης καθόδου Περιγραφικά στατιστικά για μέγεθος πληθυσμού Περιγραφικά στατιστικά για μέγεθος πληθυσμού Σχηματική αναπαράσταση ενός UVMS Σχέδιο κίνησης Σημεία του συστήματος UVMS Το UVMS και τα σημεία του σόναρ α) στην Bump-επιφάνεια β) στον χώρο Αναπαράσταση των σημείων του σόναρ στην Bump-επιφάνεια στο επίπεδο x-z και για y = Περιγραφή σεναρίου Επιτάχυνση διαδικασίας αποφυγής εμποδίων Τελική λύση Διάγραμμα ροής της μεθόδου Πλέγμα σημείων ελέγχου και τριγωνοποιημένο εμπόδιο Σύγκλιση εξελικτικού αλγορίθμου Περιβάλλον σεναρίου Αποτέλεσμα σχεδίου κίνησης χωρίς υπάρχον σχέδιο, άποψη από πάνω Αποτέλεσμα σχεδίου κίνησης χωρίς υπάρχον σχέδιο, άποψη από πλάγια Υπάρχον σχέδιο κίνησης Αποτέλεσμα σχεδίου κίνησης με υπάρχον σχέδιο, άποψη από πάνω Αποτέλεσμα σχεδίου κίνησης με υπάρχον σχέδιο, άποψη από πλάγια MJD - καμπύλη ελαχίστων τετραγώνων kci - καμπύλη ελαχίστων τετραγώνων Υψηλή τιμή συντελεστή βάρους του MJD (w 3 ) Χαμηλή τιμή συντελεστή βάρους του MJD (w 3 ) Απεικονίσεις του συστήματος στους 330 K και στους 300 K, όπου φαίνεται η αυτο-οργάνωση του συστήματος Ενδεικτικές κινήσεις πάνω στην αλυσίδα-1ο μέρος Ενδεικτικές κινήσεις πάνω στην αλυσίδα-2ο μέρος Η κίνηση διακύμανσης όγκου Λειτουργία μείωσης αθροίσματος στην κοινή μνήμη Ατομική λειτουργία πρόσθεσης μεταξύ πολλών μπλοκ

19 Περίληψη Στην παρούσα διατριβή παρουσιάζονται παράλληλοι αλγόριθμοι και εφαρμογές σε πολυπύρηνες μονάδες επεξεργασίας γραφικών. Πιο συγκεκριμένα, εξετάζονται οι μέθοδοι σχεδίασης ενός παράλληλου αλγορίθμου για την επίλυση τόσο απλών και κοινών προβλημάτων, όπως η ταξινόμηση, όσο και υπολογιστικά απαιτητικών προβλημάτων, έτσι ώστε να εκμεταλλευτούμε πλήρως την τεράστια υπολογιστική δύναμη που προσφέρουν οι σύγχρονες μονάδες επεξεργασίας γραφικών. Πρώτο πρόβλημα που εξετάστηκε είναι η ταξινόμηση, η οποία είναι ένα από τα πιο συνηθισμένα προβλήματα στην επιστήμη των υπολογιστών. Υπάρχει σαν εσωτερικό πρόβλημα σε πολλές εφαρμογές, επομένως πετυχαίνοντας πιο γρήγορη ταξινόμηση πετυχαίνουμε πιο καλή απόδοση γενικότερα. Στο Κεφάλαιο 3 περιγράφονται όλα τα βήματα σχεδιασμού για την εκτέλεση ενός αλγορίθμου ταξινόμησης για ακεραίους, της count sort, σε μια μονάδα επεξεργασίας γραφικών. Σημαντική επίδραση στην απόδοση είχε η αποφυγή του συγχρονισμού των νημάτων στο τελευταίο βήμα του αλγορίθμου. Στη συνέχεια παρουσιάζονται εφαρμογές παράλληλων αλγορίθμων σε υπολογιστικά απαιτητικά προβλήματα. Στο Κεφάλαιο 4, εξετάζεται το πρόβλημα χρονοπρογραμματισμού εξετάσεων Πανεπιστημίων, το οποίο είναι ένα πρόβλημα συνδυαστικής βελτιστοποίησης. Για την επίλυσή του χρησιμοποιείται ένας υβριδικός εξελικτικός αλγόριθμος, ο οποίος εκτελείται εξ' ολοκλήρου στην μονάδα επεξεργασίας γραφικών. Η τεράστια υπολογιστική δύναμη της GPU και ο παράλληλος προγραμματισμός δίνουν τη δυνατότητα χρήσης μεγάλων πληθυσμών έτσι ώστε να εξερευνήσουμε καλύτερα τον χώρο λύσεων και να πάρουμε καλύτερα ποιοτικά αποτελέσματα. Στο επόμενο κεφάλαιο γίνεται επίλυση του προβλήματος σχεδιασμού κίνησης για υποθαλάσσια οχήματα με βραχίονα. Εξετάζεται το πρόβλημα τόσο του ολικού σχεδιασμού όσο και του τοπικού. Στην πρώτη περίπτωση είναι σημαντική η καλή λύση και η ακρίβεια και ο παράλληλος αλγόριθμος που χρησιμοποιείται για την αναπαράσταση του περιβάλλοντος εργασίας σε μια Bump-επιφάνεια βοηθάει προς αυτή την κατεύθυνση. Στη δεύτερη περίπτωση, το πρόβλημα είναι πρόβλημα πραγματικού χρόνου και μας ενδιαφέρει η ταχύτητα εύρεσης της επόμενης θέσης του οχήματος. Ο παράλληλος προγραμματισμός και η GPU βοηθούν σημαντικά σε αυτό. Τελευταία εφαρμογή που εξετάστηκε είναι η μελέτη ενός συστήματος ημιφθοριωμένων αλκανίων με την μοριακή προσομοίωση Monte Carlo. Η παραλληλοποίηση ενός μέρους, του πιο χρονοβόρου, του αλγορίθμου έδωσε τη δυνατότητα εξέτασης ενός πολύ μεγαλύτερου συστήματος σε αποδεκτό χρόνο. Σε γενικές γραμμές, γίνεται φανερό ότι ο παράλληλος προγραμματισμός και οι σύγχρονες πολυπύρηνες αρχιτεκτονικές, όπως οι μονάδες επεξεργασίας γραφικών, δίνουν νέες δυνατότητες στην αντιμετώπιση καθημερινών προβλημάτων, προβλημάτων πραγματικού χρόνου και προβλημάτων συνδυαστικής βελτιστοποίησης.

20 12 ΚΑΤΑΛΟΓΟΣ ΣΧΗΜΑΤΩΝ ΛΕΞΕΙΣ-ΚΛΕΙΔΙΑ: Παράλληλος προγραμματισμός, πολυπύρηνα συστήματα υπολογιστών, μονάδες επεξεργασίας γραφικών, count sort, χρονοπρογραμματισμός εξετάσεων Πανεπιστημίων, εξελικτικοί αλγόριθμοι, σχεδιασμός κίνησης, μοριακή προσομοίωση, Monte Carlo.

21 Abstract In this thesis, parallel algorithms and applications in manycore graphics processing units are presented. More specifically, we examine methods of designing a parallel algorithm for solving both simple and common problems such as sorting, and computationally demanding problems, so as to fully exploit the enormous computing power of modern graphics processing units (GPUs). First problem considered is sorting, which is one of the most common problems in computer science. It exists as an internal problem in many applications. erefore, sorting faster, results in better performance in general. Chapter 3 describes all design options for the implementation of a sorting algorithm for integers, count sort, on a graphics processing unit. e elimination of thread synchronization in the last step of the algorithm had a significant effect on the performance. Chapter 4 addresses the examination timetabling problem for Universities, which is a combinatorial optimization problem. A hybrid evolutionary algorithm, which runs entirely on GPU, was used to solve the problem. e tremendous computing power of GPU and parallel programming enable the use of large populations in order to explore better the solution space and get better quality results. In the next chapter, the problem of motion planning for underwater vehicle manipulator systems is examined. In the gross motion planning problem, it is important to achieve a good solution with high accuracy. e parallel algorithm used for the representation of the working environment in a Bump-surface is a step towards this direction. In the local motion planning problem, which is a real-time problem, the time needed to find the next configuration of the vehicle is crucial. Parallel programming and the GPU greatly assist in this online problem. Last application considered is the atomistic Monte Carlo simulation of semifluorinated alkanes. e parallelization of part of the algorithm, the most time-consuming, enabled the study of a much larger system in an acceptable execution time. In general, it becomes obvious that parallel programming and new novel manycore architectures, such as graphics processing units, give new capabilities for solving everyday problems, real time and combinatorial optimization problems. KEYWORDS: Parallel programming, manycore architectures, graphics processing units, count sort, examination timetabling problem, evolutionary algorithms, motion planning, molecular simulations, Monte Carlo. 13

22 14 ΚΑΤΑΛΟΓΟΣ ΣΧΗΜΑΤΩΝ

23 Κεφάλαιο 1 Εισαγωγή 1.1 Αντικείμενο και σκοπός της διατριβής Τις τελευταίες δεκαετίες υπάρχει ανάγκη για συστήματα υπολογιστών με ολοένα και μεγαλύτερες υπολογιστικές δυνατότητες. Ο άνθρωπος στην προσπάθεια του να κατανοήσει καλύτερα τους νόμους της φύσης έχει βρει έναν καλό σύμμαχο, τον υπολογιστή. Εκεί μπορεί να προσομοιώνει φυσικά προβλήματα και να βλέπει την εξέλιξή τους. Όμως, αυτή η συνεχής αναζήτηση οδηγεί σε ολοένα και μεγαλύτερα προβλήματα προς λύση, απαίτηση για μεγαλύτερη ακρίβεια και μεγαλύτερη ταχύτητα στην επίτευξη των αποτελεσμάτων. Ενδεικτικά προβλήματα είναι η πρόβλεψη καιρού, η πρόβλεψη κινήσεων πλανητών, η μελέτη του DNA, η εύρεση νέων φαρμάκων και πολλά άλλα. Προκειμένου να γίνει αυτό χρειαζόμαστε είτε ταχύτερους υπολογιστές είτε πιο πολλούς υπολογιστές που να συνεργάζονται μεταξύ τους. Παρόλο που τα τελευταία χρόνια έχει καθιερωθεί η χρήση πολυπύρηνων συστημάτων σε προσωπικούς υπολογιστές, στην πραγματικότητα η ιδέα των παράλληλων υπολογιστικών συστημάτων είναι παλιά [1]. Το 1958 ο Gill γράφει για παράλληλο προγραμματισμό [2], ενώ το 1959 ο Holland γράφει για υπολογιστή που να μπορεί να εκτελεί πολλά υποπρογράμματα ταυτόχρονα [3]. Ο Conway περιγράφει τη σχεδίαση ενός παράλληλου συστήματος καθώς και τον προγραμματισμό του το 1963 [4]. Πιο πρόσφατα ο Flynn και ο Rudd γράφουν για την ανάγκη για ολοένα και καλύτερη απόδοση και συμπεραίνουν ότι το μέλλον είναι παράλληλο [5]. Ενώ όμως για κάποια χρόνια στο τέλος της δεκαετίας του 90 η ταχύτητα των ηλεκτρονικών υπολογιστών αυξανόταν συνεχώς και οι προγραμματιστές έβλεπαν τις εφαρμογές τους να τρέχουν γρηγορότερα χωρίς αυτοί να καταβάλλουν κάποια προσπάθεια επιπλέον, από το 2004 και μετά αυτό έπαψε να ισχύει. Τότε υπήρξε μια στροφή των κατασκευαστών ηλεκτρονικών υπολογιστών προς παράλληλες αρχιτεκτονικές, λόγω φυσικών περιορισμών [6]. Ενώ όμως το υλικό έχει πάρει ξεκάθαρα αυτήν την κατεύθυνση, το λογισμικό δεν ακολουθεί, τουλάχιστον με την ίδια ταχύτητα. Μια παράλληλη αρχιτεκτονική που έχει προσελκύσει το ενδιαφέρον πολλών επιστημόνων και ερευνητών τα τελευταία χρόνια είναι οι μονάδες επεξεργασίας γραφικών (Graphics Processing Unit (GPU)). Οι σύγχρονες μονάδες επεξεργασίας γραφικών αποτελούν πλέον τμήμα κάθε προσωπικού υπολογιστή και προσφέρουν τεράστια υπολογιστική δύναμη σε αρκετά χαμηλό κόστος. Προκειμένου όμως να αξιοποιηθεί αυτή η τεράστια υπολογιστική δύναμη πρέπει να εξεταστεί προσεκτικά η αρχιτεκτονική τους, να σχεδιαστούν τα κατάλληλα 15

24 16 ΚΕΦΑΛΑΙΟ 1. ΕΙΣΑΓΩΓΗ παράλληλα μοντέλα αλγορίθμων και να ληφθούν υπόψη όλοι οι περιορισμοί που θέτει η ίδια η μονάδα. Οι σύγχρονες GPUs έχουν χρησιμοποιηθεί στην επίλυση πάρα πολλών προβλημάτων όπου έχουν δείξει τη δυναμική τους. Ενδεικτικά πεδία στα οποία έχουν χρησιμοποιηθεί είναι τα οικονομικά, η υπολογιστική ρευστομηχανική, η ανάλυση μεγάλου όγκου δεδομένων, η ανάλυση εικόνας, η επιστήμη των υλικών, η πρόγνωση καιρού και πολλά άλλα. Σκοπός της παρούσας διατριβής είναι η αξιοποίηση της καινούριας αυτής αρχιτεκτονικής για την επίλυση υπολογιστικά απαιτητικών προβλημάτων, η βελτιστοποίηση της απόδοσης και η διερεύνηση των δυνατοτήτων που μας προσφέρει στην επίλυση τέτοιων προβλημάτων. 1.2 Προβλήματα που επιλύθηκαν Τα γενικότερα προβλήματα με τα οποία ασχολείται η παρούσα διατριβή είναι: Έλλειψη αποδοτικής σχεδίασης παράλληλων αλγορίθμων για επίλυση κλασσικών προβλημάτων. Μέχρι πρόσφατα, παράλληλα συστήματα υπήρχαν μόνο σε Πανεπιστήμια, Ερευνητικά Ινστιτούτα και κυβερνητικές εγκαταστάσεις, με σκοπό την επίλυση επιστημονικών και ερευνητικών προβλημάτων με τεράστιο όγκο δεδομένων προς επεξεργασία. Έτσι, δεν αναπτύχθηκαν αποδοτικοί παράλληλοι αλγόριθμοι για κοινά προβλήματα. Δεδομένου όμως του ότι σήμερα όλοι οι προσωπικοί υπολογιστές έχουν τέσσερις τουλάχιστον πυρήνες και ότι διαθέτουν τουλάχιστον μία GPU, υπάρχει η ανάγκη να αναπτυχθούν τέτοιοι αλγόριθμοι. Έλλειψη αλγορίθμων και υπολογιστικών πόρων για επίλυση απαιτητικών υπολογιστικά προβλημάτων. Όπως προαναφέρθηκε η πρόσβαση σε παράλληλα συστήματα μέχρι πρότινος δεν ήταν εύκολη για όλη την επιστημονική κοινότητα. Παίρνοντας υπόψιν την μεγάλη αυτή αλλαγή κατεύθυνσης στο υλικό είναι ανάγκη πλέον να χρησιμοποιηθούν αποδοτικά οι πόροι που υπάρχουν διαθέσιμοι ακόμα και στους απλούς χρήστες. Έλλειψη αλγορίθμων και υπολογιστικών πόρων για επίλυση προβλημάτων βελτιστοποίησης σε πραγματικό χρόνο. Τα προβλήματα βελτιστοποίησης απαιτούν πολύ μεγάλους χρόνους υπολογισμού λύσεων. Αυτό, σε συνδυασμό με την ταχύτητα που μπορεί να δώσει ένας σειριακός υπολογιστής, δεν δίνουν την δυνατότητα επίλυσής τους σε πραγματικό χρόνο. Πλέον, είναι δυνατόν να ερευνηθεί αυτή η δυνατότητα. 1.3 Επιστημονικές περιοχές Η παρούσα διατριβή εκπονήθηκε στο Εργαστήριο Συστημάτων Υπολογιστών του Τμήματος Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών της Πολυτεχνικής σχολής του Πανεπιστημίου Πατρών. Αποτελεί συνέχεια της έρευνας που γίνεται στο εργαστήριο στην περιοχή της παράλληλης επεξεργασίας. Οι επιστημονικές περιοχές που μελετήθηκαν στα πλαίσια της διατριβής αυτής είναι:

25 1.4. ΣΥΜΒΟΛΗ ΤΗΣ ΔΙΑΤΡΙΒΗΣ 17 Αλγόριθμοι ταξινόμησης Η ταξινόμηση είναι ένα πολύ σύνηθες πρόβλημα στην επιστήμη των υπολογιστών και έχει απασχολήσει πολλούς επιστήμονες για πολλά χρόνια. Οι πιο συνήθεις ταξινομήσεις γίνονται με βάση αριθμητική ή αλφαβητική σειρά. Η ταξινόμηση χρησιμοποιείται σε άλλους αλγορίθμους όπως η αναζήτηση και η συγχώνευση. Υπολογιστική νοημοσύνη Η υπολογιστική νοημοσύνη είναι παρακλάδι της τεχνητής νοημοσύνης και αποτελείται κυρίως από τα νευρωνικά δίκτυα και από τους εξελικτικούς αλγορίθμους. Πηγάζει από βιολογικά συστήματα και βοηθάει στη λύση προβλημάτων βελτιστοποίησης. Σχεδιασμός κίνησης Ο σχεδιασμός κίνησης χρησιμοποιείται στην πλοήγηση αυτόνομων ρομπότ, σε ρομποτικές εγχειρήσεις, στην προσομοίωση ψηφιακών χαρακτήρων καθώς και σε άλλες εφαρμογές. Είναι μια περιοχή που γίνεται πολύ μεγάλη ερευνά τα τελευταία χρόνια και όπως φαίνεται αυτό θα συνεχιστεί. Μοριακές προσομοιώσεις Οι μοριακές προσομοιώσεις αποτελούν τον συνδετικό κρίκο μεταξύ θεωρητικών προβλέψεων και πειραματικών αποτελεσμάτων. Πιο διαδεδομένες τεχνικές είναι η μοριακή δυναμική και το Monte Carlo. 1.4 Συμβολή της διατριβής Η συμβολή της παρούσας διατριβής συνοψίζεται στα εξής σημεία: Αλγοριθμική βελτίωση στον αλγόριθμο ταξινόμησης count sort. Ο αλγόριθμος count sort δε βασίζεται σε συγκρίσεις και έχει πολυπλοκότητα O (N+k), όπου N το πλήθος των στοιχείων και k το εύρος τους. Έχει σταθερή και μη σταθερή έκδοση. Δείχνεται πώς μπορεί να αποφευχθεί ο συγχρονισμός των νημάτων στην παράλληλη έκδοση του αλγορίθμου, οδηγώντας σε καλύτερη απόδοση από άλλους προϋπάρχοντες αλγορίθμους. Επίλυση του προβλήματος χρονοπρογραμματισμού εξετάσεων Πανεπιστημίων με παράλληλο υβριδικό εξελικτικό αλγόριθμο και χρήση μεγάλων πληθυσμών για καλύτερη αναζήτηση στο πεδίο των λύσεων. Το πρόβλημα χρονοπρογραμματισμού εξετάσεων Πανεπιστημίων είναι πολύ σημαντικό για κάθε Ίδρυμα, δεδομένου ότι επηρεάζει την απόδοση των φοιτητών του. Έχουν προταθεί πολλές τεχνικές στη βιβλιογραφία για την επίλυσή του. Παρουσιάζονται τρόποι επίλυσής του για την αποδοτική χρησιμοποίηση της τεράστιας υπολογιστικής δύναμης της GPU και την εύρεση καλών ποιοτικά λύσεων. Δημιουργία παράλληλου αλγορίθμου για την αναπαράσταση του περιβάλλοντος εργασίας μη επανδρωμένου υποθαλάσσιου οχήματος κάνοντας χρήση των τελευταίων δεδομένων του αισθητήρα προς την κατεύθυνση της επίλυσης του προβλήματος σχεδιασμού κίνησης σε πραγματικό χρόνο. Η διεκπεραίωση εργασιών από υποθαλάσσια οχήματα σε μεγάλα βάθη και με πλήρη αυτονομία είναι πλέον επιτακτική ανάγκη. Χρειάζεται λοιπόν η αντιμετώπιση αλλαγών του περιβάλλοντος εργασίας τους να γίνεται σε πραγματικό χρόνο. Προς αυτή την κατεύθυνση κινείται η μέθοδος τοπικού σχεδιασμού που παρουσιάζεται και η οποία κάνει χρήση

26 18 ΚΕΦΑΛΑΙΟ 1. ΕΙΣΑΓΩΓΗ παράλληλου αλγορίθμου για την αναπαράσταση του περιβάλλοντος εργασίας σε Bump-επιφάνεια. Επιτάχυνση μοριακής προσομοίωσης Monte Carlo για ημιφθοριωμένα αλκάνια με δυνατότητα εξέτασης μεγαλύτερων συστημάτων τα οποία βοηθούν στην καλύτερη κατανόηση της αυτο-οργάνωσής τους. Οι μοριακές προσομοιώσεις είναι ο συνδετικός κρίκος ανάμεσα στις θεωρητικές προβλέψεις και τα πειραματικά αποτελέσματα. Παρουσιάζεται ο τρόπος με τον οποίο επιτεύχθηκε μια σημαντική βελτίωση στην απόδοση μιας τέτοιας προσομοίωσης η οποία πλέον δίνει αποτελέσματα σε αποδεκτό χρονικό διάστημα χρησιμοποιώντας παράλληλες τεχνικές. 1.5 Οργάνωση της διατριβής Η διατριβή είναι οργανωμένη σε εφτά κεφάλαια. Το Κεφάλαιο 1 παρουσιάζει την συμβολή και την οργάνωση της διατριβής. Στο Κεφάλαιο 2 γίνεται μια εισαγωγή στα παράλληλα συστήματα υπολογιστών, στις μετρικές που χρησιμοποιούνται για τη μέτρηση της απόδοσής τους, στην αρχιτεκτονική των σύγχρονων μονάδων επεξεργασίας γραφικών και στο προγραμματιστικό μοντέλο της Compute Unified Device Architecture (CUDA). Το Κεφάλαιο 3 παρουσιάζει όλα τα βήματα για την μεταφορά του σειριακού αλγορίθμου ταξινόμησης count sort σε μια μονάδα επεξεργασίας γραφικών, τον τρόπο παραλληλοποίησής του και το πώς αποφεύγεται ο συγχρονισμός των νημάτων στο τέταρτο βήμα του αλγορίθμου, κάτι το οποίο οδηγεί σε πολύ καλύτερη απόδοση. Στο Κεφάλαιο 4 προτείνεται η επίλυση του προβλήματος χρονοπρογραμματισμού εξετάσεων Πανεπιστημίων με έναν υβριδικό εξελικτικό αλγόριθμο και τη χρήση GPU. Η GPU δίνει τη δυνατότητα χρήσης μεγάλων πληθυσμών κάτι που οδηγεί σε καλύτερη εξερεύνηση στο χώρο λύσεων. Στο Κεφάλαιο 5 εξετάζεται η χρήση GPU για τον σχεδιασμό κίνησης για ένα υποθαλάσσιο όχημα. Στο πρώτο μέρος γίνεται επίλυση του προβλήματος off-line, ενώ στο δεύτερο μέρος το πρόβλημα λύνεται on-line, λαμβάνοντας υπόψιν τα τελευταία δεδομένα των αισθητήρων. Το Κεφάλαιο 6 παρουσιάζει την διαδικασία παραλληλοποίησης ενός αλγορίθμου μοριακής προσομοίωσης Monte Carlo. Τέλος, το Κεφάλαιο 7 συνοψίζει τα αποτελέσματα και τους περιορισμούς της παρούσας διατριβής και προτείνει μελλοντικές κατευθύνσεις για έρευνα σε αυτό το πεδίο.

27 Κεφάλαιο 2 Επισκόπηση ερευνητικής περιοχής 2.1 Εισαγωγή Σε αυτό το κεφάλαιο γίνεται μια ιστορική αναδρομή στα διάφορα παράλληλα συστήματα υπολογιστών που αναπτύχθηκαν, στην ανάγκη που υπάρχει πλέον για αξιοποίηση των σημερινών συστημάτων καθώς και στα διάφορα προγραμματιστικά μοντέλα. Δεδομένου ότι οι ταχύτητες του ρολογιού δεν μπορούν να αυξηθούν άλλο λόγω της παραγόμενης θερμότητας, γίνεται φανερό ότι αν θέλουμε μεγαλύτερη απόδοση πρέπει να εκμεταλλευτούμε την δυνατότητα που μας δίνουν οι πολλοί πυρήνες που υπάρχουν σε ένα οποιοδήποτε σύστημα σήμερα. Στο δεύτερο μέρος του κεφαλαίου θα δούμε την αρχιτεκτονική των καρτών γραφικών καθώς και το προγραμματιστικό μοντέλο της NVIDIA, την CUDA. 2.2 Παράλληλα Συστήματα Υπολογιστών Κάθε μέρα φαίνεται όλο και περισσότερο η ανάγκη για μεγαλύτερη υπολογιστική ισχύ. Ο άνθρωπος προσπαθεί να λύσει όλο και πιο πολύπλοκα προβλήματα, τα οποία απαιτούν περισσότερους υπολογιστικούς πόρους. Είναι πολλά πλέον τα προβλήματα τα οποία απαιτούν πάρα πολλούς υπολογισμούς και πρέπει να λυθούν σε ένα αποδεκτό χρονικό διάστημα. H πρόγνωση του καιρού είναι ένα τέτοιο πρόβλημα και είναι λογικό να απαιτείται η λύση του σε λιγότερο της μιας ημέρας. Αυτό πολλές φορές δεν είναι δυνατόν με τις δυνατότητες ενός συμβατικού υπολογιστή. Επίσης, σε άλλα προβλήματα απαιτείται επεξεργασία τεραστίου όγκου δεδομένων που επίσης δεν μπορεί να καλύψει ένας μόνο υπολογιστής. Η λύση σε αυτά τα προβλήματα είναι τα παράλληλα συστήματα υπολογιστών και ο παράλληλος προγραμματισμός. Σε αυτή την κατεύθυνση φαίνεται να οδηγεί και ο νόμος του Moore [7], ο οποίος λέει ότι ο αριθμός των τρανζίστορ σε ένα ολοκληρωμένο κύκλωμα διπλασιάζεται περίπου κάθε δύο χρόνια. Μέχρι πριν λίγα χρόνια αυτό φαινόταν στην ταχύτητα των υπολογιστών η οποία αύξανε συνεχώς. Τα τελευταία χρόνια όμως λόγω της θερμότητας που αναπτύσσεται στα ολοκληρωμένα κυκλώματα, οι κατασκευαστές διάλεξαν έναν διαφορετικό δρόμο, να μειώσουν την ταχύτητα αλλά να αυξήσουν τους επεξεργαστές. Αυτό είχε σαν αποτέλεσμα, τα προγράμματα, τα οποία είχαν γραφτεί για να τρέχουν σε έναν επεξεργαστή να μην μπορούν να τρέξουν γρηγορότερα, αλλά να χρειάζεται να επανασχεδιαστούν ώστε να τρέχουν παράλληλα στους διαθέσιμους πόρους. Ενώ λοιπόν το 19

28 20 ΚΕΦΑΛΑΙΟ 2. ΕΠΙΣΚΟΠΗΣΗ ΕΡΕΥΝΗΤΙΚΗΣ ΠΕΡΙΟΧΗΣ Site National University of Defense Technology Manufacturer NUDT Cores 3,120,000 Linpack Performance (Rmax) 33,862.7 TFlop/s eoretical Peak (Rpeak) 54,902.4 TFlop/s Power 17, kw Memory 1,024,000 GB Interconnect TH Express-2 Operating System Kylin Linux Compiler icc Math Library Intel MKL MPI MPICH2 with a customized GLEX channel Πίνακας 2.1: Tianhe-2 Supercomputer: Ο μεγαλύτερος υπερ-υπολογιστής στον κόσμο (Νοέμβριος 2013)¹ υλικό (hardware) "τρέχει" με μεγάλη ταχύτητα, το λογισμικό (so ware) δεν ακολουθεί μέχρι στιγμής, κάνοντας επιτακτική την ανάγκη να επανεξεταστεί ο τρόπος σκέψης στην επιστήμη των υπολογιστών. Ο παράλληλος προγραμματισμός βοηθάει τους επιστήμονες και τους ερευνητές να λύσουν προβλήματα όχι μόνο σε λιγότερο χρόνο, αλλά και προβλήματα με μεγαλύτερη ακρίβεια στον ίδιο χρόνο που θα εκτελούνταν το αντίστοιχο πρόγραμμα σε έναν υπολογιστή αλλά με πολύ μικρότερη ακρίβεια. Η ιστορία των υπολογιστών αλλά και των παράλληλων συστημάτων έχει τις ρίζες της στην περίοδο του Β' παγκοσμίου πολέμου καθώς και στην περίοδο του ψυχρού πολέμου. Υπήρχε η ανάγκη για να σπάσουν διάφοροι κώδικες, η ανάγκη για σχεδίαση αεροπλάνων και υποβρυχίων καθώς και πυρηνικών όπλων. Η πρώτη προσπάθεια κατασκευής ενός υπερ-υπολογιστή ήταν το Illiac-IV η οποία ξεκίνησε το 1966 και ολοκληρώθηκε μετά από 11 χρόνια και διέθετε 256 επεξεργαστικές μονάδες. Ο πρώτος όμως πραγματικός υπερ-υπολογιστής ήταν ο CRAY-1, ο οποίος κατασκευάστηκε το Στη συνέχεια ακολούθησαν το 1981 ο Caltech s Cosmic Cube που προγραμματιζόταν σε C ή Pascal, πιο μετά ο CM-1 που προγραμματιζόταν σε C, Lisp και Fortran, ο MasPar MP-2 το 1992 που προγραμματιζόταν στη γλώσσα MasPar και στην High Performance Fortran, τα Beowulf clusters της Nasa το 1994, φτάνοντας σήμερα στον κινέζικο Tianhe-2 Supercomputer. Αυτοί είναι μόνο μερικοί από τους υπερ-υπολογιστές που φτιάχτηκαν. Στον Πίνακα 2.1 φαίνονται τα χαρακτηριστικά του πρώτου σε απόδοση υπερ-υπολογιστή στον κόσμο την στιγμή της συγγραφής της διατριβής. 2.3 Ο νόμος του Moore Σύμφωνα με το νόμο του Moore [7] ο αριθμός των τρανζίστορ σε ένα ολοκληρωμένο κύκλωμα αυξάνεται κάθε μήνες (Σχήμα 2.1). Αυτό μέχρι και το 2004 ίσχυε και για την ταχύτητα του ρολογιού όπως φαίνεται και στο Σχήμα 2.2. Τότε όμως οι κατασκευαστές αποφάσισαν να μην αυξήσουν άλλο την ταχύτητα αλλά να τοποθετήσουν ¹

29 2.4. "ΤΟ ΔΩΡΕΑΝ ΓΕΥΜΑ ΤΕΛΕΙΩΣΕ" 21 Σχήμα 2.1: Ο νόμος του Moore² περισσότερους πυρήνες σε ένα ολοκληρωμένο κύκλωμα με μικρότερη ταχύτητα όμως. Αυτή η στροφή στο σχεδιασμό έγινε λόγω της αύξησης της θερμότητας, κάτι το οποίο ήταν γνωστό ότι θα συμβεί. Το 2001 ο Pat Gelsinger από την Intel, σε keynote ομιλία που είχε δώσει στο IEEE Solid-State Circuits Conference είχε πει ότι αν η ταχύτητα συνεχίσει να αυξάνεται με τον ίδιο ρυθμό μέχρι το 2010 ένα ολοκληρωμένο κύκλωμα θα είναι τόσο ζεστό όσο ένας πυρηνικός αντιδραστήρας και μέχρι το 2015 όσο η επιφάνεια του ήλιου! 2.4 "Το δωρεάν γεύμα τελείωσε" Το 2005 ο Herb Sutter δημοσίευσε μια εργασία [6] η οποία υποστήριζε ότι ήρθε η ώρα μιας ακόμα επανάστασης στον προγραμματισμό. Η πρώτη επανάσταση που υπήρξε αφορούσε την εισαγωγή του αντικειμενοστραφούς προγραμματισμού την δεκαετία του 90. Ο Sutter υποστηρίζει ότι οι προγραμματιστές πρέπει να στραφούν στον παράλληλο προγραμματισμό και αυτό θα αποτελέσει μια νέα επανάσταση στον συγκεκριμένο τομέα. 2.5 Ταξινόμηση παράλληλων συστημάτων Μια από τις πιο διαδεδομένες ταξινομήσεις παράλληλων συστημάτων υπολογιστών είναι η ταξινόμηση Flynn [8], η οποία υπάρχει για περίπου μισό αιώνα. Σύμφωνα με αυτή υπάρχουν τέσσερις βασικές κατηγορίες παράλληλων συστημάτων οι οποίες βασίζονται ² ³

30 22 ΚΕΦΑΛΑΙΟ 2. ΕΠΙΣΚΟΠΗΣΗ ΕΡΕΥΝΗΤΙΚΗΣ ΠΕΡΙΟΧΗΣ Σχήμα 2.2: Ταχύτητα του ρολογιού με το πέρασμα του χρόνου³ στην ακολουθία εντολών (Instruction Stream) που εκτελούνται από έναν υπολογιστή και στην ακολουθία δεδομένων (Data Stream) που χρησιμοποιούνται από τις εντολές. Σύμφωνα λοιπόν με το πόσες εντολές ή δεδομένα χρησιμοποιούνται την ίδια χρονική στιγμή υπάρχουν οι παρακάτω κατηγορίες συστημάτων: SISD (Single Instruction Single Data) Αυτός ο τύπος αφορά σειριακό υπολογιστή στον οποίο υπάρχει μια μονάδα επεξεργασίας η οποία μπορεί να εκτελεί μία εντολή σε κάθε χρονική στιγμή σε συγκεκριμένα δεδομένα. SIMD (Single Instruction Multiple Data) Σε αυτή την κατηγορία ανήκουν οι παράλληλοι υπολογιστές οι οποίοι μπορούν να εκτελούν την ίδια εντολή σε διαφορετικά δεδομένα στον ίδιο κύκλο ρολογιού. Δηλαδή όλοι οι διαθέσιμοι επεξεργαστές εκτελούν την ίδια εντολή σε διαφορετικό κομμάτι δεδομένων. Ένα παρόμοιο μοντέλο έχουν και οι σύγχρονες μονάδες επεξεργασίας γραφικών. MISD (Multiple Instruction Single Data) Η συγκεκριμένη κατηγορία αναφέρεται σε παράλληλους υπολογιστές που εκτελούν πολλές εντολές σε συγκεκριμένα δεδομένα σε κάθε χρονική στιγμή. Δεν υπάρχουν εμπορικά συστήματα που να ανήκουν σε αυτή την κατηγορία παρά μόνο πειραματικά. MIMD (Multiple Instruction Multiple Data)

31 2.6. ΜΕΤΡΗΣΗ ΤΗΣ ΑΠΟΔΟΣΗΣ ΕΝΟΣ ΠΑΡΑΛΛΗΛΟΥ ΣΥΣΤΗΜΑΤΟΣ ΥΠΟΛΟΓΙΣΤΩΝ23 Στην τελευταία κατηγορία ανήκουν τα συστήματα στα οποία ο κάθε επεξεργαστής εκτελεί διαφορετικές εντολές σε διαφορετικά δεδομένα. Εδώ ανήκουν και οι σύγχρονοι multi-core υπολογιστές. 2.6 Μέτρηση της απόδοσης ενός παράλληλου συστήματος υπολογιστών Ο λόγος για τον οποίο χρησιμοποιούνται παράλληλα συστήματα υπολογιστών είναι κυρίως η μείωση του χρόνου λύσης ενός προβλήματος. Αυτόματα προκύπτει το ερώτημα της αποδοτικότητας του κάθε συστήματος. Το βέλτιστο είναι να μειωθεί ο χρόνος εκτέλεσης τόσες φορές όσοι και οι διαθέσιμοι επεξεργαστές [9]. Το πρώτο μέτρο αποδοτικότητας λοιπόν είναι η επιτάχυνση (speedup) η οποία ορίζεται ως: S = T (1) T (p) (2.1) Στην Εξίσωση 2.1, T (1) είναι ο χρόνος εκτέλεσης του πιο γρήγορου σειριακού αλγορίθμου, ενώ T (p) είναι ο χρόνος εκτέλεσης του αλγορίθμου παράλληλα σε p επεξεργαστές. Για να μπορέσουμε να πάρουμε τη βέλτιστη επιτάχυνση θα πρέπει όλο το πρόγραμμα να μπορεί να εκτελεστεί παράλληλα χωρίς να υπάρχουν εξαρτήσεις δεδομένων ή οποιεσδήποτε άλλες. Όμως αυτό συμβαίνει σπάνια. Ο νόμος του Amdahl δείχνει αυτό ακριβώς: S(p) = 1 f + 1 p (1 f) (2.2) Ο νόμος αυτός λέει ότι η επιτάχυνση που μπορεί να επιτευχθεί σε ένα σύστημα με p επεξεργαστές εξαρτάται από το μέρος του προγράμματος που μπορεί να εκτελεστεί μόνο σειριακά f καθώς και του μέρους που μπορεί να εκτελεστεί παράλληλα 1 f. Το δεύτερο μέτρο είναι η αποδοτικότητα (efficiency), η οποία ορίζεται ως ο λόγος της επιτάχυνσης (S) προς τον αριθμό των επεξεργαστών (p): E = S p (2.3) Η μέγιστη τιμή που μπορεί να πάρει η αποδοτικότητα είναι 1, όμως αυτό είναι απίθανο να συμβεί, όπως ήδη αναφέραμε. Στην πράξη η αποδοτικότητα είναι μεταξύ του 0 και του 1. Ένα ακόμη μέτρο απόδοσης ενός παράλληλου συστήματος είναι το κόστος (cost), το οποίο ορίζεται ως ο χρόνος εκτέλεσης του προγράμματος παράλληλα επί τον αριθμό των επεξεργαστών: C = T (p)p (2.4) Ένα από τα πιο βασικά μέτρα αποδοτικότητας είναι η κλιμάκωση (scalability), η οποία δείχνει το κατά πόσο ένα πρόγραμμα μπορεί να αξιοποιήσει περισσότερους πόρους, δηλαδή το κατά πόσο μπορεί να αυξηθεί η επιτάχυνση προσθέτοντας νέους επεξεργαστές. Τέλος, ένας ακόμα νόμος, γνωστός ως Gustafson-Barsis Law [10], λέει ότι όσο αυξάνεται το μέγεθος των δεδομένων, αυξάνεται και η επιτάχυνση:

32 24 ΚΕΦΑΛΑΙΟ 2. ΕΠΙΣΚΟΠΗΣΗ ΕΡΕΥΝΗΤΙΚΗΣ ΠΕΡΙΟΧΗΣ S = f + p(1 f) (2.5) Στην παραπάνω εξίσωση p είναι ο αριθμός των επεξεργαστών και f το μέρος του προγράμματος που είναι σειριακό. 2.7 Οργάνωση μνήμης σε παράλληλα συστήματα υπολογιστών Υπάρχουν δύο κατηγορίες στις οποίες χωρίζονται τα συστήματα παράλληλων υπολογιστών με βάση τη μνήμη τους, τα συστήματα κατανεμημένης μνήμης (multicomputers) και αυτά της κοινής μνήμης (multiprocessors). Συστήματα κατανεμημένης μνήμης Στα συστήματα κατανεμημένης μνήμης υπάρχει ένας αριθμός επεξεργαστών οι οποίοι συνδέονται μέσω δικτύου και ο καθένας έχει τη δική του μνήμη. Ο κάθε επεξεργαστής μπορεί να έχει πρόσβαση μόνο στα στοιχεία της δικιάς του μνήμης απευθείας. Αν χρειαστεί στοιχεία από τη μνήμη κάποιου άλλου επεξεργαστή πρέπει να υπάρξει επικοινωνία μέσω μηνυμάτων (Send Receive operations). Σε αυτά τα συστήματα χρησιμοποιείται το προγραμματιστικό μοντέλο του Message Passing Interface (MPI). Συστήματα κοινής μνήμης Στα συστήματα κοινής μνήμης όλοι οι επεξεργαστές έχουν πρόσβαση σε μία κοινή μνήμη, η οποία συνήθως λέγεται κύρια μνήμη. Η σύνδεση γίνεται μέσω διαύλου και ένα χαρακτηριστικό παράδειγμα αυτών των συστημάτων είναι οι σύγχρονοι προσωπικοί υπολογιστές που αποτελούνται από δύο, τέσσερις, οχτώ ή και παραπάνω πυρήνες (multicore). Οι επεξεργαστές μπορούν να ανταλλάσσουν δεδομένα μέσω της κοινής μνήμης και των κοινών μεταβλητών. Ιδιαίτερη προσοχή απαιτείται στο χειρισμό των κοινών μεταβλητών καθώς είναι πολύ πιθανό να υπάρξουν συγκρούσεις, π.χ. δύο επεξεργαστές να θέλουν να γράψουν ταυτόχρονα σε μία θέση μνήμης. Σε αυτά τα συστήματα το πιο διαδεδομένο προγραμματιστικό μοντέλο είναι το OpenMP. 2.8 Παραλληλοποίηση προγραμμάτων / αλγορίθμων Σημαντικό ρόλο στη σχεδίαση και ανάπτυξη ενός παράλληλου αλγορίθμου παίζει η αρχιτεκτονική του υπολογιστικού συστήματος για το οποίο προορίζεται. Σαν υπολογιστικό σύστημα νοείται το υλικό αλλά και το λογισμικό (λειτουργικό σύστημα, βιβλιοθήκες, κ.ά.). Υπάρχουν δύο προσεγγίσεις, η μία που λέει ότι πρέπει να σκεφτούμε το πρόβλημα προς επίλυση εξαρχής παράλληλα και η άλλη που στηρίζεται στον σειριακό αλγόριθμο για την επίλυση του προβλήματος και των συναρτήσεων που μπορούν να παραλληλοποιηθούν. Η πρώτη προσέγγιση συναντάται πιο σπάνια αλλά συνήθως καταλήγει σε καλύτερα αποτελέσματα. Στη δεύτερη προσέγγιση πρέπει πρώτα να γίνει μια ανάλυση απόδοσης του σειριακού κώδικα (profiling) και στη συνέχεια να γίνει η παραλληλοποίηση, η οποία συνήθως ακολουθεί τα εξής βήματα [11]:

33 2.9. ΜΟΝΑΔΕΣ ΕΠΕΞΕΡΓΑΣΙΑΣ ΓΡΑΦΙΚΩΝ Εύρεση των διαφόρων εργασιών που πρέπει να γίνουν και των εξαρτήσεων που έχουν μεταξύ τους. 2. Ανάθεση των εργασιών σε διεργασίες ή νήματα. 3. Αντιστοίχηση των διεργασιών ή νημάτων σε επεξεργαστές. 2.9 Μονάδες Επεξεργασίας Γραφικών Ιστορική αναδρομή Ο όρος μονάδα επεξεργασίας γραφικών (GPU) εισήχθη το 1999 από την NVIDIA για την κάρτα GeForce 256. Το 2002 η αντίπαλη εταιρεία ATI ακολούθησε, εισάγοντας τον όρο Visual Processing Unit (VPU) για το μοντέλο Radeon Η ανάγκη για όλο και καλύτερα γραφικά, όσο το δυνατόν πιο ζωντανά, έκαναν τις μηχανές αυτές πάρα πολύ δυνατές από πλευράς υπολογιστικής ισχύος, ξεπερνώντας κατά πολύ κάποια χαρακτηριστικά των κεντρικών μονάδων επεξεργασίας (CPUs). Οι πρώτες προσπάθειες που έγιναν από ερευνητές και επιστήμονες να αξιοποιήσουν αυτή την τεράστια υπολογιστική δύναμη απαιτούσαν γνώση γλωσσών όπως οι DirectX, OpenGL και Cg καθώς και της αρχιτεκτονικής των GPUs. Από αυτές τις προσπάθειες εισήχθη και ο όρος General Purpose Graphics Processing Unit (GPGPU). Ενώ όμως πολλοί αλγόριθμοι μεταφέρθηκαν στις GPUs για καλύτερη απόδοση, κάτι που επετεύχθη, η διαδικασία ήταν αρκετά δύσκολη για τους προγραμματιστές. Το 2007 η NVIDIA, διαβλέποντας το πόσο σημαντικό ρόλο θα μπορούσαν να παίξουν οι κάρτες γραφικών στην επιστήμη, εισήγαγε ένα νέο προγραμματιστικό μοντέλο για την ανάπτυξη εφαρμογών στις μονάδες επεξεργασίας γραφικών που κατασκεύαζε με σκοπό να γίνει πιο εύκολος ο προγραμματισμός τους και να αξιοποιηθεί όσο το δυνατόν περισσότερο η συνεχώς αυξανόμενη υπολογιστική τους δύναμη. Το νέο αυτό μοντέλο, με την ονομασία CUDA, έδωσε μεγάλη ώθηση στην μεταφορά επιστημονικών και ερευνητικών εφαρμογών στις μονάδες επεξεργασίας γραφικών και τη βελτίωση της απόδοσης των εφαρμογών με μεγάλες υπολογιστικές απαιτήσεις. Πέρα του προγραμματιστικού μοντέλου της NVIDIA υπάρχει και το OpenCL⁴ που είναι ένα πρότυπο για παράλληλο προγραμματισμό σε διάφορες αρχιτεκτονικές. Την περίοδο εκπόνησης της διατριβής όμως η CUDA ήταν πολύ πιο διαδεδομένη και έτσι προτιμήθηκε. Η πρώτη γενιά καρτών γραφικών η οποία υποστήριζε το μοντέλο αυτό ήταν η σειρά G80. Από τότε οι GPUs έχουν γίνει πολύ δυνατότερες και με πολύ μεγαλύτερες και περισσότερες δυνατότητες. Εν έτη 2013, η νέα γενιά καρτών γραφικών (Kepler) δίνει 2 * 1536 = 3072 πυρήνες. Στις Εικόνες 2.3, 2.4, 2.5, 2.6 φαίνονται κάρτες γραφικών για διαφορετικές πλατφόρμες. ⁴ ⁵ ⁶ ⁷ ⁸

34 26 ΚΕΦΑΛΑΙΟ 2. ΕΠΙΣΚΟΠΗΣΗ ΕΡΕΥΝΗΤΙΚΗΣ ΠΕΡΙΟΧΗΣ Σχήμα 2.3: Η κάρτα GTX 760 με 1152 πυρήνες ⁵ Σχήμα 2.4: Η κάρτα GT 640 με 384 πυρήνες για φορητούς υπολογιστές⁶

35 2.9. ΜΟΝΑΔΕΣ ΕΠΕΞΕΡΓΑΣΙΑΣ ΓΡΑΦΙΚΩΝ 27 Σχήμα 2.5: Η κάρτα Tegra K1 για tablets⁷ Σχήμα 2.6: Η κάρτα Tesla K20 για σταθμούς εργασίας με 2496 πυρήνες⁸

36 28 ΚΕΦΑΛΑΙΟ 2. ΕΠΙΣΚΟΠΗΣΗ ΕΡΕΥΝΗΤΙΚΗΣ ΠΕΡΙΟΧΗΣ Σχήμα 2.7: Αρχιτεκτονική Fermi των NVIDIA GPUs [12] Αρχιτεκτονική μονάδων επεξεργασίας γραφικών Οι σύγχρονες μονάδες επεξεργασίας γραφικών αποτελούνται από ένα αριθμό πολυεπεξεργαστών, καθένας εκ των οποίων έχει συγκεκριμένο αριθμό πυρήνων. Ο κάθε πολυ-επεξεργαστής περιέχει 8, 32/48 ή 192 απλούς πυρήνες ανάλογα τη γενιά της κάρτας. Η GPU ενώνεται με τη CPU μέσω του διαύλου PCI Express. Κάθε μονάδα επεξεργασίας έχει διάφορα επίπεδα μνήμης, την καθολική μνήμη, τις μνήμες υφής και σταθερών, την κοινή μνήμη κάθε πολυ-επεξεργαστή καθώς και τους καταχωρητές. Στην Εικόνα 2.7 φαίνεται η αρχιτεκτονική Fermi. Όσον αφορά την ιεραρχία μνήμης στη μονάδα γραφικών αυτή φαίνεται στην Εικόνα 2.8. Υπάρχει η καθολική μνήμη καθώς και οι μνήμες υφής και σταθερών. Επίσης, κάθε πολυ-επεξεργαστής έχει τη δικιά του κοινή μνήμη και ένα σημαντικό αριθμό καταχωρητών. Η καθολική μνήμη (Device Memory) είναι δυναμική μνήμη τυχαίας προσπέλασης (DRAM), πολύ μεγάλη σε χωρητικότητα αλλά και πολύ αργή σε απόκριση. Η απόκριση της κύριας μνήμης είναι από 400 έως 600 κύκλους ρολογιού. Τα δεδομένα που μεταφέρονται από την κεντρική μνήμη του υπολογιστή μπορούν να αποθηκευτούν σε αυτή τη μνήμη. Επίσης όποιο αποτέλεσμα απαιτείται να γυρίσει στην κύρια μνήμη του υπολογιστή πρέπει να βρίσκεται σε αυτή τη μνήμη. Στην καθολική μνήμη μπορούν να γράψουν και να διαβάσουν όλα τα νήματα ενός πυρήνα. Η κοινή μνήμη είναι μια πολύ γρήγορη μνήμη αλλά πολύ μικρή σε χωρητικότητα, με τον κάθε πολυ-επεξεργαστή να έχει την δικιά του. Ο χρόνος απόκρισης της κοινής μνήμης είναι 1-32 κύκλοι ρολογιού. Στην πρώτη γενιά καρτών είχε μέγεθος 16KB, ενώ στην αρχιτεκτονική Fermi έχει 64KB,

37 2.9. ΜΟΝΑΔΕΣ ΕΠΕΞΕΡΓΑΣΙΑΣ ΓΡΑΦΙΚΩΝ 29 Σχήμα 2.8: Ιεραρχία μνήμης των NVIDIA GPUs⁹ τα οποία μοιράζονται στην κοινή μνήμη αλλά και στην κρυφή μνήμη (16KB, 48KB). Ανάλογα με την εφαρμογή μπορεί να επιλέξει ο προγραμματιστής πόσα KB θα είναι διαθέσιμα για την κρυφή και πόσα για την κοινή μνήμη. Σημαντικό είναι επίσης το γεγονός ότι στην Fermi αρχιτεκτονική υπάρχει μια κρυφή μνήμη ανά πολυ-επεξεργαστή όπως προαναφέραμε αλλά και μια μεγαλύτερη για όλους τους πολυ-επεξεργαστές. Η μνήμη σταθερών είναι μια μνήμη μόνο για ανάγνωση η οποία διαθέτει κρυφή μνήμη. Η μνήμη υφής είναι μια μικρή μνήμη η οποία διαθέτει και αυτή κρυφή μνήμη, βοηθώντας στη βελτίωση της απόδοσης στην πρώτη γενιά καρτών αλλά και στην τρίτη (Kepler) Προγραμματιστικό μοντέλο Βασικό στοιχείο εκτέλεσης προγραμμάτων σε GPUs είναι το νήμα. Οι σύγχρονες GPUs απαιτούν πολύ μεγάλο αριθμό νημάτων προς εκτέλεση, προκειμένου να έχουν την μέγιστη απόδοση. Αυτό οφείλεται στο γεγονός ότι η εναλλαγή μεταξύ των νημάτων δε στοιχίζει σε χρόνο και έτσι όταν ένας αριθμός νημάτων περιμένει να έρθουν δεδομένα από την καθολική μνήμη αμέσως γίνεται αλλαγή σε άλλο μπλοκ νημάτων που έχουν εντολές προς εκτέλεση. Για να εκτελεστεί ένα πρόγραμμα στη μονάδα επεξεργασίας γραφικών πρέπει πρώτα να έχει δεσμευθεί χώρος στην καθολική μνήμη της κάρτας και να έχουν μεταφερθεί εκεί τα δεδομένα που απαιτούνται. Σε αυτό το σημείο μπορεί να ξεκινήσει η εκτέλεση του "πυρήνα". Ο "πυρήνας" είναι το τμήμα του κώδικα που θα πάει για εκτέλεση στη GPU. Όταν ξεκινάει ένας "πυρήνας" πρέπει πέρα από τα συνήθη ορίσματα που δίνουμε σε κάθε συνάρτηση της γλώσσας C, να δοθεί και ο αριθμός των νημάτων προς εκτέλεση. Τα νήματα οργανώνονται σε μπλοκ νημάτων με 3 διαστάσεις το καθένα. Τα μπλοκ ⁹

38 30 ΚΕΦΑΛΑΙΟ 2. ΕΠΙΣΚΟΠΗΣΗ ΕΡΕΥΝΗΤΙΚΗΣ ΠΕΡΙΟΧΗΣ Υπολογιστική δυνατότητα 1.* 2.* 3.* Μέγιστος αριθμός νημάτων / μπλοκ Μέγεθος warp Μπλοκ / πολυ-επεξεργαστή Διαστάσεις πλέγματος x-διάσταση πλέγματος ³¹ - 1 y, z διαστάσεις πλέγματος Διαστάσεις μπλοκ x, y διαστάσεις μπλοκ z διάσταση Αριθμός νημάτων / πολυ-επεξεργαστή Πίνακας 2.2: Τεχνικά χαρακτηριστικά των καρτών γραφικών ανά γενιά νημάτων οργανώνονται σε 3 διαστάσεις σε ένα πλέγμα από μπλοκ. Ένα μπλοκ νημάτων δε μπορεί να έχει πάνω από ένα συγκεκριμένο αριθμό νημάτων προς εκτέλεση. Ο αριθμός αυτός εξαρτάται από τη γενιά της κάρτας γραφικών και την "υπολογιστική δυνατότητά" της. Στις πρώτης γενιάς κάρτες ο αριθμός αυτός ήταν το 512 ενώ στις επόμενες (Fermi, Kepler) Τα όρια αυτά φαίνονται αναλυτικά στον Πίνακα 2.2. Αφού ολοκληρωθεί η εκτέλεση του πυρήνα, θα πρέπει τα δεδομένα να γυρίσουν πάλι στην κεντρική μνήμη του υπολογιστή προκειμένου να μπορεί να τα χρησιμοποιήσει η κεντρική μονάδα επεξεργασίας. Αν ωστόσο έπεται να εκτελεστεί και άλλος πυρήνας, ο οποίος χρειάζεται τα δεδομένα τότε δε χρειάζεται τα δεδομένα να επιστραφούν στη μνήμη του υπολογιστή. Αυτό συμβαίνει πολλές φορές όταν θέλουμε να συγχρονίσουμε νήματα διαφορετικών μπλοκ. Ενώ τα νήματα ενός μπλοκ μπορούν να συγχρονιστούν, δεν υπάρχει αντίστοιχη δυνατότητα για νήματα διαφορετικών μπλοκ Μέθοδοι βελτιστοποίησης απόδοσης Υπάρχουν αρκετές λεπτομέρειες που πρέπει να προσέξει κανείς για να πάρει την βέλτιστη απόδοση από μία κάρτα γραφικών. Πρώτα από όλα, πρέπει οι μεταφορές δεδομένων από και προς την κάρτα να ελαχιστοποιηθούν, γιατί κοστίζουν σε χρόνο. Επίσης, θα πρέπει να μειωθούν όσο το δυνατόν οι προσβάσεις στην κύρια μνήμη και αυτές που θα γίνουν να ακολουθούν ένα συγκεκριμένο πρότυπο. Πρέπει τα νήματα να διαβάζουν ή να γράφουν σε συνεχόμενες θέσεις μνήμης. Αυτός ο τρόπος πρόσβασης στην κύρια μνήμη λέγεται coalesced και οδηγεί σε καλύτερη απόδοση αφού οι προσβάσεις των νημάτων ομαδοποιούνται σε μία. Ακόμα, θα πρέπει να βρεθεί ο κατάλληλος αριθμός μπλοκ και νημάτων ώστε να χρησιμοποιούνται όσο το δυνατόν περισσότερο οι πυρήνες της κάρτας. Αυτό εξαρτάται από τις απαιτήσεις σε καταχωρητές από το κάθε νήμα αλλά και από τους περιορισμούς του υλικού. Σημαντικό πλεονέκτημα δίνει και η χρήση της κοινής μνήμης, η οποία είναι πιο γρήγορη από την καθολική, αλλά συνήθως δε μπορεί να χωρέσει όλα τα δεδομένα του προβλήματος. Ένα ακόμα στοιχείο που βοηθάει στην καλή απόδοση είναι η εκτέλεση όσο το δυνατόν περισσότερων νημάτων έτσι ώστε να κρύβονται οι καθυστερήσεις της μνήμης. Κάτι εξίσου σημαντικό με τα προηγούμενα που οφείλει να προσέξει κανείς είναι ότι δεν πρέπει, όσο αυτό είναι δυνατόν, τα νήματα να έχουν εντολές διακλάδωσης. Δεδομένου ότι τα νήματα που τρέχουν ταυτό-

39 2.9. ΜΟΝΑΔΕΣ ΕΠΕΞΕΡΓΑΣΙΑΣ ΓΡΑΦΙΚΩΝ 31 Σχήμα 2.9: Εξυπηρετητής με πολλές GPUs¹⁰ χρονα σε ένα πολυ-επεξεργαστή εκτελούν την ίδια εντολή, μια εντολή διακλάδωσης θα οδηγούσε στην κατάσταση κατά την οποία κάποια από τα νήματα να παραμένουν ανενεργά μέχρι να εκτελεστεί το επόμενο μέρος της διακλάδωσης. Αυτό οδηγεί σε μείωση της απόδοσης. Θα πρέπει να σημειώσουμε ότι τα τελευταία χρόνια η NVIDIA δίνει ένα πολύ σημαντικό εργαλείο για κάθε προγραμματιστή GPU. Το Nsight που λειτουργεί ως add-on είτε στο Eclipse είτε στο Visual studio, δίνει δυνατότητες εύκολης αποσφαλμάτωσης όσο και δυνατότητες ελέγχου της απόδοσης. Γίνεται ανάλυση όλων των παραμέτρων και βρίσκονται όλα τα σημεία που καθυστερούν το πρόγραμμα. Τα τελευταία χρόνια έχει εφαρμοστεί πολύ και η λύση των πολλών GPU σε έναν εξυπηρετητή ή ένα υπολογιστή για ακόμα καλύτερη απόδοση [13] (Σχήμα 2.9) Διαφορές CPUs GPUs Σε αυτό το σημείο είναι πολύ σημαντικό να αναφέρουμε τις κυριότερες διαφορές των μονάδων επεξεργασίας του υπολογιστή με αυτές των γραφικών. Η πρώτη βασική διαφορά είναι ότι οι CPUs είναι κατασκευασμένες για να εκτελούν λίγες αλλά αρκετά δύσκολες εργασίες, ενώ οι GPUs μπορούν να εκτελούν πολλές εργασίες αλλά αρκετά απλές. Μια ακόμα σημαντική διαφορά έχει να κάνει με το πώς χειρίζονται τα νήματα. Ενώ οι CPUs διαθέτουν ένα μικρό αριθμό από καταχωρητές σε κάθε πυρήνα, τους οποίους χρησιμοποιούν όλα τα νήματα που εκτελούνται στον συγκεκριμένο πυρήνα, οι GPUs έχουν ξεχωριστούς καταχωρητές για κάθε μπλοκ νημάτων που εκτελείται σε κάθε πολυεπεξεργαστή. Αυτό έχει σαν αποτέλεσμα η εναλλαγή μεταξύ νημάτων να είναι πολύ πιο χρονοβόρα στην CPU από ότι στη GPU, δεδομένου ότι η CPU πρέπει να αποθηκεύσει στη RAM την κατάσταση των καταχωρητών του τρέχοντος νήματος και να φορτώσει ¹⁰

40 32 ΚΕΦΑΛΑΙΟ 2. ΕΠΙΣΚΟΠΗΣΗ ΕΡΕΥΝΗΤΙΚΗΣ ΠΕΡΙΟΧΗΣ τις τιμές τους από το επόμενο νήμα. Αντίθετα, στη GPU με μια απλή επιλογή ενός μπλοκ από καταχωρητές μπορεί να γίνει η εναλλαγή. Ένα ακόμη ζήτημα είναι το πώς αντιμετωπίζουν τις περιπτώσεις όπου πρέπει να περιμένουν δεδομένα είτε από τη μνήμη είτε από Ε/Ε. Και οι δύο μονάδες κάνουν εναλλαγή νημάτων, όμως στην CPU αν αυτό συμβαίνει συχνά η απόδοσή της πέφτει δραστικά, μιας και η εναλλαγή κοστίζει. Η GPU από την άλλη είναι κατασκευασμένη έτσι ώστε να περιμένει να συμβεί αυτό πολύ συχνά. Αν λοιπόν έχει πολλά νήματα για εκτέλεση η απόδοσή της ανεβαίνει. Τέλος, πρέπει να σημειώσουμε ότι υπάρχει μεγάλη διαφορά και στον αριθμό των πυρήνων. Ενώ μια σχετικά καλή CPU μπορεί να έχει 4 πυρήνες (2013), η GPU έχει 16 πολυ-επεξεργαστές οι οποίοι με τη σειρά τους έχουν 32 πυρήνες έκαστος (αρχιτεκτονική Fermi) [14].

41 Κεφάλαιο 3 Αλγόριθμος ταξινόμησης count sort 3.1 Εισαγωγή Η ταξινόμηση είναι ένα από τα βασικότερα προβλήματα στην επιστήμη των υπολογιστών και έχει ερευνηθεί από πάρα πολλούς επιστήμονες. Παρουσιάζεται σαν εσωτερικό βήμα σε πολλά προγράμματα και διεργασίες. Για αυτό το λόγο, οι αποδοτικοί αλγόριθμοι ταξινόμησης είναι ένα από τα βασικά στοιχεία για καλύτερη απόδοση. Η ανάγκη για παραλληλοποίηση πολλών αλγορίθμων σε διάφορες αρχιτεκτονικές γίνεται ολοένα και μεγαλύτερη. Οι επεξεργαστές προσφέρουν πλέον πολλούς πυρήνες και έχουν την δυνατότητα να εκτελούν πάνω από ένα νήμα ανά πυρήνα. Οι κατασκευαστές κεντρικών μονάδων επεξεργασίας προσφέρουν ολοένα και περισσότερους πυρήνες, χωρίς όμως να αυξάνουν την απόδοση του καθενός από αυτούς. Μέχρι πριν λίγα χρόνια, η απόδοση ενός πυρήνα ακολουθούσε τον νόμο του Moore, ο οποίος λέει ότι ο αριθμός των τρανζίστορ σε ένα ολοκληρωμένο κύκλωμα διπλασιάζεται κάθε μήνες. Αυτό μεταφραζόταν και σε αντίστοιχη άνοδο της απόδοσης της CPU στην ίδια περίοδο. Πλέον αυτό δεν ισχύει και το λογισμικό πρέπει να βρει τρόπο να εκμεταλλευτεί την υπολογιστική δύναμη που του δίνουν οι πολλοί πυρήνες για να αυξήσει την απόδοσή του αντίστοιχα [6]. Επίσης, οι μονάδες επεξεργασίας γραφικών γίνονται αναπόσπαστο κομμάτι του υπολογιστή κάθε απλού χρήστη και βασίζονται σε παράλληλο υπολογιστικό μοντέλο. Έτσι, αφού η αρχιτεκτονική είναι πλέον παράλληλη, μένει και οι προγραμματιστές να εκμεταλλευτούν την υπολογιστική δύναμη που τους δίνεται. Αυτή η παράλληλη πλατφόρμα είναι αρκετά διαφορετική από τις συνηθισμένες πλατφόρμες που χρησιμοποιήθηκαν και χρησιμοποιούνται για αλγορίθμους και ανάλυση δομών δεδομένων. Εδώ πρέπει να σημειωθεί ότι δεν είναι μόνο ο παραλληλισμός που είναι διαφορετικός αλλά και οι κρυφές μνήμες που υπάρχουν προκειμένου να βελτιώσουν την απόδοση αλλά και το γεγονός ότι προσβάσεις στην κύρια μνήμη με συγκεκριμένο τρόπο δεν είναι καθόλου αποδοτικές. Ακόμα, οι κρυφές μνήμες επηρεάζουν πολύ την απόδοση αν περισσότεροι του ενός πυρήνα χρησιμοποιούν την ίδια μνήμη. Γίνεται φανερό λοιπόν ότι η διαχείριση της μνήμης στην GPU είναι αρκετά δύσκολη προκειμένου να έχουμε την μεγαλύτερη απόδοση. Στις αρχές της πληροφορικής, μια απλή εντολή ήταν αρκετή για να μπορεί κάποιος να εκτιμήσει την απόδοση με μεγάλη ακρίβεια. Σήμερα τα πράγματα είναι τελείως διαφορετικά. Οι πολυπύρηνοι επεξεργαστές, η πρόβλεψη των διακλαδώσεων, οι μακριές διασωληνώσεις, οι αλλαγές στην σειρά των εντολών, οι κρυφές μνήμες, οι μεταγλωττι- 33

42 34 ΚΕΦΑΛΑΙΟ 3. ΑΛΓΟΡΙΘΜΟΣ ΤΑΞΙΝΟΜΗΣΗΣ COUNT SORT στές, η εικονική μνήμη αλλά και το λειτουργικό σύστημα επηρεάζουν την απόδοση του λογισμικού ποικιλοτρόπως. Για αυτό το λόγο, οι αλγόριθμοι και οι δομές δεδομένων πρέπει να επανεξεταστούν προκειμένου να λάβουν υπόψιν όλες αυτές τις αλλαγές και κυρίως τον παραλληλισμό που προσφέρεται από το υλικό. Σε αυτό το κεφάλαιο θα μιλήσουμε για τον σχεδιασμό και την υλοποίηση ενός παράλληλου αλγορίθμου count sort ταξινόμησης σε μια κάρτα γραφικών που υποστηρίζει το μοντέλο της CUDA. Ο αλγόριθμος που προτείνεται μειώνει αισθητά την ανάγκη για συγχρονισμό, βελτιώνοντας την απόδοση. Παρουσιάζεται όλη η διαδικασία σχεδιασμού, ανάλυσης και ελέγχου του αλγορίθμου. 3.2 Ο αλγόριθμος count sort Οι αλγόριθμοι ταξινόμησης μπορούν να κατηγοριοποιηθούν με βάση την σταθερότητα (stability) αλλά και το αν βασίζονται σε συγκρίσεις ή όχι. Οι σταθεροί αλγόριθμοι έχουν την ιδιότητα να κρατούν στην έξοδο, την σειρά εμφάνισης των εγγραφών που αυτές έχουν στην είσοδο, όταν πρόκειται για εγγραφές με την ίδια τιμή. Οι αλγόριθμοι που βασίζονται σε συγκρίσεις, ταξινομούν τα δεδομένα εισόδου με μια συνάρτηση σύγκρισης δύο τιμών συνήθως. Η πολυπλοκότητά τους οριοθετείται από το κάτω όριο Ω(nlogn). Από την άλλη μεριά, οι αλγόριθμοι που δε βασίζονται στις συγκρίσεις χρησιμοποιούν άλλα χαρακτηριστικά της εισόδου, όπως η συχνότητα εμφάνισης, και δεν οριοθετούνται από το κάτω όριο Ω(nlogn). Οι αλγόριθμοι bubblesort, heapsort και quicksort είναι παραδείγματα της πρώτης κατηγορίας. Ο αλγόριθμος bubblesort είναι σταθερός, ο heapsort δεν είναι ενώ ο quicksort εξαρτάται από την υλοποίηση. Παραδείγματα της δεύτερης κατηγορία αποτελούν οι αλγόριθμοι radixsort και count sort Περιγραφή του αλγορίθμου Ο αλγόριθμος count sort δεν βασίζεται στις συγκρίσεις και ταξινομεί έναν πίνακα από θετικές ακέραιες τιμές γνωστού εύρους k. Ακόμα και αν το εύρος δεν είναι γνωστό, μπορεί εύκολα να βρεθεί με ένα πέρασμα όλων των στοιχείων του πίνακα. Άλλες ονομασίες που έχει είναι counting sort και math sort. Η πολυπλοκότητα του αλγορίθμου είναι γραμμική, Ω(n + k). Συνοπτικά τα τρία βήματα που αποτελούν τον αλγόριθμο είναι τα εξής: 1. Εύρεση της μέγιστης και ελάχιστης τιμής και υπολογισμός του εύρους (προαιρετικό). 2. Μέτρηση του αριθμού εμφανίσεων κάθε στοιχείου. 3. Τοποθέτηση στην έξοδο τόσων στοιχείων από κάθε στοιχείο όσα και οι εμφανίσεις του. Στον Αλγόριθμο 3.1 φαίνεται ο ψευδοκώδικας του αλγορίθμου. Υποθέτουμε ότι έχουμε έναν πίνακα εισόδου A που αποτελείται από στοιχεία με εύρος k και έναν ίδιου μεγέθους πίνακα εξόδου B. Επίσης, για λόγους απλοποίησης υποθέτουμε ότι A[i] 1, 2,, k, και ότι i 0, 1,, N. Πρώτα αρχικοποιούμε τον πίνακα C μεγέθους k με 0. Τον πίνακα αυτόν τον ονομάζουμε πίνακα καταμέτρησης και κρατάει τον αριθμό των

43 3.2. Ο ΑΛΓΟΡΙΘΜΟΣ COUNT SORT 35 εμφανίσεων του κάθε στοιχείου του πίνακα A. Στη συνέχεια, διαβάζουμε όλα τα στοιχεία του πίνακα A και αυξάνουμε το αντίστοιχο πεδίο στον πίνακα C κατά ένα, για κάθε νέα εμφάνιση. Στο τελευταίο βήμα τοποθετούμε στον πίνακα B την κάθε τιμή i όσες φορές αυτή εμφανίζεται, πληροφορία που υπάρχει στο κελί C[i]. // Action A for i 0 to k do C[i] 0 end // Action B for i 0 to N do C[A[i]] + + end // Action C z 0 for i 0 to k do for j 0 to C[i] do B[z + +] i end end Algorithm 3.1: Count sort (Μη σταθερή έκδοση) Σταθερότητα Τα βήματα που δείξαμε παραπάνω καταλήγουν σε μη-σταθερή ταξινόμηση. Αυτό δεν αποτελεί πρόβλημα όταν ταξινομούνται ακέραιοι αριθμοί, γιατί δεν υπάρχει σχετική διάταξη ανάμεσα σε ίσα νούμερα. Η αστάθεια προκύπτει στο 3ο βήμα αφού δεν χρησιμοποιείται καθόλου ο πίνακας A. Αν χρειάζεται σταθερή ταξινόμηση πρέπει να χρησιμοποιηθεί μια εναλλακτική προσέγγιση στο 3ο βήμα. Στον Αλγόριθμο 3.2 φαίνεται μια τέτοια προσέγγιση, η οποία αποτελείται από 2 μέρη. Στο πρώτο μέρος ο πίνακας C αντικαθίσταται τοπικά με το μερικό άθροισμα των στοιχείων του. Αυτός ο υπολογισμός λέγεται prefix sum και θα εξεταστεί ενδελεχώς στη συνέχεια. Στο δεύτερο μέρος χρησιμοποιείται μια έμμεση διευθυνσιοδότηση του πίνακα A από τον C για να συμπληρωθούν οι τιμές του πίνακα A στον πίνακα εξόδου B ταξινομημένες. Με αυτόν τον τρόπο διατηρείται η σταθερότητα του αλγορίθμου. Είναι εμφανές ότι προκειμένου να πετύχουμε την σταθερότητα χάνουμε σε υπολογιστικό κόστος αφού απαιτούνται περισσότερες πράξεις Περιπτώσεις χρήσης Ο αλγόριθμος count sort είναι από τους πιο γρήγορους στην περίπτωση ταξινόμησης μεγάλου αριθμού στοιχείων τα οποία όμως έχουν μικρό εύρος τιμών, δηλαδή όταν k << N. Ο συγκεκριμένος αλγόριθμος χρησιμοποιείται σαν εσωτερικό βήμα στην ταξινόμηση radixsort για την επεξεργασία ξεχωριστών ψηφίων. Επίσης, χρησιμοποιείται σε

44 36 ΚΕΦΑΛΑΙΟ 3. ΑΛΓΟΡΙΘΜΟΣ ΤΑΞΙΝΟΜΗΣΗΣ COUNT SORT // Action C', first step sum 0 for i 0 to k do t C[i] C[i] sum sum t end // Action C', second step for i 0 to N do B[C[A[i]] + +] A[i]; end Algorithm 3.2: Count sort (Σταθερή έκδοση) προβλήματα όπου η σταθερότητα δεν είναι απαραίτητη, όπως η εύρεση ακριβών επαναληπτικών προτύπων και η κατασκευή suffix πινάκων, που έχουν εφαρμογή σε αντιστοίχηση αλφαριθμητικών, αντιστοίχηση γονιδίων και συμπίεση κειμένου Παράλληλη εκτέλεση Ο αλγόριθμος count sort μπορεί να μετασχηματιστεί ώστε να τρέξει παράλληλα. Για παράδειγμα, ας υποθέσουμε ότι έχουμε ένα σύστημα με πολλούς επεξεργαστές, ο καθένας από τους οποίους έχει τοπική μνήμη, αλλά υπάρχει και μια κοινή καθολική μνήμη. Το 2ο βήμα μπορεί να μοιραστεί στους επεξεργαστές ως εξής: Σε κάθε επεξεργαστή p ανατίθεται ένα κομμάτι του πίνακα εισόδου A για το οποίο υπολογίζει τον αντίστοιχο πίνακα C τοπικά. Όταν τελειώσουν τη δουλειά όλοι οι επεξεργαστές, βρίσκουν τον τελικό πίνακα C που βρίσκεται στην κεντρική μνήμη. Οι λεπτομέρειες της παραλληλοποίησης εξαρτώνται από την αρχιτεκτονική του εκάστοτε συστήματος. Στη συνέχεια θα δούμε τις πιθανές υλοποιήσεις που μπορούν να προκύψουν από το μοντέλο της CUDA. 3.3 Σχετική βιβλιογραφία Η χρήση GPU για ταξινόμηση δεν είναι καινούρια ιδέα. Ακόμα και πριν από την εισαγωγή του προγραμματιστικού περιβάλλοντος της CUDA, η μεγάλη διαθεσιμότητα από επεξεργαστικές μονάδες υπήρξε ελκυστική ιδέα για παράλληλες υλοποιήσεις αλγορίθμων ταξινόμησης. Έτσι, περιγράφονται εδώ προηγούμενες δουλειές πάνω σε αλγορίθμους ταξινόμησης, είτε αυτές έγιναν πριν την έλευση της CUDA είτε μετά. Για λόγους πληρότητας αναφέρονται και δουλειές που έχουν γίνει σε πολυπύρηνες CPU. Οι προσπάθειες που έχουν γίνει πριν την εμφάνιση του περιβάλλοντος CUDA είναι βασισμένες στο OpenGL API. Η GPUSort είναι από τις πρώτες υλοποιήσεις αυτής της κατηγορίας [15]. Είναι βασισμένη στο περιοδικό ισορροπημένο δίκτυο ταξινόμησης (periodic balanced sorting network) και δουλεύει μόνο με εισόδους που είναι δυνάμεις του 2 στην GPU. Για διαφορετικές εισόδους χρειάζεται κάποια επιπλέον επεξεργασία στη CPU. Η GPU-ABisort είναι βασισμένη στην adaptive bitonic ταξινόμηση [16] και επιτυγχάνει πολυπλοκότητα O(nlogn) / p, όπου p ο αριθμός των υπαρχόντων επεξερ-

45 3.4. ΣΧΕΔΙΑΣΜΟΣ COUNT SORT ΣΕ CUDA GPU 37 γαστών. Δύο άλλοι αλγόριθμοι που υλοποιήθηκαν με το OpenGL API είναι ο odd-even merge sort και ο bitonic merge sort [17]. Ο αλγόριθμος GPUTeraSort χρησιμοποιεί την GPU σαν συν-επεξεργαστή και έτσι έχει καλύτερη απόδοση σε λειτουργίες E/E και σε throughput [18]. Επιπλέον, έχουν υλοποιηθεί αλγόριθμοι ταξινόμησης για συγκεκριμένες εφαρμογές, όπως εφαρμογές βάσεων δεδομένων και ανάλυσης δεδομένων [19]. Με την είσοδο της CUDA, ο προγραμματισμός των GPUs έγινε ευκολότερος και οδήγησε σε υλοποιήσεις με σημαντικές βελτιώσεις στην απόδοση. Μια υλοποίηση της radixsort και της merge sort βασισμένη στην CUDA, ήταν 4 φορές γρηγορότερη από την GPUSort και 3.5 φορές ταχύτερη από ρουτίνες υλοποιημένες σε οκταπύρηνο 2.33 GHz Intel Core2 Xeon επεξεργαστή [20]. Ο αλγόριθμος GPU_Quicksort κέρδισε τον GPUSort καθώς και την προαναφερθείσα radixsort υλοποίηση [21]. Ένας υβριδικός αλγόριθμος ταξινόμησης που χρησιμοποιεί bucket sort και merge sort πέτυχε βελτίωση απόδοσης 2 φορές συγκρινόμενος με τον GPUSort και μιας τάξης μεγέθους συγκρινόμενος με τον GPU_Quicksort[22]. Μια εφαρμογή count sort σε CUDA κατάφερε 8 φορές καλύτερη απόδοση από την αντίστοιχη σε CPU[23]. Θα επανέλθουμε σε αυτή την εργασία αργότερα. Τέλος, μια υλοποίηση radixsort σε CUDA σε κάρτες δεύτερης γενιάς με compute capability 2.0 πέτυχε ρεκόρ ενός και τεσσάρων δισεκατομμυρίων 32-Bit και 8-bit κλειδιών το δευτερόλεπτο, αντίστοιχα [24]. Ο προγραμματισμός σε multicore αρχιτεκτονικές είναι επίσης πολύ διαδεδομένος και έχει κάποιες ομοιότητες με τον προγραμματισμό σε κάρτες γραφικών. Παρόλα αυτά αυτή τη στιγμή οι GPUs δίνουν πολύ καλύτερη απόδοση. Για παράδειγμα, μια υλοποίηση του merge sort σε SIMD αρχιτεκτονική πέτυχε να ταξινομεί 64 εκατομμύρια δεκαδικούς αριθμούς απλής ακρίβειας σε λιγότερο του μισού δευτερολέπτου σε έναν τετραπύρηνο Intel επεξεργαστή [25]. Μια παράλληλη υλοποίηση του count sort χρησιμοποιώντας τα Intel's reading Building Blocks ταξινομεί 1.7 δις 8-bit στοιχεία σε ένα δευτερόλεπτο και 1 δις 16-bit στοιχεία στο δευτερόλεπτο [26]. 3.4 Σχεδιασμός count sort σε CUDA GPU Ο αλγόριθμος count sort δεν συγκέντρωσε ιδιαίτερη προσοχή σε CUDA μέχρι πρόσφατα [23]. Ο βασικός λόγος για αυτό μπορεί να αποδοθεί στο ότι μια παράλληλη υλοποίηση θα χρειαζόταν πρόσβαση στη μνήμη με συγχρονισμό των νημάτων. Ο συγχρονισμός σε παράλληλες υλοποιήσεις μειώνει την απόδοση, περιορίζοντας την κλιμάκωση αφού έτσι κάποιες ενέργειες γίνονται σειριακά. Έτσι πρέπει να χρησιμοποιείται με προσοχή και σπάνια. Έχει δειχθεί ότι η μη σταθερή count sort μπορεί να υλοποιηθεί και να αποδώσει καλά σε CUDA συσκευές με υπολογιστική δυνατότητα 1.x [23]. Υπάρχει μια διαρκώς αυξανόμενη κατηγορία πραγματικών προβλημάτων, όπως αυτά που αναφέρθηκαν στις περιπτώσεις χρήσης, που δεν απαιτούν σταθερή ταξινόμηση ή μπορούν να προσαρμοστούν σε μη σταθερή ταξινόμηση. Αυτά τα προβλήματα μπορούν να κερδίσουν από μια γρήγορη υλοποίηση count sort. Επίσης, συσκευές με υπολογιστική δυνατότητα 2.x εισάγουν καινούρια χαρακτηριστικά τα οποία επηρεάζουν το σχεδιασμό μιας αποδοτικής έκδοσης της count sort. Για παράδειγμα, οι ατομικές λειτουργίες που είναι ο βασικός τρόπος συγχρονισμού στο [23], είναι σύμφωνα με την NVIDIA 5-20 φορές πιο γρήγορες στις νέες κάρτες. Η count sort σαν αλγόριθμος περιορίζεται από τη μνήμη (memory-bound), επομένως η μεγαλύτερης χωρητικότητας γρήγορη κοινή μνήμη των 2.x συσκευών, δίνει τη δυνατότητα για καλύτερη απόδοση αν χρησιμοποιηθεί σωστά.

46 38 ΚΕΦΑΛΑΙΟ 3. ΑΛΓΟΡΙΘΜΟΣ ΤΑΞΙΝΟΜΗΣΗΣ COUNT SORT Σε αυτό το κεφάλαιο θα δείξουμε πώς μπορούμε να πετύχουμε πιο αποδοτικό σχεδιασμό της count sort για 1.x συσκευές και δεύτερον πώς να σχεδιάσουμε τον αλγόριθμο count sort έτσι ώστε να αξιοποιεί τα νέα χαρακτηριστικά των 2.x συσκευών. Στην ανάλυση που ακολουθεί θα εξετάσουμε δύο διαφορετικά σενάρια ταξινόμησης ενός πίνακα ακεραίων. Στο πρώτο, η GPU χρησιμοποιείται ως συνεργάτης της CPU. Σε αυτό το σενάριο, ο αρχικός πίνακας φτιάχνεται στη CPU, στη συνέχεια μεταφέρεται στη GPU όπου και ταξινομείται. Στο τέλος μεταφέρεται πάλι στη CPU. Στο δεύτερο σενάριο, ο αλγόριθμος count sort καλείται από κάποιο άλλο πρόγραμμα CUDA. Ο πίνακας δημιουργείται στη GPU, ταξινομείται και μένει εκεί για χρήση από το άλλο πρόγραμμα. Η ανάλυση που γίνεται στέκεται σε τρία σημεία για τα δύο σενάρια: α) στο κόστος μεταφοράς των δεδομένων από και προς τη GPU, β) στον αριθμό των νημάτων που χρησιμοποιούνται σε κάθε βήμα και γ) στην αξιοποίηση, όπου αυτό είναι δυνατόν, της κοινής μνήμης. Το πρώτο σενάριο καθώς και τα σημεία α και γ δεν εξετάζονται στο [23]. Η βασική παρατήρηση που γίνεται στο [23] είναι ότι μπορούμε να εκτελέσουμε το κάθε βήμα του αλγορίθμου σε διαφορετικό "πυρήνα". Αυτό διευκολύνει τον συγχρονισμό των νημάτων ανάμεσα σε κάθε βήμα. Επίσης, επιτρέπει να χρησιμοποιείται διαφορετικός αριθμός νημάτων για κάθε βήμα. Η κλήση πυρήνα στην CUDA δεν κοστίζει σε χρόνο, επομένως οι πολλές κλήσεις διαφορετικών πυρήνων δεν επηρεάζουν την απόδοση ιδιαίτερα ενώ βοηθούν στην καλύτερη αξιοποίηση των πόρων της κάρτας Σχεδίαση count sort για CUDA Η σχεδίαση της count sort για το πρώτο σενάριο αποτελείται από πέντε βήματα, ενώ στο δεύτερο σενάριο από τρία: 1. Μεταφορά των δεδομένων εισόδου από τη CPU στη GPU (μόνο για το πρώτο σενάριο). 2. Αρχικοποίηση του πίνακα καταμέτρησης Πρώτη εργασία. 3. Μέτρηση των εμφανίσεων των στοιχείων στον πίνακα εισόδου και καταγραφή τους στον πίνακα καταμέτρησης Δεύτερη εργασία. 4. Γέμισμα του ταξινομημένου πίνακα εξόδου Τρίτη εργασία. 5. Μεταφορά των ταξινομημένων δεδομένων από τη GPU στη CPU (μόνο για το πρώτο σενάριο). Στη συνέχεια θα εξετάσουμε πώς μπορούν να υλοποιηθούν όλα τα βήματα ξεχωριστά Μεταφορά δεδομένων από τη CPU στη GPU Το κόστος μεταφοράς δεδομένων από και προς τη GPU μόνο αμελητέο δε μπορεί να θεωρηθεί σε συσκευές CUDA. Στα παραπάνω δύο σενάρια που παρατέθηκαν θα χρειαστεί μεταφορά δεδομένων είτε μία φορά είτε σε κάθε επανάληψη που χρειάζεται ταξινόμηση. Η μεταφορά δεδομένων είναι ένα κόστος σε χρόνο που μειώνει την απόδοση του αλγορίθμου. Αν αυτό το κόστος είναι αρκετά μεγάλο, τότε ίσως είναι απαγορευτικό

47 3.4. ΣΧΕΔΙΑΣΜΟΣ COUNT SORT ΣΕ CUDA GPU 39 να εκτελέσουμε την count sort στην GPU, δεδομένου ότι τότε η CPU θα εκτελέσει τον αλγόριθμο γρηγορότερα. Από την εισαγωγή της έκδοσης 2.2 του CUDA Toolkit και μετά, ο προγραμματιστής μπορεί να δεσμεύσει μνήμη στη CPU η οποία δεν είναι paged στο δίσκο. Αυτού του είδους η μνήμη, η οποία σε όρους CUDA καλείται pinned, μπορεί να χρησιμοποιηθεί από την GPU χρησιμοποιώντας απευθείας πρόσβαση στη μνήμη (DMA) έτσι ώστε να μπορέσει να μεταφέρει τα δεδομένα γρηγορότερα. Επιπλέον, μια μηδενικήςαντιγραφής λειτουργία της μνήμης είναι διαθέσιμη η οποία επιτρέπει στους πυρήνες CUDA να έχουν άμεση πρόσβαση στη μνήμη της CPU. Ο συνδυασμός αυτής της λειτουργίας στην pinned μνήμη μπορεί να προσφέρει τεράστιο κέρδος, όσον αφορά την απόδοση, σε πολλές περιπτώσεις και προτείνεται, εφόσον η διαθέσιμη μνήμη στη CPU το επιτρέπει, προκειμένου να μειώσουμε τις διάφορες καθυστερήσεις των μνημών Αρχικοποίηση του πίνακα καταμέτρησης Η αρχικοποίηση του πίνακα καταμέτρησης μπορεί να γίνει με τουλάχιστον τέσσερις διαφορετικούς τρόπους: Δέσμευση της μνήμης του πίνακα καταμέτρησης στη CPU χρησιμοποιώντας την calloc κλήση συστήματος και στη συνέχεια μεταφορά του πίνακα στην κάρτα με τη χρήση της cudamemcpy() κλήσης του API. Δέσμευση μνήμης στη GPU και αρχικοποίηση της με την cudamemset() κλήση του API. Δέσμευση της μνήμης στη GPU και αρχικοποίησή της με k νήματα, όσες και οι θέσεις της. Δέσμευση μνήμης στη CPU και αρχικοποίηση της με ένα βρόχο for. Σημειώνουμε εδώ ότι ο πρώτος και ο τελευταίος τρόπος δεν μπορούν να γίνουν στο σενάριο που το πρόγραμμα καλείται από άλλη CUDA συνάρτηση. Σε αυτό το σενάριο η μνήμη δεσμεύεται μόνο μία φορά και στη συνέχεια χρησιμοποιείται πολλές φορές αφού πρώτα αρχικοποιηθεί σε κάθε επανάληψη ταξινόμησης. Σε όλες τις περιπτώσεις υπάρχει ένας συμβιβασμός που πρέπει να γίνει μεταξύ επικοινωνίας και επεξεργασίας Μέτρηση εμφάνισης τιμών Το βήμα 2 του αλγορίθμου απαιτεί την πρόσβαση στον πίνακα καταμέτρησης C με τον πίνακα A σαν δείκτη. Αυτό σε C κώδικα περιγράφεται ως C[A[i]]++. Αυτό το βήμα μπορεί να μοιραστεί αποδοτικά σε πολλά νήματα. Υπάρχουν δύο προσεγγίσεις για την καταμέτρηση των εμφανίσεων του κάθε αριθμού. Η πρώτη είναι να αποθηκεύσουμε τον πίνακα C στην κύρια μνήμη και το κάθε νήμα να γράφει σε αυτόν ταυτόχρονα. Η δεύτερη προσέγγιση είναι να αποθηκεύσουμε τον πίνακα C σε μνήμη που βρίσκεται πιο κοντά στα νήματα και είναι πιο γρήγορη, δηλαδή στην κοινή μνήμη του κάθε πολυεπεξεργαστή. Όταν όλα τα στοιχεία του πίνακα A διαβαστούν και οι πίνακες C στις τοπικές μνήμες έχουν δημιουργηθεί, τα νήματα μπορούν να υπολογίσουν τον τελικό

48 40 ΚΕΦΑΛΑΙΟ 3. ΑΛΓΟΡΙΘΜΟΣ ΤΑΞΙΝΟΜΗΣΗΣ COUNT SORT πίνακα C στην κύρια μνήμη. Η απόφαση για το ποια από τις δύο προσεγγίσεις θα χρησιμοποιηθεί εξαρτάται τόσο από το N όσο και από το k, δηλαδή τον αριθμό των προς ταξινόμηση στοιχείων και το εύρος τους. Δεδομένου ότι η count sort είναι πιο αποδοτική σε προβλήματα όπου k << N, μπορούμε να περιμένουμε ότι μια ακέραια μεταβλητή 4 bytes μπορεί να αποθηκεύσει τον αριθμό εμφανίσεων κάθε στοιχείου, εκτός κι αν το N δεν είναι αρκετά μεγάλο. Αναλόγως του k, ο πίνακας C μπορεί να αποθηκευτεί εξολοκλήρου στην κοινή ή στην κύρια μνήμη. Παρόλα αυτά υπάρχει και ένα ακόμα κρίσιμο σημείο που πρέπει να προσέξουμε. Αν πρέπει παραπάνω από ένα νήμα να διαβάσει και να ενημερώσει ένα στοιχείο του πίνακα C θα πρέπει να υπάρχει συγχρονισμός μεταξύ των νημάτων. Αυτό στην CUDA γίνεται με τις ατομικές λειτουργίες. Διαφορετικά μοντέλα καρτών προσφέρουν και διαφορετικά χαρακτηριστικά τα οποία επηρεάζουν το σχεδιασμό μας. Συσκευές με υπολογιστική δυνατότητα 1.0 δεν έχουν δυνατότητα ατομικών λειτουργιών ενώ αυτές με υπολογιστική δυνατότητα 1.1 δεν υποστηρίζουν ατομικές λειτουργίες στην κοινή μνήμη. Επίσης, το μέγεθος της κοινής μνήμης διαφέρει από κάρτα σε κάρτα. Συσκευές με υπολογιστική δυνατότητα έως 1.3 έχουν μέγεθος κοινής μνήμης 16KB (και για αυτό μπορούν να χρησιμοποιηθούν για k < 4096 στο παράδειγμα μας), ενώ συσκευές με υπολογιστική δυνατότητα 2.0 και πάνω έχουν μέγεθος κοινής μνήμης 48KB (άρα μπορούν να χρησιμοποιηθούν για k < 12288). Οι κύριες σχεδιαστικές αποφάσεις μπορούν να παρθούν όταν το N και το k είναι γνωστά. Μικρό k επιτρέπει τη χρήση κοινής μνήμης και ενός μπλοκ νημάτων. Αν ο πίνακας καταμέτρησης χωράει στην κοινή μνήμη και παραπάνω από ένα μπλοκ νημάτων χρησιμοποιείται τότε πρέπει να δώσουμε έξτρα προσοχή στην τελική άθροιση των εμφανίσεων των στοιχείων στην καθολική μνήμη Επικάλυψη μεταφοράς δεδομένων εισόδου και καταμέτρηση εμφανίσεων Η επικάλυψη της επικοινωνίας με τις υπολογιστικές πράξεις είναι ευρέως διαδεδομένη πρακτική για να κρυφθούν οι καθυστερήσεις μεταφοράς δεδομένων. Η CUDA προσφέρει τις ροές εκτέλεσης (streams) για την υποστήριξη ασύγχρονων ανεξάρτητων μεταφορών δεδομένων ταυτόχρονα με εκτελέσεις πυρήνων. Οι μεταφορές δεδομένων και οι κλήσεις πυρήνων συνδέονται με ένα συγκεκριμένο stream, ενώ πολλαπλές μεταφορές διαφόρων streams και κλήσεις πυρήνων προγραμματίζονται αυτόματα ανάλογα με τη διαθεσιμότητα των πόρων. Για να χρησιμοποιηθούν τα streams πρέπει η μνήμη που βρίσκονται τα δεδομένα στη CPU να είναι Pinned memory. Στην περίπτωση του count sort ο πίνακας προς ταξινόμηση χωρίζεται σε s τμήματα. Κάθε τμήμα ανατίθεται σε ένα stream και μεταφέρεται στην κάρτα. Για κάθε τμήμα εκτελείται ένας πυρήνας που υπολογίζει τον αριθμό εμφανίσεων κάθε στοιχείου. Οι μόνες διαφορετικές παράμετροι πυρήνα είναι η μετατόπιση και η αλλαγμένη τιμή του N που πλέον γίνεται N/s, με μικροαλλαγές για το τελευταίο τμήμα. Οι δύο πυρήνες, είτε με χρήση της κοινής είτε της καθολικής μνήμης, δημιουργούν τον τελικό πίνακα καταμέτρησης στην καθολική μνήμη με χρήση ατομικών λειτουργιών.

49 3.4. ΣΧΕΔΙΑΣΜΟΣ COUNT SORT ΣΕ CUDA GPU Σχήμα 3.1: Παράδειγμα υπολογισμού prefix sum για N = 14 και k = Υπολογισμός πίνακα εξόδου Στο προηγούμενο μέρος περιγράψαμε δύο διαφορετικές προσεγγίσεις για τον υπολογισμό του ταξινομημένου πίνακα με τη βοήθεια του πίνακα καταμέτρησης. Η πρώτη προσέγγιση οδηγεί σε μη σταθερή ταξινόμηση, ενώ η δεύτερη οδηγεί σε σταθερή. Αναφέραμε ήδη ότι οι ατομικές λειτουργίες της CUDA οδηγούν σε μη σταθερή ταξινόμηση έτσι κι αλλιώς. Έτσι η πιο απλή προσέγγιση μπορεί να χρησιμοποιηθεί. Παρόλα αυτά, η προσέγγιση αυτή δεν μπορεί να παραλληλοποιηθεί, μιας και ο μετρητής z χρησιμοποιείται σειριακά σαν δείκτης του πίνακα εξόδου B. Επίσης, εξαρτάται από όλα τα προηγούμενα C[i]. Είναι εύκολο να δειχθεί ότι για συγκεκριμένα i και j: j 1 z = j + C[i] Η δεύτερη προσέγγιση αποτελείται από δύο μέρη όπως φαίνεται και στον Αλγόριθμο 3.2. Το πρώτο μέρος στην ουσία είναι ένα βήμα πριν τον πραγματικό υπολογισμό. Αντικαθιστά τις τιμές του πίνακα καταμέτρησης με τα συγκεντρωτικά αθροίσματα όλων των στοιχείων τα οποία είναι μικρότερα του συγκεκριμένου. Στο Σχήμα 3.1 φαίνεται ένα παράδειγμα για N = 14 και k = 4. Στο δεύτερο μέρος ο πίνακας εισόδου A ξαναδιαβάζεται και κάθε στοιχείο μπαίνει στη σωστή θέση στον πίνακα εξόδου B με μια έμμεση διευθυνσιοδότηση από τον C. Το πρώτο μέρος φαίνεται σειριακό αφού κάθε C [i] εξαρτάται από το C [i 1]. Παρόλα αυτά υπάρχει ένας αποδοτικός παράλληλος αλγόριθμος με υπολογιστική πολυπλοκότητα O(k), ο οποίος λέγεται parallel prefix sum και μπορεί να χρησιμοποιηθεί [27]. Το NVIDIA CUDA SDK περιέχει τη βιβλιοθήκη CUDA CUDPP [28, 29], η οποία προσφέρει μια βελτιστοποιημένη υλοποίηση αυτού του αλγορίθμου. Ο αλγόριθμος parallel prefix sum [27] είναι βασισμένος σε ένα κοινό παράλληλο αλγοριθμικό πρότυπο, το ισορροπημένο δέντρο. Για n στοιχεία, το δέντρο έχει βάθος logn επίπεδα και κάθε επίπεδο d έχει 2 d κόμβους. Κάνοντας μία πρόσθεση σε κάθε κόμβο, μία διάσχιση του δέντρου οδηγεί σε O(n) προσθέσεις. Ο αλγόριθμος δουλεύει σε 2 φάσεις. Την reduce ή up-sweep και την down-sweep. Στην πρώτη φάση μερικά αθροίσματα υπολογίζονται σε κάθε κόμβο ενώ η ρίζα έχει το ολικό άθροισμα. Στη δεύτερη φάση, το δέντρο διασχίζεται από τη ρίζα στα φύλλα, χρησιμοποιώντας τα μερικά αθροίσματα από την προηγούμενη φάση. Για κάθε κόμβο, η τιμή του αντιγράφεται στον αριστερό κόμβο, ενώ ο δεξιός κόμβος γίνεται το άθροισμα του συγκεκριμένου και του αριστερού κόμβου. Υπάρχουν δύο είδη prefix sum, το αποκλειστικό και το μη αποκλειστικό, με το αποκλειστικό να έχει το πρώτο στοιχείο 0 και όλα τα υπόλοιπα στοιχεία μία i=0

50 42 ΚΕΦΑΛΑΙΟ 3. ΑΛΓΟΡΙΘΜΟΣ ΤΑΞΙΝΟΜΗΣΗΣ COUNT SORT Thread Id (0..4) C[5] B[10] input_min Thread Id (0..4) Σχήμα 3.2: Παράδειγμα της εξάλειψης του συγχρονισμού νημάτων για N = 10 και k = 5. θέση δεξιά. Στην περίπτωση του αποκλειστικού αθροίσματος, η ρίζα του δέντρου μηδενίζεται πριν τη διάσχισή του έτσι ώστε το μηδενικό να μεταφερθεί στο πρώτο στοιχείο. Δεν υπάρχει ανάγκη να κατασκευαστεί μια δομή δέντρου αφού οι επεξεργαστές χρησιμοποιούν την ταυτότητά τους για να διασχίσουν τον πίνακα σαν δέντρο. Το δεύτερο μέρος μπορεί να εκτελεστεί παράλληλα. Η ανάλυση για αυτό το βήμα είναι ανάλογη με τον σχεδιασμό του βήματος καταμέτρησης εμφανίσεων. Παρόλα αυτά πρέπει να σημειωθεί ότι υπάρχει ανάγκη για συγχρονισμό των νημάτων στο διάβασμα του πίνακα καταμετρήσεων. Στο επόμενο μέρος δείχνεται πως μπορεί να εξαλειφθεί η ανάγκη για συγχρονισμό στην περίπτωση ταξινόμησης ακεραίων Εξάλειψη συγχρονισμού νημάτων Υπάρχουν δύο σημαντικές παρατηρήσεις σχετικά με τον πίνακα καταμέτρησης C αφού ολοκληρωθεί το πρώτο μέρος του τρίτου βήματος. Η πρώτη είναι ότι ο αριθμός των j που υπάρχουν στον πίνακα εισόδου A είναι ίσος με C[j +1] C[j]. Η δεύτερη είναι ότι το C[j] είναι ο αριθμός των στοιχείων τα οποία είναι μικρότερα του j στον πίνακα A. Η πρότασή μας είναι να συνδυάσουμε αυτές τις δύο πληροφορίες και να τοποθετήσουμε (C[j + 1] C[j]) j στον πίνακα εξόδου B ξεκινώντας από τη θέση C[j]. Υποθέτοντας ότι έχουμε k νήματα στο σύνολο, το καθένα με ταυτότητα t, η προσέγγισή μας μπορεί να περιγραφεί σε ψευδοκώδικα στον Αλγόριθμο 3.3. Το Σχήμα 3.2 δείχνει πώς παράγεται ο πίνακας εξόδου B για δέκα τιμές με εύρος [1...5], όπου ο πίνακας C έχει ήδη αντικατασταθεί από το prefix sum. // Action D for i C[t] to C[t + 1] do B[i] t end Algorithm 3.3: Count sort (Εξάλειψη συγχρονισμού) Το συμπέρασμα είναι ότι σκεπτόμενοι παράλληλα, μπορούμε να συνδυάσουμε τα βήματα C και C' και αντί αυτών να κάνουμε ένα βήμα D όπου δε θα υπάρχει ανάγκη για

51 3.4. ΣΧΕΔΙΑΣΜΟΣ COUNT SORT ΣΕ CUDA GPU 43 συγχρονισμό νημάτων ή για ατομικές λειτουργίες. Γενικά εξαλείφουμε τελείως την ανάγκη συνεργασίας ανάμεσα στα νήματα: κάθε νήμα χρησιμοποιεί έναν τοπικό μετρητή για να γεμίσει διαφορετικές θέσεις στον πίνακα εξόδου B. Δεδομένου ότι οι ατομικές λειτουργίες είναι αργές, πιστεύουμε ότι η διακλάδωση της ροής στα νήματα που προκύπτει, θα κοστίσει λιγότερο σε χρόνο. Το κέρδος που θα έχουμε εξαρτάται από την κατανομή των εμφανίσεων των στοιχείων. Μια ομοιόμορφη κατανομή απαιτεί κατά μέσο όρο N/k βήματα για να ολοκληρωθεί, και η εκτέλεση των νημάτων θα διακλαδωθεί μόνο για μικρό αριθμό βημάτων. Μια κατανομή με μεγάλη ουρά θα χρειαστεί περισσότερα βήματα για να ολοκληρωθεί. Για παράδειγμα, αν 50% της εισόδου είναι ίδια νούμερα, το βήμα αυτό θα ολοκληρωθεί σε N/2 βήματα και το φορτίο δε θα είναι ισόποσα μοιρασμένο στα νήματα. Παρόλα αυτά υπάρχουν δύο σημεία τα οποία πρέπει να τεθούν υπόψιν. Το πρώτο είναι ότι αυτό το βήμα ολοκληρώνει τους υπολογισμούς και δεν απαιτείται άλλη δουλειά. Σε αυτή την περίπτωση τα νήματα που θα τελειώσουν πρώτα τους υπολογισμούς θα πρέπει να περιμένουν μέχρι να τελειώσουν και τα υπόλοιπα. Στην ουσία υπάρχουν δύο καταστάσεις που μπορεί να βρεθεί ένα νήμα: Ή θα γεμίζει τον πίνακα εξόδου ή θα περιμένει. Έτσι δεν υπάρχει πραγματικά διακλάδωση εντολών, απλά κάποια νήματα παραμένουν ανενεργά για κάποιο διάστημα. Επίσης, πρέπει να συμπληρώσουμε εδώ ότι οι καινούριες κάρτες μπορούν να χειριστούν αρκετά αποδοτικά μέχρι τέσσερα διαφορετικά μονοπάτια εκτέλεσης. Το δεύτερο σημείο είναι σχετικό με το κόστος σε χρόνο των ατομικών ενεργειών. Μπορούμε να χωρίσουμε ισόποσα το φόρτο εργασίας του κάθε νήματος, με το να δώσουμε σε κάθε νήμα να συμπληρώσει ένα συγκεκριμένο τμήμα του πίνακα εξόδου. Σε αυτή την περίπτωση όλα τα k νήματα θα ολοκληρώσουν το έργο τους σε N/k βήματα. Παρόλα αυτά το κόστος των ατομικών ενεργειών πρέπει να συνυπολογιστεί εδώ. Χρειαζόμαστε δύο ατομικές ενέργειες σε κάθε βήμα, οι οποίες κοστίζουν, καθώς επίσης και αντιμετώπιση συγκρούσεων από το υλικό, όταν δύο ή παραπάνω νήματα συγκρούονται σε κάποια από τις δύο ενέργειες. Έτσι σε κάθε βήμα ένα νήμα μπορεί να είναι σε μία από τις παρακάτω τέσσερις καταστάσεις: δεν είναι σε σύγκρουση και ενημερώνει τη μνήμη, είναι σε σύγκρουση στην πρώτη ατομική ενέργεια και περιμένει να εξυπηρετηθεί, είναι σε σύγκρουση στην δεύτερη ατομική ενέργεια και περιμένει να εξυπηρετηθεί, ή έχει ολοκληρώσει το έργο του και περιμένει να τερματίσει. Έτσι είναι πιθανό σε κάθε βήμα ένα ή παραπάνω νήματα να διακλαδώνονται. Παρόλο που λιγότερα βήματα απαιτούνται στο σύνολο, ο τελικός χρόνος εκτέλεσης μπορεί να είναι μεγαλύτερος Μεταφορά δεδομένων από τη συσκευή στη CPU Η βασική καθυστέρηση στο σενάριο όπου η GPU βοηθάει τη CPU σε συγκεκριμένες δουλειές είναι η μεταφορά των δεδομένων μέσω του σχετικά αργού PCI διαύλου. Για αυτό το λόγο οι μεταφορές πρέπει να ελαχιστοποιούνται. Αν ο πίνακας εξόδου πρέπει να επιστρέψει στη CPU, ίσως είναι καλό να επιστραφούν μικρότερα δεδομένα και αντί για καθυστέρηση στη μεταφορά να υπάρχει επεξεργασία. Μια επιλογή για να το ερευνήσουμε αυτό είναι να επιστραφεί ο πίνακας καταμέτρησης στη CPU και αυτή είτε σειριακά είτε με πολλούς πυρήνες να φτιάξει τον πίνακα εξόδου.

52 44 ΚΕΦΑΛΑΙΟ 3. ΑΛΓΟΡΙΘΜΟΣ ΤΑΞΙΝΟΜΗΣΗΣ COUNT SORT Συνδυασμός εξάλειψης συγχρονισμού νημάτων και μεταφοράς αποτελεσμάτων Τα streams της CUDA επιτρέπουν επικάλυψη των μεταφορών δεδομένων με υπολογισμούς και έχουν ήδη αναλυθεί και χρησιμοποιηθεί σε αυτήν την εργασία, συνδυάζοντας την μεταφορά του πίνακα εισόδου και την καταμέτρηση των εμφανίσεων των στοιχείων. Είναι εφικτό να εξαλείψουμε τον συγχρονισμό στα νήματα ακόμα και σε τμήματα του πίνακα καταμέτρησης ενώ μεταφέρουμε τα αποτελέσματα στη CPU. Αυτό μπορεί να γίνει είτε αυτόματα χρησιμοποιώντας Zero-copy pinned memory, ή χειροκίνητα χρησιμοποιώντας streams. Η πρώτη προσέγγιση είναι απλή αφού μπορούμε να χρησιμοποιήσουμε της κλήσεις συστήματος της CUDA. Για τη δεύτερη προσέγγιση, κάθε stream εκτελεί τον πυρήνα με την εξάλειψη του συγχρονισμού νημάτων για ένα τμήμα του πίνακα καταμέτρησης και μεταφέρει το αποτέλεσμα στη CPU χρησιμοποιώντας pinned μνήμη. Ο πίνακας καταμέτρησης μεταφέρεται στη CPU και διαιρείται σε ίσα τμήματα με το καθένα να ξεκινάει στο startc και να τελειώνει στο endc. Για αυτά τα όρια, τα αντίστοιχα όρια του πίνακα εξόδου startn και endn υπολογίζονται. Ο αρχικός πυρήνας καλείται με τον αριθμό στοιχείων να είναι endn, την μικρότερη τιμή εισόδου το startc + input_min, και ο πίνακας καταμέτρησης ο δείκτης στο στοιχείο startc. Για κάθε stream μετά από την κλήση του πυρήνα, ο πίνακας εξόδου από startn έως endn μεταφέρεται στη CPU. 3.5 Αποτελέσματα Εκτελέσαμε πολλά πειράματα σε δύο πλατφόρμες για να μπορέσουμε να αξιολογήσουμε τις διάφορες επιλογές σχεδίασης του αλγορίθμου. Οι δύο πλατφόρμες ήταν οι εξής: "T13" με Intel Core 2 Duo E8400 CPU στα 3.0GHz με 4 GB RAM και κάρτα NVIDIA GeForce GTX 260 GPU (CC 1.3) με 896 MB RAM. Το λειτουργικό σύστημα ήταν Ubuntu Desktop Linux bit. Η άλλη πλατφόρμα ήταν η "T20" με Intel Core i7 930 CPU στα 2.8 Ghz με 6 GB RAM και κάρτα NVIDIA GeForce GTX 480 GPU (CC 2.0) και 1536 MB RAM. Το λειτουργικό σύστημα ήταν Ubuntu Desktop Linux bit. Όλοι οι χρόνοι από δω και στο εξής είναι σε milliseconds και είναι ο μέσος όρος 10 συνεχόμενων εκτελέσεων για N = 2 23 και k = 2 15 εκτός αν ειπωθεί κάτι διαφορετικό. Η τυπική απόκλιση σε κάθε περίπτωση είναι μικρότερη του 1% του χρόνου εκτέλεσης. Όλες οι μετρήσεις έγιναν με την κλήση cudaeventtimer() Μεταφορά δεδομένων από τη CPU στη GPU Στο Σχήμα 3.3 φαίνονται οι χρόνοι εκτέλεσης για τη μεταφορά δεδομένων από την CPU στη GPU, χρησιμοποιώντας pinned και unpinned μνήμη. Είναι φανερό ότι η pinned μνήμη είναι γρηγορότερη και άρα πρέπει να χρησιμοποιείται όποτε αυτό είναι εφικτό Αρχικοποίηση πίνακα καταμέτρησης Ο Πίνακας 3.1 συνοψίζει την ανάλυσή μας για τις τέσσερις μεθόδους αρχικοποίησης του πίνακα καταμέτρησης. Σημειώνουμε ότι χρησιμοποιούμε pinned μνήμη σε όλα τα πειράματά μας. Είναι σαφές ότι η κλήση της cudamemset() από το API προσφέρει την

53 3.5. ΑΠΟΤΕΛΕΣΜΑΤΑ T13 pinned T13 unpinned T20 pinned T20 unpinned 10 Running time (ms) Number of elements Σχήμα 3.3: Μεταφορά δεδομένων από τη CPU στη GPU (χρόνος σε ms) Πίνακας 3.1: Αρχικοποίηση πίνακα καταμέτρησης για k = 2 15 και k = 2 20 (χρόνος σε ms) k = 2 15 k = 2 20 Μέθοδος T13 T20 T13 T20 CPU for loop CPU calloc() GPU με k νήματα GPU cudamemset() καλύτερη απόδοση μεταξύ των διαφόρων μεθόδων. Η αρχικοποίηση CPU με ένα for βρόχο προσφέρει τη χειρότερη απόδοση, όπως αναμενόταν, και πρέπει να αποφεύγεται. Πειραματιστήκαμε περαιτέρω με τη χρήση λιγότερων από k νημάτων για την αρχικοποίηση. Στην περίπτωση αυτή, κάθε νήμα πρέπει να αρχικοποιήσει 2 ή περισσότερες θέσεις μνήμης. Τα ευρήματά μας για k/2 νήματα έδειξαν μια παρόμοια αλλά ελαφρώς χειρότερη απόδοση σε σύγκριση με εκείνη των k νημάτων. Τα ευρήματα δείχνουν επίσης ότι εάν οι προσβάσεις μνήμης δεν συγχωνευτούν, τότε η απόδοση μειώνεται σημαντικά. Ως ένα παράδειγμα, στην περίπτωση της χρησιμοποίησης k/2 νημάτων, κάθε νήμα πρέπει να μηδενίσει δύο θέσεις μνήμης. Η πρώτη επιλογή είναι να μηδενίσει τις θέσεις C[t] και C[k/2 + t], όπου t είναι η ταυτότητα του νήματος. Αυτό οδηγεί σε coalesced πρόσβαση στη μνήμη. Η δεύτερη επιλογή είναι να μηδενίσει τις θέσεις C[2t] και C[2t+1]. Αυτό δεν έχει ως αποτέλεσμα coalesced πρόσβαση στη μνήμη. Η δεύτερη επιλογή είχε ως συνέπεια να απαιτηθεί δύο φορές ο αναφερόμενος χρόνος για να ολοκληρωθεί το στάδιο της αρχικοποίησης. Αντίθετα, η πρώτη επιλογή είχε επιδόσεις πιο κοντά με εκείνη της χρήσης k νημάτων, αν και λίγο χειρότερα. Επίσης, πειραματιστή-

54 46 ΚΕΦΑΛΑΙΟ 3. ΑΛΓΟΡΙΘΜΟΣ ΤΑΞΙΝΟΜΗΣΗΣ COUNT SORT καμε με ακόμη μικρότερο αριθμό νημάτων ( k/4 και k/8) με παρόμοια αποτελέσματα Καταμέτρηση εμφανίσεων Υπάρχουν δύο βασικές προσεγγίσεις για την καταμέτρηση των εμφανίσεων των στοιχείων: χρησιμοποίηση μόνο της κυρίας μνήμης ή χρησιμοποίηση, όταν αυτό είναι δυνατόν, της κοινής μνήμης. Δεδομένου ότι η επικοινωνία μεταξύ των πολυ-επεξεργαστών δεν είναι μια φθηνή εργασία, έχουμε περιορίσει τη χρήση της κοινής μνήμης μόνο για σενάρια όπου το μέγεθος του πίνακα καταμέτρησης χωράει στην διαθέσιμη κοινόχρηστη μνήμη του κάθε πολυ-επεξεργαστή. Όταν είναι δυνατόν να χρησιμοποιηθεί η κοινόχρηστη μνήμη, κάποιες πρόσθετες λειτουργίες απαιτούνται. Περιγράφουμε αυτές τις αναγκαίες ενέργειες στις επόμενες παραγράφους. Κατ' αρχήν, ο πίνακας καταμέτρησης που αποθηκεύεται στην κοινόχρηστη μνήμη πρέπει να αρχικοποιηθεί όπως στην κύρια. Είναι προτιμότερο στην αρχιτεκτονική CUDA να γίνεται τοπικά η αρχικοποίηση της μνήμης αντί να αντιγράφουμε παράλληλα τις διαθέσιμες μηδενικές τιμές από την κύρια μνήμη. Πράγματι, η τελευταία επιλογή θα δημιουργούσε συμφόρηση στο δίαυλο μνήμης. Εν συνεχεία, σε κάθε νήμα ανατίθεται ένα μέρος του πίνακα εισόδου A και συγκεντρώνει τις εμφανίσεις των στοιχείων στον πίνακα καταμέτρησης στην τοπική μνήμη, χρησιμοποιώντας atomicadd πράξεις, ώστε να συγχρονίσουμε τις ενημερώσεις του πίνακα καταμέτρησης. Ένα ενδιαφέρον σημείο εδώ, που μπορεί εύκολα να αγνοηθεί, είναι ότι κάθε νήμα δεν είναι υπεύθυνο για διαδοχικές θέσεις της εισόδου, αλλά χρησιμοποιείται μια απόκλιση για την επίτευξη coalesced προσβάσεων στην κύρια μνήμη με τα άλλα νήματα του κάθε μπλοκ. Αν η στρατηγική αυτή δεν χρησιμοποιηθεί, θα παρατηρηθεί μια σοβαρή μείωση της απόδοσης. Όταν όλα τα νήματα ολοκληρώσουν την εκτέλεση τους, δηλαδή το σύνολο του πίνακα εισόδου έχει αναλυθεί, τα νήματα συγκεντρώνουν τις τιμές του πίνακα καταμέτρησης της κοινής μνήμης στην κύρια μνήμη, χρησιμοποιώντας και πάλι atomicadd πράξεις ώστε να συντονίσουν τις ενημερώσεις. Το Σχήμα 3.4 συνοψίζει τα ευρήματά μας για αυτό το βήμα. Σε γενικές γραμμές, ισχύει ότι όσο μεγαλύτερο το εύρος, τόσο πιο γρήγορα αυτό το βήμα ολοκληρώνεται, δεδομένου ότι περισσότερα νήματα χρησιμοποιούνται και λιγότερες συγκρούσεις συμβαίνουν σε atomicadd πράξεις. Ο χρόνος στην "T20" πλατφόρμα είναι σχεδόν μια τάξη μεγέθους καλύτερος από ό,τι στην "T13". Η χρήση της κοινόχρηστης μνήμης (όταν είναι δυνατόν) προσφέρει σημαντική αύξηση των επιδόσεων στην "T13"' περίπτωση, αλλά όχι στην "T20". Μια πιθανή εξήγηση για αυτό είναι η αυξημένη απόδοση των atomicadd πράξεων στην κύρια μνήμη στην αρχιτεκτονική Fermi. Ωστόσο, υπάρχει ένα αρκετά ενδιαφέρον σημείο κοντά στο 1536 για την "T20". Ο αριθμός αυτός είναι ο μέγιστος αριθμός των νημάτων που μπορεί να χειριστεί κάθε πολυ-επεξεργαστής στη συγκεκριμένη πλατφόρμα. Έτσι, όσο τα νήματα ανατίθενται σε έναν πολυ-επεξεργαστή, η απόδοση είναι ανώτερη σε σύγκριση με τη χρησιμοποίηση δύο ή περισσότερων πολυ-επεξεργαστών. Σημειώνουμε ότι το αποτέλεσμα είναι σύμφωνο ακόμα και όταν μεταβάλλεται ο αριθμός νημάτων ανά μπλοκ από 256 έως τη μέγιστη επιτρεπόμενη τιμή Αυτή η συμπεριφορά θα μπορούσε να αποδοθεί στο γεγονός ότι χρειάζεται περισσότερος χρόνος συντονισμού για τις ατομικές πράξεις όταν δύο ή περισσότερα νήματα εκτέλεσης σε διαφορετικούς πολυ-επεξεργαστές προσπαθούν να ενημερώσουν την ίδια θέση στην κύρια μνήμη.

55 3.5. ΑΠΟΤΕΛΕΣΜΑΤΑ 47 Global,tpb=256 Global,tpb=512 Global,tpb=768 Global,tpb=1024 Shared,tpb=1024 Global,tpb=256 Global,tpb=512 Shared,tpb= Running time (ms) 10 Running time (ms) Range Range Σχήμα 3.4: Καταμέτρηση εμφανίσεων (N = 2 23, χρόνος σε ms) για "T20" (αριστερά) και "T13" (δεξιά) Επικάλυψη μέτρησης εμφανίσεων στοιχείων με μεταφορά δεδομένων εισόδου Τα Σχήματα 3.5 και 3.6 παρουσιάζουν την απόδοση για N = 2 23 και διάφορα εύρη για την επικάλυψη υπολογισμών με επικοινωνία. Το Σχήμα 3.5 παρουσιάζει μετρήσεις για την "T20" πλατφόρμα, ενώ το Σχήμα 3.6 παρουσιάζει μετρήσεις για την "T13" πλατφόρμα. Όλες οι γραμμές αντιπροσωπεύουν την εκτέλεση των πυρήνων που μετράνε τις εμφανίσεις που περιγράφονται παραπάνω, συμπεριλαμβανομένου του πρόσθετου χρόνου για να μεταφερθεί ο πίνακας εισόδου όπου απαιτείται. Για αμφότερες τις περιπτώσεις, χρησιμοποιήσαμε 15 streams, ίσα με τον αριθμό των πολυ-επεξεργαστών στη διαθέσιμη συσκευή και η είσοδος χωρίστηκε σε 15 κομμάτια. Η γραμμή Overlapped Shared αναφέρεται στην υλοποίηση με streams της CUDA και επικάλυψη των πυρήνων με την μεταφορά των τμημάτων του πίνακα εισόδου. Η γραμμή zero-copy shared παρουσιάζει χειρότερους χρόνους από την zero-copy global για χαμηλότερες τιμές εύρους, το οποίο είναι φυσιολογικό. Σε χαμηλότερες τιμές εύρους ξεκινούν λίγα νήματα και η CUDA δεν είναι σε θέση να κρύψει την καθυστέρηση της μνήμης με την εναλλαγή νημάτων. Όσο το εύρος μεγαλώνει, ο πυρήνας με την κοινή μνήμη αποδίδει πολύ καλύτερα. Υπάρχει μια μεγάλη διαφορά για μικρές τιμές, όπου όλα τα νήματα προσπαθούν να προσθέσουν ατομικά τις εμφανίσεις των στοιχείων στις ίδιες θέσεις του πίνακα καταμέτρησης. Στην "T20'' πλατφόρμα, η μικρή απόκλιση που προκαλείται από την ασύγχρονη κλήση του πυρήνα φαίνεται να μετατρέπει τις ατομικές πράξεις σε απλές προσβάσεις μνήμης, εξ' ου και η πολύ καλύτερη απόδοση μέχρι k = Επίσης, οι τμηματοποιημένοι πυρήνες λειτουργούν παράλληλα και η συσκευή κάνει καλύτερη διαχείριση των πόρων. Θα πρέπει να σημειωθεί ότι αυτό δεν παρατηρείται στην "Τ13" πλατφόρμα, επειδή η "Τ13'' συσκευή δεν είναι ικανή για ταυτόχρονες κλήσεις πυρήνων. Για να εκμεταλλευτούμε το φαινόμενο αυτό για το σενάριο με χρήση μόνο της GPU και να επεκτείνουμε την κατανόησή μας, σχεδιάσαμε ένα ακόμα πείραμα. Σε αυτό το πείραμα, εξακολουθούμε να χρησιμοποιούμε CUDA streams, αλλά μόνο για να κάνουμε τμηματοποιημένες κλήσεις πυρήνων με χρήση της κοινής μνήμης. Τα αποτελέσματα αυτού του πειράματος παρουσιάζονται με τη γραμμή Segmented Shared στα Σχήματα 3.5 και 3.6. Οι χρόνοι εκτέλεσης που παρουσιάζονται περιλαμβάνουν την εκτέλεση πυρήνα και την μεταφορά του πίνακα εισόδου (5,6 ms για N = 2 23 και "T20").

56 48 ΚΕΦΑΛΑΙΟ 3. ΑΛΓΟΡΙΘΜΟΣ ΤΑΞΙΝΟΜΗΣΗΣ COUNT SORT Pinned Zero Copy Global Pinned Zero Copy Shared Pinned Global Pinned Shared Overlapped Shared Segmented Shared Running time (ms) Σχήμα 3.5: Επικάλυψη πίνακα εισόδου με καταμέτρηση εμφανίσεων για την πλατφόρμα "T20" Range Pinned Zero Copy Global Pinned Zero Copy Shared Pinned Global Pinned Shared Overlapped Shared Segmented Shared Running time (ms) Σχήμα 3.6: Επικάλυψη πίνακα εισόδου με καταμέτρηση εμφανίσεων για την πλατφόρμα "T13" Range

57 3.5. ΑΠΟΤΕΛΕΣΜΑΤΑ 49 Σχήμα 3.7: Εξάλειψη συγχρονισμού νημάτων Εξάλειψη συγχρονισμού νημάτων Ο υπολογισμός του πίνακα εξόδου αποτελείται από δύο βήματα. Το πρώτο βήμα αφορά το parallel prefix sum. Χρησιμοποιήσαμε τη βελτιστοποιημένη εφαρμογή της βιβλιοθήκης CUDA CUDPP που είναι τώρα μέρος του CUDA SDK. Η εξάλειψη του συγχρονισμού νημάτων στο βήμα αυτό, είναι μια από τις μείζονες συνεισφορές μας. Το Σχήμα 3.7 παρουσιάζει τους χρόνους εκτέλεσης αυτού του βήματος στις 2 αρχιτεκτονικές για την υλοποίησή μας αλλά και της προσέγγισης του [23]. Είναι σαφές ότι η προσέγγισή μας προσφέρει με συνέπεια μια σημαντική αύξηση της απόδοσης. Αυτό είναι ιδιαίτερα σαφές στην πλατφόρμα "T13", όπου οι ατομικές λειτουργίες είναι πολύ πιο αργές σε σύγκριση με αυτές στην πλατφόρμα "T20". Ωστόσο, ακόμη και στις συσκευές νέας γενιάς, η προσέγγισή μας εξακολουθεί να αποδίδει πολύ καλύτερα. Σημειώνουμε ότι, δεδομένου ότι ο πηγαίος κώδικας δεν ήταν διαθέσιμος, δεν θεωρούμε τους αριθμούς που αναφέρθηκαν ως τους καλύτερους που μπορούν να παραχθούν από την προσέγγιση της [23]. Είναι περισσότερο μια εφαρμογή CUDA, με βάση την κατανόησή μας στα αλγοριθμικά βήματα που περιγράφονται εκεί. Σε κάθε περίπτωση, η προσέγγισή μας απαιτεί συνολικά μία ατομική λειτουργία για το δεύτερο στάδιο ενώ η άλλη προσέγγιση απαιτεί δύο ακόμα ατομικές λειτουργίες για το τέταρτο βήμα. Για αυτό και η αυξημένη απόδοση που επιτυγχάνουμε Επικάλυψη πυρήνα εξάλειψης συγχρονισμού νημάτων και μεταφοράς αποτελεσμάτων Τα Σχήματα 3.8 και 3.9 παρουσιάζουν τις τρεις εναλλακτικές λύσεις για την επικάλυψη του πυρήνα εξάλειψης συγχρονισμού νημάτων με την μεταφορά του ταξινομημένου πίνακα στη CPU. Το Σχήμα 3.8 παρουσιάζει μετρήσεις για την πλατφόρμα "T20"

58 50 ΚΕΦΑΛΑΙΟ 3. ΑΛΓΟΡΙΘΜΟΣ ΤΑΞΙΝΟΜΗΣΗΣ COUNT SORT 1000 Pinned Pinned Zero Copy Streams Overlap 100 Running time (ms) Σχήμα 3.8: Σύγκριση της επικάλυψης των μεταφορών με την εξάλειψη του συγχρονισμού νημάτων στην πλατφόρμα "T20" Range ενώ το Σχήμα 3.9 παρουσιάζει μετρήσεις για την πλατφόρμα "T13". Δεδομένου ότι ο χρόνος μεταφοράς του ταξινομημένου πίνακα είναι περίπου 5,2 ms, είναι σαφές ότι η συσκευή ήταν σε θέση να κρύψει εντελώς αυτή την καθυστέρηση κάνοντας αποτελεσματικότερη χρήση των πόρων. Από την άλλη πλευρά, η χειροκίνητη επικάλυψη αποδίδει πολύ καλύτερα μεταξύ 2 4 και Αυτό δείχνει υπο-χρησιμοποίηση των πόρων, έτσι ώστε οι παράλληλες εκτελέσεις πυρήνων μπορούν να προσφέρουν μια ταχύτερη εναλλακτική λύση. Από την άλλη πλευρά, από 2 12 και πάνω, η κατάργηση συγχρονισμού νημάτων απαιτεί περίπου 1-2 ms και οι μεταφορές ακολουθούν. Σε αυτήν την κατάσταση, χρησιμοποιώντας zero-copy pinned μνήμη, η CUDA καταφέρνει να κάνει καλύτερη μικρο-διαχείριση και εν τέλει καταφέρνει να κρύψει το χρόνο εκτέλεσης του πυρήνα στην σχετικά μεγάλη καθυστέρηση μεταφοράς δεδομένων Υλοποίηση της count sort σε CUDA Το profiling των διαφόρων επιλογών σχεδιασμού δείχνει ότι η καλύτερη ρύθμιση τόσο για την παλαιότερη (CC = 1.x) όσο και για την νεότερη (CC = 2.0) συσκευή είναι: Χρήση pinned μνήμης χωρίς zero-copy για τη μεταφορά δεδομένων από και προς τη μνήμη της CPU. Χρήση της cudamemset() κλήσης του API για την αρχικοποίηση του πίνακα καταμέτρησης. Χρήση, όταν αυτό είναι δυνατόν, της κοινής μνήμης για την εκτέλεση τοπικών πράξεων και άθροιση των συνολικών εμφανίσεων στην κύρια μνήμη με τη χρήση ατομικών πράξεων.

59 3.5. ΑΠΟΤΕΛΕΣΜΑΤΑ Pinned Pinned Zero Copy Streams Overlap 100 Running time (ms) Σχήμα 3.9: Σύγκριση της επικάλυψης των μεταφορών με την εξάλειψη του συγχρονισμού νημάτων στην πλατφόρμα "T13" Range Χρήση της τεχνικής που προτείνεται για την αποφυγή συγχρονισμού των νημάτων για την παραγωγή του ταξινομημένου πίνακα. Για να αξιολογήσουμε τα αποτελέσματά μας, συγκρίναμε την υλοποίησή μας σε απόδοση με δύο άλλες εφαρμογές. Η πρώτη είναι η radixsort του CUDA SDK. Αυτή η εφαρμογή επιτρέπει δοκιμές για διάφορα μεγέθη του N και προσφέρει μια επιλογή για ταξινόμηση μόνο των κλειδιών ή ζευγαριών κλειδί-τιμή. Αυτή η επιλογή μπορεί να χρησιμοποιηθεί για την ταξινόμηση ακέραιων, που κάνει και η εφαρμογή μας, έτσι ώστε να μπορεί να γίνει μια δίκαιη σύγκριση. Η εφαρμογή είναι διαθέσιμη και στις δύο γενιές συσκευών. Η δεύτερη είναι η εφαρμογή που φτιάξαμε εμείς για count sort σε CUDA, με βάση την περιγραφή του [23]. Ο πηγαίος κώδικας της αρχικής εργασίας δεν ήταν διαθέσιμος και κατά συνέπεια, κάναμε το καλύτερο δυνατό για την υλοποίηση του έργου που περιγράφεται στο έγγραφο, βασιζόμενοι στην κατανόηση της εσωτερικής λειτουργίας του αλγορίθμου. Αυτή η εφαρμογή είναι διαθέσιμη και στις δύο γενιές των συσκευών. Το Σχήμα 3.10 συνοψίζει την συγκριτική αξιολόγησή μας από τις τρεις εφαρμογές και εκθέτει την ταχύτητα στην πλατφόρμα T20. Δεν λαμβάνουμε υπόψιν τη μεταφορά δεδομένων από και προς τη CPU, αλλά μόνο μετράμε την απόδοση του αλγορίθμου στην συσκευή CUDA. Τα αποτελέσματα αυτά επιβεβαιώνουν ότι ο σχεδιασμός μας πέτυχε υψηλή απόδοση. Δείχνουμε πάνω από τριπλάσια βελτίωση της απόδοσης σε σύγκριση με τη radixsort, που υπάρχει στο CUDA SDK. Ωστόσο, θα πρέπει να σημειωθεί ότι μια πρόσφατη εφαρμογή radixsort πέτυχε τον τελευταίο καιρό ακόμη καλύτερα αποτελέσματα [24]. Δεδομένου ότι και οι δύο radixsort υλοποιήσεις χρησιμοποιούν εσωτερικά έναν αλγόριθμο ταξινόμησης count sort, πιστεύουμε ότι θα ήταν μια ενδιαφέρουσα προσέγγιση να ενσωματωθούν οι προτάσεις μας στη δεύτερη προσέγγιση της radixsort, προκειμένου να επιτευχθεί ακόμη καλύτερη απόδοση. Παρόλα αυτά, η ενα-

60 52 ΚΕΦΑΛΑΙΟ 3. ΑΛΓΟΡΙΘΜΟΣ ΤΑΞΙΝΟΜΗΣΗΣ COUNT SORT 1000 radixsort Impl. based on [12] Impl. of our proposal 100 Mkeys/sec Number of elements Σχήμα 3.10: Αλγόριθμοι ταξινόμησης για k = 2 13 στην πλατφόρμα T20 σχόληση με αυτό το θέμα είναι πέρα από τον σκοπό της παρούσας εργασίας. 3.6 Συμπεράσματα Στο κεφάλαιο αυτό περιγράφεται η σχεδίαση και υλοποίηση του αλγορίθμου ταξινόμησης count sort στην αρχιτεκτονική CUDA. Η εφαρμογή μας παρουσιάζει σημαντική βελτίωση της απόδοσης. Η βελτίωση αυτή μπορεί να αποδοθεί κατά κύριο λόγο στην εξάλειψη του συγχρονισμού μεταξύ των νημάτων κατά τη διάρκεια του τελευταίου σταδίου του αλγορίθμου. Η διαδικασία σχεδιασμού επέτρεψε να μελετήσουμε τις διάφορες επιλογές που είναι διαθέσιμες στις συσκευές που υποστηρίζουν CUDA και να επιλέξουμε τις κατάλληλες παραμέτρους για μια βέλτιστη σχεδίαση. Ένα από τα συμπεράσματα στα οποία φτάσαμε είναι ότι το σύστημα θα πρέπει να έχει διαθέσιμους διάφορους πυρήνες ώστε να μπορεί να επιλεγεί η καλύτερη διαδικασία με βάση την είσοδο. Είναι σαφές ότι δεν υπάρχει μια συνολικά καλύτερη προσέγγιση, αλλά το μέγεθος της εισόδου και το εύρος διαδραματίζουν σημαντικό ρόλο σε αυτό. Οι ατομικές λειτουργίες που προσφέρονται από την CUDA για το συντονισμό των ταυτόχρονων προσβάσεων στη μνήμη είναι ένα βασικό δομικό στοιχείο για την υλοποίηση της ταξινόμησης count sort και η αυξημένη ταχύτητά τους σε CC 2.0 αρχιτεκτονικές οδηγεί σε σημαντικό κέρδος στην απόδοση. Παρόλα αυτά, τα κύρια σημεία συμφόρησης παραμένουν α) η επικοινωνία με την κύρια μνήμη, για την ανάγνωση του πίνακα εισόδου και β) οι μεταφορές δεδομένων από και προς την μνήμη του υπολογιστή. Υπάρχουν δύο κύριες κατευθύνσεις για μελλοντικές εργασίες. Η πρώτη είναι να προσαρμοστεί και να συνδυαστεί η προσέγγισή μας με τον αλγόριθμο που περιγράφεται στο [24]. Πιστεύουμε ότι αυτό θα οδηγήσει σε ακόμα καλύτερη απόδοση. Η δεύτερη είναι να διερευνηθεί περαιτέρω και να συγκριθεί η απόδοση μιας υλοποίησης του αλ-

61 3.6. ΣΥΜΠΕΡΑΣΜΑΤΑ 53 γορίθμου count sort σε CPU κάνοντας χρήση των πολλών πυρήνων που αυτή διαθέτει, με την υλοποίηση σε CUDA. Υπάρχουν ενδείξεις ότι θα μπορούσε να έχει υψηλότερη απόδοση από αυτήν της CUDA ως λύση εκφόρτωσης, κυρίως λόγω της εξάλειψης των μεταφορών μεταξύ της συσκευής και της CPU. Επίσης, η ταξινόμηση είναι διαδικασία που περιορίζεται από τη μνήμη και χρειάζεται συγχρονισμό, πράγματα που δεν συγκαταλέγονται μεταξύ των πλεονεκτημάτων της αρχιτεκτονικής CUDA.

62 54 ΚΕΦΑΛΑΙΟ 3. ΑΛΓΟΡΙΘΜΟΣ ΤΑΞΙΝΟΜΗΣΗΣ COUNT SORT

63 Κεφάλαιο 4 Πρόβλημα χρονοπρογραμματισμού εξετάσεων Πανεπιστημίων 4.1 Εισαγωγή Η βελτιστοποίηση είναι η διαδικασία για την εξεύρεση της βέλτιστης λύσης από ένα σύνολο διαθέσιμων εναλλακτικών λύσεων, λαμβάνοντας υπόψη όλους τους απαιτούμενους περιορισμούς του προβλήματος [30]. Ένα απλό πρόβλημα βελτιστοποίησης συνίσταται στην εύρεση της ελάχιστης ή της μέγιστης τιμής μιας αντικειμενικής συνάρτησης που μετρά την ποιότητα της κάθε λύσης. Οι μεταβλητές των προβλημάτων βελτιστοποίησης μπορεί να είναι είτε συνεχείς ή διακριτές. Τα προβλήματα βελτιστοποίησης με διακριτές μεταβλητές ονομάζονται προβλήματα συνδυαστικής βελτιστοποίησης [30] και το πρόβλημα χρονοπρογραμματισμού εξετάσεων Πανεπιστημίων (ΧΕΠ) που εξετάζεται σε αυτό το κεφάλαιο, ανήκει σε αυτή την κατηγορία των προβλημάτων. Υπάρχουν πολλές τεχνικές και αλγοριθμικές στρατηγικές που χρησιμοποιούνται για να λύσουν δύσκολα προβλήματα συνδυαστικής βελτιστοποίησης, αλλά καμία από αυτές δεν καταφέρνει να λύσει αποτελεσματικά όλες τις κατηγορίες των προβλημάτων βελτιστοποίησης, όπως απέδειξαν οι Wolpert και Macready [31]. Ο μαθηματικός προγραμματισμός [32], η τεχνητή νοημοσύνη [33] και οι μετα-ευρετικές τεχνικές [34] είναι μερικές από τς αλγοριθμικές οικογένειες για την επίλυση αυτών των προβλημάτων. Η κατηγορία των γενετικών (ΓΑ) και μιμητικών αλγορίθμων (ΜΑ) [35, 36, 37] βασίζεται στη θεωρία του Δαρβίνου [38] και συνήθως συμπεριλαμβάνεται στην οικογένεια της υπολογιστικής νοημοσύνης. Το πρόβλημα χρονοπρογραμματισμού εξετάσεων Πανεπιστημίων είναι ένα πρόβλημα μεγάλης σημασίας για κάθε Πανεπιστήμιο, δεδομένου ότι επηρεάζει εμμέσως τις επιδόσεις των μαθητών στις εξετάσεις. Ο στόχος είναι να τοποθετηθεί μια σειρά εξετάσεων σε ένα σύνολο χρονικών διαστημάτων με τέτοιο τρόπο, ώστε ένα σύνολο από περιορισμούς να ικανοποιούνται. Ορισμένοι περιορισμοί θεωρούνται αυστηροί και δεν πρέπει να παραβιάζονται, όπως ότι ένας φοιτητής δεν θα πρέπει να εξετάζεται σε δύο μαθήματα την ίδια στιγμή, ενώ άλλοι είναι χαλαροί και η παραβίασή τους οδηγεί σε κακή ποιότητα λύσης. Πρακτικές πτυχές του προβλήματος ΧΕΠ βρίσκονται στο [39], καθώς και μια προσέγγιση της επίλυσης του προβλήματος που πραγματοποιήθηκε από την ομάδα του εργαστηρίου [40]. Υπάρχει πλούσια βιβλιογραφία σχετικά με το πρόβλημα ΧΕΠ, συμπεριλαμβανομένων και μερικών δεδομένων αναφοράς, όπως αυτά που χρη- 55

64 56ΚΕΦΑΛΑΙΟ 4. ΠΡΟΒΛΗΜΑ ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΕΞΕΤΑΣΕΩΝ ΠΑΝΕΠΙΣΤΗΜΙΩΝ σιμοποιούνται σε αυτή την εργασία, που προτάθηκαν από τον Carter [41] και είναι μια απλοποιημένη εκδοχή του γενικού προβλήματος. Άλλα γνωστά δεδομένα αναφοράς που διατίθενται είναι τα δεδομένα από το Πανεπιστήμιο του Νότινχαμ [42] και από το Πανεπιστήμιο της Μελβούρνης [43]. Σε αυτό το κεφάλαιο παρουσιάζεται ένας υβριδικός εξελικτικός αλγόριθμος (υεa), ο οποίος έχει σχεδιαστεί για να λύσει το πρόβλημα ΧΕΠ χρησιμοποιώντας μια GPU. Η υπολογιστική ισχύς της GPU δίνει την δυνατότητα να εξερευνήσουμε καλύτερα το χώρο λύσεων, χρησιμοποιώντας μεγάλους πληθυσμούς. Έμφαση δίνεται στην κωδικοποίηση της λύσης, προκειμένου να ταιριάζει καλά στην αρχιτεκτονική της GPU. Επιπλέον, χρησιμοποιείται ο συμπιεσμένος πίνακας συγκρούσεων προκειμένου να πετύχουμε βελτίωση της απόδοσης, ενώ ένας αλγόριθμος απότομης καθόδου χρησιμοποιείται για να βελτιώσει την ποιότητα των λύσεων του γενετικού αλγορίθμου σε κάθε γενιά. Επίσης, εξετάζεται το μέγεθος της επιλογής τουρνουά, καθώς το μέγεθος του πληθυσμού αυξάνεται. 4.2 Περιγραφή του προβλήματος Το πρόβλημα χρονοπρογραμματισμού εξετάσεων Πανεπιστημίων είναι ένα πρόβλημα βελτιστοποίησης του οποίου στόχος είναι να ανατεθούν μια σειρά εξετάσεων σε ένα σύνολο χρονικών διαστημάτων με τέτοιο τρόπο, ώστε ένα σύνολο από περιορισμούς να ικανοποιούνται. Μερικοί από αυτούς τους περιορισμούς είναι ότι κανένας φοιτητής δεν πρέπει να έχει δύο εξετάσεις την ίδια στιγμή, θα πρέπει να υπάρχει αρκετός χρόνος για κάθε μαθητή να μελετήσει μεταξύ δύο εξετάσεων και οι εξετάσεις με μεγάλο αριθμό μαθητών θα πρέπει να προγραμματιστούν στην αρχή έτσι ώστε να υπάρχει αρκετός χρόνος για την διόρθωσή τους. Επιπλέον, ένας άλλος περιορισμός μπορεί να είναι ότι μια εξέταση θα πρέπει να προγραμματιστεί μετά από μια άλλη ή σε μια συγκεκριμένη αίθουσα. Το πρόβλημα ΧΕΠ έχει δύο εκδόσεις, με βάση το αν λαμβάνεται υπόψιν η χωρητικότητα των αιθουσών. Για την αξιολόγηση του προτεινόμενου αλγορίθμου χρησιμοποιούμε τα δεδομένα αναφοράς του Πανεπιστημίου του Τορόντο [41]. Για αυτά τα δεδομένα υπάρχει ένας αυστηρός περιορισμός ότι ένας μαθητής δεν μπορεί να καθίσει σε περισσότερες από μία εξετάσεις την ίδια στιγμή. Ο ελαστικός περιορισμός που υπάρχει, ενθαρρύνει την εξάπλωση των εξετάσεων σε όλη την εξεταστική περίοδο, προκειμένου να διευκολυνθεί η προετοιμασία των φοιτητών. Τα δεδομένα του Τορόντο της έκδοσης I συνοψίζονται στον Πίνακα 4.1. Το κόστος f με βάση τον ελαστικό περιορισμό των δεδομένων του Τορόντο είναι: f = 1 S E E w( t i t j )N ij (4.1) i=1 j=i+1 Στην Εξίσωση (4.1), t i t j είναι η απόσταση μεταξύ των χρονικών περιόδων t i και t j, E είναι ο συνολικός αριθμός των εξετάσεων, N ij είναι ο αριθμός των φοιτητών που οι δύο εξετάσεις έχουν κοινούς, S είναι ο συνολικός αριθμός των φοιτητών και w είναι ένας παράγοντας βάρους που παίρνει τις τιμές w = {16, 8, 4, 2, 1, 0}. Όταν η απόσταση δύο εξετάσεων είναι μόνο μια χρονική περίοδος το w είναι 16 και όσο η απόσταση αυξάνει η τιμή του w μειώνεται. Για αυτό το πρόβλημα ορίζεται μια μήτρα

65 4.3. ΣΧΕΤΙΚΗ ΒΙΒΛΙΟΓΡΑΦΙΑ 57 Πρόβλημα Εξετάσεις Φοιτητές Χρονικοί Πυκνότητα περίοδοι συγκρούσεων car-f-92 I car-s-91 I ear-f-83 I hec-s-92 I kfu-s-93 I lse-f-91 I pur-s-93 I rye-s-93 I sta-f-83 I tre-s-92 I uta-s-92 I ute-s-92 I yor-f-83 I Πίνακας 4.1: Προβλήματα του Πανεπιστημίου Τορόντο συγκρούσεων, που δείχνει το ποσοστό των εξετάσεων με κοινούς μαθητές μεταξύ των διαφόρων εξετάσεων και την υπολογιστική πολυπλοκότητα του προβλήματος. Η ( E E ) μήτρα συγκρούσεων, με τις εξετάσεις να είναι τόσο στις γραμμές όσο και στις στήλες, έχει την τιμή "1" στις τομές των ζευγών των εξετάσεων με κοινούς μαθητές μεταξύ τους. Επιπλέον, η παράμετρος της πυκνότητας των συγκρούσεων στον Πίνακα 4.1 είναι ο αριθμός των στοιχείων με την τιμή "1" στη μήτρα συγκρούσεων διαιρούμενος με τον συνολικό αριθμό των στοιχείων της μήτρας. 4.3 Σχετική βιβλιογραφία Πολλές προσεγγίσεις έχουν δημοσιευθεί για την αντιμετώπιση του προβλήματος ΧΕΠ. Στο [44] υπάρχει μια πολύ εμπεριστατωμένη έρευνα που περιγράφει το πρόβλημα, τις τεχνικές που χρησιμοποιούνται για να λυθεί και τα σύνολα δεδομένων αναφοράς που υπάρχουν για αυτό το πρόβλημα, ενώ ο Schaerf [45] παρουσιάζει τις προσεγγίσεις που έχουν δημοσιευθεί για την επίλυση του προβλήματος για σχολικά προγράμματα, για μαθήματα Πανεπιστημίων και για εξετάσεις Πανεπιστημίων. Επιπλέον, οι Petrovic και Burke [46] εξετάζουν την ενσωμάτωση διαφόρων λύσεων για το πρόγραμμα των Πανεπιστημίων με στόχο την επίτευξη μιας γενικότερης προσέγγισης. Σύμφωνα με το [44] οι τεχνικές που χρησιμοποιούνται για την επίλυση του προβλήματος ΧΕΠ μπορούν να κατηγοριοποιηθούν σε τεχνικές βασισμένες σε γράφους, σε περιορισμούς, σε τοπική αναζήτηση, σε πληθυσμούς, σε πολλαπλά κριτήρια και υπερ-ευρετικά. Στην κατηγορία τεχνικών βασισμένων σε γράφους ανήκει το έργο των Welsh και Powell [47], το οποίο είναι πολύ σημαντικό, καθώς δείχνει τη σχέση μεταξύ των χρωματιστών γράφων και των προβλημάτων χρονοπρογραμματισμού. Στο [41] εξετάζεται το πόσο επηρεάζουν έξι ευρετικά κατάταξης τα προβλήματα χρονοπρογραμματισμού. Τα ευρετικά που εξετάστηκαν είναι ο βαθμός κορεσμού, ο μεγαλύτερος βαθμός, ο μεγαλύτερος σταθμισμένος βαθμός, η μεγαλύτερη εγγραφή, η τυχαία κατάταξη και ο βαθμός

66 58ΚΕΦΑΛΑΙΟ 4. ΠΡΟΒΛΗΜΑ ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΕΞΕΤΑΣΕΩΝ ΠΑΝΕΠΙΣΤΗΜΙΩΝ του χρώματος. Επιπλέον, σε αυτή την εργασία, εισήχθησαν τα 13 σύνολα δεδομένων γνωστά ως σύνολα δεδομένων Τορόντο, τα οποία αποτελούν από τότε δεδομένα αναφοράς για την έρευνα πάνω στο πρόβλημα ΧΕΠ. Στο [48] έγινε χρήση ασαφούς λογικής για την επίλυση του προβλήματος, ενώ στο [49] αναπτύχθηκε ένα νευρωνικό δίκτυο για να αποφασίζει για τη δυσκολία μιας εξέτασης να προγραμματιστεί σύμφωνα με πολλά ευρετικά κατάταξης. Επίσης, οι Burke και Newall [50] έλυσαν το πρόβλημα ΧΕΠ με μια πιο γενική και πιο γρήγορη μέθοδο χρησιμοποιώντας ευρετικές κατατάξεις. Η μέθοδος αυτή εξετάστηκε σε πολλά προβλήματα αναφοράς και απέδειξε ότι είναι ισχυρή και αξιόπιστη. Μια άλλη κατηγορία των τεχνικών που εφαρμόστηκαν στο πρόβλημα ΧΕΠ είναι οι τεχνικές βασισμένες σε περιορισμούς. Στο [51] δείχνεται πώς προβλήματα συνδυαστικής βελτιστοποίησης μπορούν να λυθούν με τη χρήση αυτών των τεχνικών. Στην ίδια κατηγορία υπάγεται και η εργασία των Merlot [43] δεδομένου ότι χρησιμοποιούν μια μέθοδο προγραμματισμού με περιορισμούς για τη δημιουργία αρχικών λύσεων στην πρώτη φάση. Ωστόσο, στη δεύτερη φάση, οι τεχνικές προσομοιωμένης ανόπτησης και αναρρίχησης λόφων, οι οποίες ανήκουν στις μεθόδους τοπικής αναζήτησης, εφαρμόζονται με σκοπό τη βελτίωση των λύσεων. Οι τεχνικές τοπικής αναζήτησης περιλαμβάνουν την αναρρίχηση λόφων, την προσομοιωμένη ανόπτηση και την αναζήτηση Tabu. Οι Gaspero και Schaerf [52] χρησιμοποιούν ένα συνδυασμό δύο επιλυτών βασισμένων σε αναζήτηση Tabu, προκειμένου να λυθεί το πρόβλημα ΧΕΠ. Ο ένας επικεντρώνεται στους αυστηρούς περιορισμούς, ενώ ο άλλος στο να παρέχει άλλες πιθανές βελτιώσεις. Στο [53] δείχνεται ότι η μακροπρόθεσμη μνήμη μπορεί να βελτιώσει την αναζήτηση Tabu σε μεγάλο βαθμό. Οι Casey και ompson [54] σχεδίασαν έναν αλγόριθμο άπληστης τυχαιοποιημένης προσαρμοστικής διαδικασίας αναζήτησης (Greedy Randomized Adaptive Search Procedure (GRASP)), όπου στην πρώτη φάση κατασκευάζεται ένα νόμιμο και χωρίς συγκρούσεις χρονοδιάγραμμα και στη δεύτερη η λύση βελτιώνεται ποιοτικά. Οι Duong και Lam [55] παρουσιάζουν μια λύση που χρησιμοποιεί τον αλγόριθμο οπισθοδρόμησης με έλεγχο προς τα εμπρός για να δημιουργήσουν μια αρχική νομική λύση και στη συνέχεια χρησιμοποιούν προσομοιωμένη ανόπτηση για να βελτιωθεί το κόστος της λύσης. Στο [56] χρησιμοποιούνται τεχνικές τοπικής αναζήτησης και επιτυγχάνονται μερικά από τα καλύτερα διαθέσιμα αποτελέσματα στη βιβλιογραφία, ενώ οι ompson και Dowsland [57] σχεδίασαν ένα ισχυρό σύστημα που λύνει το πρόβλημα ΧΕΠ με έναν αλγόριθμο προσομοιωμένης ανόπτησης. Μια άλλη τεχνική που χρησιμοποιείται ευρέως, χρησιμοποιεί αλγορίθμους βασισμένους σε πληθυσμούς, όπως οι γενετικοί, οι μιμητικοί και οι αλγόριθμοι που προσομοιώνουν την κοινωνία των μυρμηγκιών. Οι Burke και Silva [58] στην εργασία τους συζητούν τις αποφάσεις που πρέπει να ληφθούν υπόψη προκειμένου να σχεδιαστεί ένας αποτελεσματικός μιμητικός αλγόριθμος και ιδιαίτερα εξετάζουν τις μη νόμιμες λύσεις ως μέρος του χώρου αναζήτησης, την συνάρτηση κόστους με τον πλήρη και τον προσεγγιστικό αξιολογητή, τις κωδικοποιήσεις του αλγορίθμου και το μέρος του αλγορίθμου που πρέπει να γίνει με τους γενετικούς τελεστές και αυτό που θα πρέπει να γίνει με τοπική αναζήτηση. Επιπλέον, οι Burke και Newall [59] σχεδίασαν ένα μιμητικό αλγόριθμο που η κύρια συνεισφορά του είναι ότι χωρίζει το πρόβλημα σε υπο-προβλήματα, έτσι ώστε ο υπολογιστικός χρόνος να μειώνεται και η ποιότητα των λύσεων να αυξάνεται. Ο Eley [60] παρουσίασε ένα Max-Min Ant σύστημα για να λύσει το πρόβλημα ΧΕΠ.

67 4.3. ΣΧΕΤΙΚΗ ΒΙΒΛΙΟΓΡΑΦΙΑ 59 Στο έργο τους [61], οι συγγραφείς έλυσαν το ίδιο πρόβλημα με ένα εξελικτικό αλγόριθμο που αντί του τελεστή αναπαραγωγής χρησιμοποίησαν δύο τελεστές τοπικής αναζήτησης. Επιπλέον, στο [42] παρουσιάζεται ένας μιμητικός αλγόριθμος με δύο τελεστές μετάλλαξης που ακολουθούνται από τεχνικές αναρρίχησης λόφων. Δεν χρησιμοποιείται τελεστής αναπαραγωγής. Μια άλλη προσέγγιση περιγράφεται από τον Erben [62], ο οποίος λύνει το πρόβλημα ΧΕΠ με έναν ομαδοποιημένο γενετικό αλγόριθμο, δίνοντας έμφαση στην κωδικοποίηση και στη συνάρτηση κόστους για να πετύχει καλές ποιοτικά λύσεις. Μια διαφορετική στρατηγική λύση προτείνεται από τους Deris κ.ά. [63] οι οποίοι συνδυάζουν την τεχνική με βάση τους περιορισμούς με έναν γενετικό αλγόριθμο (ΓΑ) για να βρουν αποτελέσματα καλής ποιότητας. Τέλος, ο ενημερωμένος γενετικός αλγόριθμος που σχεδιάστηκε από τους Pillay και Banzhaf [64] αποτελείται από δύο φάσεις με την πρώτη να επικεντρώνεται στους αυστηρούς περιορισμούς και η δεύτερη στους ελαστικούς. Εκτός από τις προαναφερθείσες τεχνικές, έχουν προταθεί μια σειρά από προσεγγίσεις που προέρχονται από διάφορους κλάδους και έχουν αναφερθεί ικανοποιητικά αποτελέσματα με διάφορα μετα-ευρετικά [65], υπερ-ευρετικά [66, 67], υβριδικές μεθόδους [68] και άλλες. Υπάρχουν επίσης πολλές εργασίες που ασχολούνται με παράλληλους γενετικούς αλγορίθμους. Ο Shonkwiler [69] παρουσιάζει μια θεωρητική ανάλυση ενός παράλληλου γενετικού αλγορίθμου με μια σειρά από διαδικασίες που εκτελούνται ανεξάρτητα και δίνει μια φόρμουλα για να εκτιμηθεί η επιτάχυνση. Ο Cant-Paz [70] διεξήγαγε μια έρευνα σχετικά με τους παράλληλους γενετικούς αλγόριθμους, εξετάζοντας όλα τα μοντέλα που υπάρχουν στη βιβλιογραφία, όπως αφεντικού-εργάτη, μοναδικού πληθυσμού, πολλαπλών πληθυσμών και ιεραρχικών γενετικών αλγορίθμων. Στο [71] γίνεται διεξοδική έρευνα σχετικά με τα παράλληλα μετα-ευρετικά, τόσο για αυτά που βασίζονται σε trajectory όσο και σε αυτά που βασίζονται σε πληθυσμούς. Εξετάζονται πολλές από τις εφαρμογές στις οποίες έχουν χρησιμοποιηθεί παράλληλα μετα-ευρετικά, τα μοντέλα προγραμματισμού, οι διαθέσιμες παράλληλες αρχιτεκτονικές και τεχνολογίες, καθώς και το υπάρχον λογισμικό. Οι Lazarova και Borovska [72] παρουσιάζουν μια σύγκριση ενός παράλληλου υπολογιστικού μοντέλου βελτιστοποίησης αποικίας μυρμηγκιών, προσομοιωμένης ανόπτησης και ενός γενετικού αλγορίθμου, που εφαρμόζονται στο πρόβλημα του περιοδεύοντος πωλητή. Ο Talbi κ.ά. [73] εξετάζουν παράλληλα μοντέλα για μετα-ευρετικά, όπως η αυτόνομη παράλληλη συνεργασία. Αναλύουν το χρόνο υπολογισμού και αναλύουν πολλές εργασίες για τα συγκεκριμένα μοντέλα. Πρόσφατα, εκτεταμένη έρευνα έχει γίνει στη μεταφορά ΓΑ σε GPUs. Οι Pospichal κ.ά. [74] σχεδίασαν ένα μοντέλο νησιών για ένα γενετικό αλγόριθμο σε CUDA και το ελέγξανε με κάποιες συναρτήσεις αναφοράς. Όλα τα τμήματα του αλγορίθμου εκτελούνται στη GPU και τα αποτελέσματα δείχνουν επιτάχυνση περίπου 7000 φόρες σε σύγκριση με την αντίστοιχη CPU εφαρμογή. Επίσης, στο [75] παρουσιάζεται ένας γενετικός αλγόριθμος που η αξιολόγηση του πληθυσμού του γίνεται στην GPU με επιτάχυνση έως 105 φορές. Ο Wong [76] υλοποίησε έναν εξελικτικό αλγόριθμο στην GPU με επιτάχυνση ανάμεσα στο 5.62 και στο Μια διαφορετική προσέγγιση δίνεται από τους Luong [77]. Παρουσιάζεται ένας υβριδικός γενετικός αλγόριθμος και μόνο η παραγωγή και η αξιολόγηση της γειτονιάς της τοπικής αναζήτησης γίνονται παράλληλα, με επιτάχυνση έως 14.6 φορές. Επιπλέον, ένας παράλληλος ΓΑ περιγράφεται στο [78] με επιτάχυνση περίπου Ένας ιεραρχικός παράλληλος ΓΑ παρουσιάζεται από τους Zhang

68 60ΚΕΦΑΛΑΙΟ 4. ΠΡΟΒΛΗΜΑ ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΕΞΕΤΑΣΕΩΝ ΠΑΝΕΠΙΣΤΗΜΙΩΝ και He [79] αλλά δεν δίνονται πειραματικά αποτελέσματα. Οι Vidal και Alba [80] περιγράφουν έναν κυτταρικό γενετικό αλγόριθμο, ο οποίος τρέχει εξ' ολοκλήρου στη GPU και η επιτάχυνση που επιτυγχάνεται είναι έως 24. Μια εφαρμογή παράλληλου ΓΑ σε CUDA, σε δυαδική και πραγματική κωδικοποίηση, περιγράφεται στο [81] με πολύ καλές επιταχύνσεις μέχρι 400x. Εκεί προτείνονται τροποποιήσεις όχι μόνο στη λειτουργία της αξιολόγησης, αλλά και στους γενετικούς τελεστές. Σύμφωνα με όσα γνωρίζουμε δεν υπάρχει προηγούμενη εργασία η οποία να ασχολείται με την επίλυση του προβλήματος εξετάσεων Πανεπιστημίων με υβριδικό εξελικτικό αλγόριθμο σε GPU. Στο κεφάλαιο αυτό προτείνεται ένας τέτοιος αλγόριθμος και περιγράφονται διάφορα πειράματα προκειμένου να αξιολογηθούν οι επιδόσεις του. Στόχος μας είναι να επιτύχουμε την καλύτερη δυνατή επιτάχυνση, αλλά ταυτόχρονα να επιτύχουμε συγκρίσιμες ποιοτικά λύσεις με τις ήδη δημοσιευμένες. Επιλέχθηκε η κωδικοποίηση που σύμφωνα με τη μελέτη μας ταιριάζει καλύτερα στην αρχιτεκτονική της GPU και παρόλο που τα δεδομένα αναφοράς που χρησιμοποιούνται δεν έχουν πολλούς περιορισμούς τα πειραματικά αποτελέσματα υπόσχονται καλές επιδόσεις για αντίστοιχα προβλήματα με περισσότερους περιορισμούς. 4.4 Μεθοδολογία Η πρότασή μας είναι η επίλυση του προβλήματος ΧΕΠ με έναν υβριδικό εξελικτικό αλγόριθμο. Στην αρχή, δημιουργείται ένας αριθμός αρχικών λύσεων και στη συνέχεια εφαρμόζεται ένας γενετικός αλγόριθμος. Στο γενετικό αλγόριθμο πρώτα υπολογίζεται το κόστος όλων των χρωμοσωμάτων και μετά δημιουργείται μια νέα γενιά με την εφαρμογή του τελεστή διασταύρωσης και του τελεστή μετάλλαξης. Για την περαιτέρω βελτίωση των λύσεων, χρησιμοποιείται ένας άπληστος αλγόριθμος απότομης καθόδου. Δεδομένου ότι οι μεταφορές δεδομένων από και προς την GPU είναι χρονοβόρες, όλος ο αλγόριθμος εκτελείται στη GPU εκτός από την κατασκευή των αρχικών λύσεων, η οποία γίνεται στη CPU και θεωρείται ως ένα βήμα προ-επεξεργασίας Κωδικοποίηση και αναπαράσταση Η επιλογή της κωδικοποίησης των χρωμοσωμάτων είναι ζωτικής σημασίας καθώς επηρεάζει την απόδοση του αλγορίθμου από άποψη ταχύτητας αλλά και ποιότητας των λύσεων. Οι δυο κύριες κωδικοποιήσεις είναι η άμεση και η έμμεση κωδικοποίηση. Στην άμεση κωδικοποίηση το χρωμόσωμα είναι ένας πίνακας ακεραίων με μέγεθος ίσο με τον αριθμό των εξετάσεων, έτσι ώστε κάθε κελί να αναπαριστά την αντίστοιχη εξέταση, και η τιμή του κάθε κελιού του πίνακα είναι η χρονική περίοδος στην οποία η αντίστοιχη εξέταση έχει προγραμματιστεί (Σχήμα 4.1). Στην έμμεση κωδικοποίηση το χρωμόσωμα είναι ένας πίνακας λιστών μεγέθους ίσου με τον αριθμό των διαθέσιμων χρονικών περιόδων. Έτσι, υπάρχει ένα κελί για κάθε χρονική περίοδο και κάθε κελί του πίνακα περιέχει τις εξετάσεις που έχουν προγραμματιστεί στη συγκεκριμένη χρονική περίοδο (Σχήμα 4.2). Στο [82], οι συγγραφείς τονίζουν τη σημασία της σωστής κωδικοποίησης των χρωμοσωμάτων που χρησιμοποιείται στον αλγόριθμο και προτείνουν την κατακλυσμική προσαρμοστική μετάλλαξη ως λύση για τα προβλήματα που εισάγει η άμεση κωδικοποίηση στη διαδικασία αναζήτησης. Εμείς επιλέξαμε την άμεση κωδικοποίηση επειδή οι πίνακες είναι πιο ταιριαστοί με την αρχιτεκτονική της GPU από τις

69 4.4. ΜΕΘΟΔΟΛΟΓΙΑ 61 Σχήμα 4.1: Άμεση κωδικοποίηση: Τελεστής διασταύρωσης ενός σημείου μεταξύ δυο χρωμοσωμάτων μετά το δεύτερο γονίδιο. E1-E5: εξετάσεις, T1-T3: χρονικές περίοδοι λίστες που απαιτούνται στην έμμεση κωδικοποίηση. Επιπλέον, ο τελεστής διασταύρωσης στην έμμεση κωδικοποίηση οδηγεί μερικές φορές σε ανέφικτες λύσεις, αφού μερικές εξετάσεις μπορεί να εξαφανιστούν ή να εμφανίζονται δύο φορές σε μια λύση όπως φαίνεται στο Σχήμα 4.2 (σε έντονο κόκκινο χρώμα οι εξετάσεις που εμφανίζονται δύο φορές), ενώ στην άμεση κωδικοποίηση αυτό δεν μπορεί να συμβεί (Σχήμα 4.1). Στην έμμεση κωδικοποίηση, αν μετά τον τελεστή διασταύρωσης μια εξέταση υπάρχει δύο φορές ή καθόλου, συνήθως μια μέθοδος επιδιόρθωσης εφαρμόζεται για να βρεθεί μια παρόμοια νόμιμη λύση Κατασκευή αρχικών λύσεων Η διαδικασία για την εξεύρεση ποιοτικών αρχικών λύσεων γίνεται στην CPU ως ένα βήμα προ-επεξεργασίας. Ο αρχικός πληθυσμός αποτελείται από ένα σύνολο αλγοριθμικά υπολογισμένων λύσεων και μια σειρά από τυχαία δημιουργημένες λύσεις. Οι αλγοριθμικά υπολογισμένες λύσεις είναι πολύ λίγες σε αριθμό (λιγότερες από 250) και για την κατασκευή τους χρησιμοποιείται η ακόλουθη προσέγγιση. Οι εξετάσεις διατάσσονται σύμφωνα με τις τιμές του μεγαλύτερου βαθμού (LD), ο οποίος στην πραγματικότητα φέρνει τις εξετάσεις με τις περισσότερες συγκρούσεις στην κορυφή και σε κάθε βήμα μια συγκεκριμένη εξέταση επιλέγεται χρησιμοποιώντας την επιλογή ρουλέτας [83] των 20 ή λιγότερων απρογραμμάτιστων εξετάσεων, δίνοντας προτεραιότητα σε υψηλότερες τιμές LD. Στη συνέχεια, μια περίοδος επιλέγεται τυχαία από τις περιόδους που δεν έχουν ήδη εξετάσεις σε σύγκρουση με την επιλεγμένη εξέταση. Αν δεν υπάρχει τέτοια περίοδος, τότε μια περίοδος πρέπει να επιλεγεί στην οποία οι εξετάσεις με συγκρούσεις πρέπει να απομακρύνονται πριν από την τοποθέτηση της νέας επιλεγμένης εξέτασης. Αυτό συμβαίνει με την εκμετάλλευση ενός επιπλέον πεδίου (διαγραφές), που παρακολουθεί τις διαγραφές εξετάσεων για τις οποίες κάθε εξέταση είναι υπεύθυνη, κατά τη διάρκεια της κατασκευής της λύσης. Έτσι, όταν μια εξέταση αντικαθιστά άλλες εξετάσεις, ο αριθμός των αφαιρούμενων εξετάσεων προστίθεται στο πεδίο

70 62ΚΕΦΑΛΑΙΟ 4. ΠΡΟΒΛΗΜΑ ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΕΞΕΤΑΣΕΩΝ ΠΑΝΕΠΙΣΤΗΜΙΩΝ Σχήμα 4.2: Έμμεση κωδικοποίηση: Τελεστής διασταύρωσης ενός σημείου μεταξύ δυο χρωμοσωμάτων μετά το πρώτο γονίδιο. Οι εξετάσεις σε έντονο κόκκινο λείπουν ή εμφανίζονται δυο φορές E1-E5: εξετάσεις, T1-T3: χρονικές περίοδοι διαγραφών της εξέτασης που είναι να εισαχθεί. Για να προχωρήσει η διαδικασία κατασκευής λύσεων, επιλέγεται μια χρονική περίοδος με βάση την συνολική τιμή του πεδίου διαγραφών όλων των εξετάσεων οι οποίες πρέπει να αφαιρεθούν και ανήκουν σε αυτή την περίοδο. Η βασική ιδέα είναι ότι η αφαίρεση εξετάσεων με μεγάλη συνολική τιμή διαγραφών θα πρέπει να αποθαρρύνεται. Αυτό επιτυγχάνεται με τη διοργάνωση μιας επιλογής τουρνουά. Ο ψευδοκώδικας της διαδικασίας φαίνεται στον Αλγόριθμο Υπολογισμός κόστους Ο υπολογισμός του κόστους βασίζεται στην Εξίσωση 4.1. Η διαίρεση με τον αριθμό S παραλείπεται αφού το S είναι ένας πολλαπλασιαστής που δεν επηρεάζει την ποιότητα της λύσης, ενώ με αυτόν τον τρόπο, οι υπολογισμοί γίνονται με ακέραιους αριθμούς, αντί με αριθμούς κινητής υποδιαστολής που είναι βραδύτεροι. Η εξίσωση 4.1 πρέπει να υπολογίζεται για όλα τα μέλη του πληθυσμού. Η εύρεση του κόστους του κάθε μέλους είναι ανεξάρτητη από τον υπολογισμό του κόστους των άλλων μελών. Για κάθε εξέταση i μόνο οι συγκρούσεις με τις εξετάσεις j i + 1 πρέπει να ληφθούν υπόψη. Σε αυτό το σημείο μπορούμε να βρούμε δυο ανεξάρτητες διεργασίες που μπορούν να παραλληλοποιηθούν. Ο υπολογισμός του κόστους ενός ολόκληρου χρωμοσώματος και ο υπολογισμός του κόστους μιας απλής εξέτασης. Και οι δύο προσεγγίσεις υλοποιήθηκαν. Από δω και στο εξής, θα αναφέρεται η πρώτη προσέγγιση ως "παραλληλοποίηση χρωμοσώματος", ενώ η δεύτερη θα αναφέρεται ως "παραλληλοποίηση γονιδίου". Στην "παραλληλοποίηση χρωμοσώματος" κάθε νήμα υπολογίζει το κόστος ενός ολόκληρου χρωμοσώματος, έτσι pop νήματα εκτελούνται, όπου pop είναι το μέγεθος του πληθυσμού, και δεν απαιτείται συγχρονισμός μεταξύ των νημάτων. Κάθε νήμα υπολογίζει το κόστος του χρωμοσώματος σε μια τοπική μεταβλητή και στο τέλος το αποθηκεύει στην κύρια μνήμη. Ο ψευδοκώδικας για την "παραλληλοποίηση χρωμοσώματος"

71 4.4. ΜΕΘΟΔΟΛΟΓΙΑ 63 // E is the set of examinations, P is the set of periods pendingexaminations E; forall e E do removals[e] 0; end // sort examinations by Largest Degree sortexaminationsbyld(pendingexaminations); while pendingexaminations do // select examination among maximum 20 pending examinations giving higher probability to high Largest Degree values selectedexam rouletteselect(pendingexaminations); validp eriods getconf lictf reep eriodsf or(exam); if validperiods then selectedp eriod selectrandomly(validp eriods); end else forall p P do totalremovals[p] 0; forall e examinations scheduled in period p do totalremovals[p] totalremovals[p] + removals[e]; end end // select period among all periods giving higher probability to periods with low total removal values selectedp eriod rouletteselectp eriod(totalremovals); removals[selectedexam] removals[selectedexam] + totalremovals[selectedp eriod]; conf lictingexams getconf lictingexams(selectedp eriod, selectedexam); pendingexams pendingexams conf lictingexams; end schedule(selectedexam, selectedp eriod); pendingexaminations pendingexaminations \ selectedexam; end Algorithm 4.1: Κατασκευή αρχικών λύσεων

72 64ΚΕΦΑΛΑΙΟ 4. ΠΡΟΒΛΗΜΑ ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΕΞΕΤΑΣΕΩΝ ΠΑΝΕΠΙΣΤΗΜΙΩΝ δίνεται στον Αλγόριθμο 4.2. chromosome blockdim.x blockidx.x + threadidx.x; small_sum 0; shared int w_shared[]; if threadidx.x < n_slots then w_shared[threadidx.x] w_d[threadidx.x]; end syncthreads(); for i 1 to n_courses do for k i + 1 to n_courses do distance abs(slot[i] slot[k]); small_sum + = w_shared[distance] students_in_conf lict[i][k]; end end cost_d[chromosome] small_sum; Algorithm 4.2: Υπολογισμός κόστους, "παραλληλοποίηση χρωμοσώματος": Κάθε νήμα υπολογίζει το κόστος ενός χρωμοσώματος του πληθυσμού Κατά την "παραλληλοποίηση γονιδίου" κάθε νήμα υπολογίζει το κόστος μιας μόνο εξέτασης και τοποθετεί το αποτέλεσμα σε έναν πίνακα στην κοινόχρηστη μνήμη. Μετά τον υπολογισμό του κόστους κάθε εξέτασης, το συνολικό κόστος του χρωμοσώματος θα πρέπει να υπολογιστεί. Το συνολικό κόστος του κάθε χρωμοσώματος μπορεί να υπολογιστεί με μια λειτουργία μείωσης αθροίσματος, χρησιμοποιώντας όσο το δυνατόν πιο πολλά νήματα [84]. Μετά την εξέταση των συνόλων δεδομένων αναφοράς που χρησιμοποιούνται σε αυτή την εργασία, διαφαίνεται ένα πρόβλημα με το pur- s-93 αρχείο. Ο αριθμός των εξετάσεων σε αυτό το σύνολο δεδομένων είναι 2419, πράγμα που σημαίνει ότι τα νήματα που απαιτούνται για τον υπολογισμό του κόστους ενός χρωμοσώματος είναι επίσης Ωστόσο, λόγω των περιορισμών του προγραμματιστικού μοντέλου CUDA, το κάθε μπλοκ νημάτων μπορεί να έχει έως και 1024 νήματα, συνεπώς, απαιτούνται 3 μπλοκ νημάτων εάν το κάθε μπλοκ έχει ρυθμιστεί ώστε να περιλαμβάνει το μέγιστο αριθμό νημάτων. Ωστόσο, έχοντας ένα μπλοκ με 1024 νήματα, σημαίνει ότι στον συγκεκριμένο πολυ-επεξεργαστή μόνο ένα μπλοκ μπορεί να εκτελεστεί σε μια χρονική στιγμή, δεδομένου ότι ένας πολυ-επεξεργαστής μπορεί να έχει έως και 1536 νήματα που τρέχουν ταυτόχρονα, επομένως, ο πολυ-επεξεργαστής δεν αξιοποιείται πλήρως. Λαμβάνοντας αυτά υπόψη, η προσέγγισή μας για τον αριθμό των νημάτων ανά μπλοκ και ο αριθμός των μπλοκ είναι: tpb.x = blocks.x = { E E < otherwise { 1 E < E/512 otherwise blocks.y = pop

73 4.4. ΜΕΘΟΔΟΛΟΓΙΑ 65 Στις παραπάνω εξισώσεις tpb.x είναι ο αριθμός των νημάτων ανά μπλοκ στον άξονα x, blocks.x και blocks.y είναι ο αριθμός των μπλοκ στους άξονες x και y, E είναι ο αριθμός των εξετάσεων και pop είναι το μέγεθος του πληθυσμού. Όπως μπορεί να δει κανείς από τις παραπάνω εξισώσεις, επιλέξαμε να χρησιμοποιήσουμε το 512 ως τον μέγιστο αριθμό νημάτων για όλα τα μεγάλα σύνολα δεδομένων που περιέχουν περισσότερες από 512 εξετάσεις και όχι μόνο για το pur-s-93. Προκειμένου να επιτευχθεί καλύτερη απόδοση ο συντελεστής στάθμισης w και ο πίνακας που χρησιμοποιείται για τον υπολογισμό του συνολικού κόστους ενός χρωμοσώματος lcost τοποθετούνται στην κοινόχρηστη μνήμη. Δεδομένου ότι τα στοιχεία στην κοινόχρηστη μνήμη έχουν τη διάρκεια ζωής του μπλοκ και τα νήματα από κάθε μπλοκ δεν μπορούν να έχουν πρόσβαση στα δεδομένα στην κοινόχρηστη μνήμη ενός άλλου μπλοκ, τα σύνολα δεδομένων με αριθμό εξετάσεων μεγαλύτερου του 512 χρειάζεται να εκτελέσουν ατομικές λειτουργίες άθροισης για να υπολογιστεί σωστά το συνολικό κόστος του ενός χρωμοσώματος. Ένα νήμα (το πρώτο) καθενός από τα μπλοκ που απαιτούνται στον άξονα x προσθέτει το αποτέλεσμα του αθροίσματος του μπλοκ του στην αντίστοιχη θέση του πίνακα κόστους στην κύρια μνήμη, προκειμένου να υπολογιστεί το συνολικό κόστος του χρωμοσώματος. Ο ψευδοκώδικας για την "παραλληλοποίηση γονιδίου" δίνεται στον Αλγόριθμο 4.3. chromosome blockidx.y; course_id threadidx.x + blockidx.x blockdim.x; shared lcost[]; shared w_shared[]; lcost[threadidx.x] 0; if threadidx.x < n_slots then w_shared[threadidx.x] w_d[threadidx.x]; end syncthreads(); if course_id < n_courses then for j course_id + 1 to n_courses do distance abs(slot[course_id] slot[j]); lcost[threadidx.x] + = w_shared[distance] students_in_conf lict[course_id][j]; end end syncthreads(); lcost[0] total sum of lcost array with reduce sum operation; if threadidx.x = 0 and n_courses < 512 then cost_d[chromosome] lcost[0]; end if threadidx.x = 0 and n_courses >= 512 then atomicadd(&cost_d[chromosome], lcost[0]); end Algorithm 4.3: Υπολογισμός κόστους, "παραλληλοποίηση γονιδίου": Κάθε νήμα υπολογίζει το κόστος ενός γονιδίου

74 66ΚΕΦΑΛΑΙΟ 4. ΠΡΟΒΛΗΜΑ ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΕΞΕΤΑΣΕΩΝ ΠΑΝΕΠΙΣΤΗΜΙΩΝ Διάνυσμα βάρους w Το w δίνει το βάρος της κάθε εξέτασης ανάλογα με την περίοδο στην οποία έχει ανατεθεί και σχετίζεται με την απόσταση μεταξύ δύο εξετάσεων στο πρόγραμμα. Λόγω του γεγονότος ότι η συνθήκη για απόσταση > 6 μπορεί να είναι ένα πρόβλημα για την απόδοση στην CUDA, δεδομένου ότι η χρήση συνθηκών μειώνει την απόδοση, το w μετασχηματίζεται σε ένα διάνυσμα μεγέθους ίσου με τον αριθμό των διαθέσιμων χρονικών περιόδων, με τις θέσεις μετά την 6η να είναι μηδέν. Επιπλέον, προκειμένου να αποφύγουμε τις συγκρούσεις και τα πολύ σφιχτά προγράμματα μια τιμή M (πολύ μεγάλη αξία) επιλέχθηκε για τις εξετάσεις που είναι προγραμματισμένες την ίδια περίοδο και έχουν κοινούς φοιτητές. Ως εκ τούτου, το w παίρνει την ακόλουθη μορφή: w = {40000, 16, 8, 4, 2, 1, 0, 0,..., 0} Αξιοποίηση των ιδιοτήτων της αραιής μήτρας Όπως φαίνεται στον Πίνακα 4.1, η μήτρα των συγκρούσεων είναι αραιή. Έτσι, σε αυτή την εργασία, εκτός από τον πλήρη πίνακα συγκρούσεων, χρησιμοποιείται και ο συμπιεσμένος πίνακας συγκρούσεων (Σχήμα 4.3). Στη συμπιεσμένη μορφή, η αραιή μήτρα γίνεται διάνυσμα γραμμών, R. Κάθε σειρά R i είναι ένα διάνυσμα ζευγών, ένα για κάθε μη μηδενικό στοιχείο. Κάθε ζεύγος περιέχει το δείκτη της μη μηδενικής στήλης και την τιμή του στοιχείου: R i = {(j, C i,j ) : j : e j E, C i,j 0} Σε ένα στάδιο προ-επεξεργασίας υπολογίζεται ο συμπιεσμένος πίνακας συγκρούσεων σε δύο διαφορετικές μορφές. Η μια μορφή αντιπροσωπεύει ολόκληρο τον πίνακα συγκρούσεων, όπου κάθε εξέταση σχετίζεται με κάθε άλλη εξέταση σε σύγκρουση. Η μορφή συμπιεσμένου πίνακα είναι ισοδύναμη με τη μήτρα γειτνίασης για τον γράφο συγκρούσεων μεταξύ των εξετάσεων. Η άλλη μορφή, πιο χρήσιμη εδώ, είναι ο διαγώνιος πίνακας συγκρούσεων. Σε αυτή, για κάθε εξέταση i, η σειρά του διαγώνιου πίνακα συγκρούσεων R Di περιέχει μόνο τις συγκρούσεις με τις εξετάσεις για j i + 1. R Di = {(j, C i,j ) : j : e j E, j > i, C i,j 0} Με αυτό τον τρόπο, η πολυπλοκότητα που ήταν O( E 2 ) για τον πλήρη υπολογισμό του κόστους μειώνεται σε O( E 2 C D )), όπου C D < 1 είναι η πυκνότητα των συγκρούσεων Αναπαραγωγή Το επόμενο βήμα του αλγορίθμου είναι η επιλογή των γονέων που θα σχηματίσουν δύο νέα παιδιά για την επόμενη γενιά, σύμφωνα με το κόστος τους. Διαλέξαμε την επιλογή τουρνουά με μέγεθος 3% επί του μεγέθους του πληθυσμού και τον τελεστή διασταύρωσης ενός σημείου. Όπως θα φανεί στο επόμενο τμήμα, το μέγεθος της επιλογής τουρνουά έχει μεγάλη σημασία. Για μικρά μεγέθη πληθυσμού, το μέγεθος της επιλογής τουρνουά μπορεί να είναι μικρό, αλλά καθώς αυξάνεται το μέγεθος του πληθυσμού, ένα μικρό μέγεθος επιλογής τουρνουά δεν επιτρέπει στον αλγόριθμο να βελτιώσει τις

75 4.4. ΜΕΘΟΔΟΛΟΓΙΑ e1 22 e0. e2 18 e3 (αʹ) Γράφος συγκρούσεων idx =2*idx[e] dat exam 0 conflicts exam 1 conflicts (βʹ) Ήμι-συμπιεσμένος πίνακας συγκρούσεων --- ο πίνακας dat περιέχει τις εξετάσεις σε σύγκρουση (λευκό χρώμα) και τον αριθμό των κοινών φοιτητών (γκρι χρώμα) Σχήμα 4.3: Συμπιεσμένος πίνακας συγκρούσεων * 6 λύσεις. Έτσι, το μέγεθος της επιλογής τουρνουά πρέπει να αυξηθεί για μεγαλύτερους πληθυσμούς, αλλά αυτό έρχεται με ένα κόστος σε χρόνο εκτέλεσης και ως εκ τούτου θα πρέπει να βρεθεί μια ισορροπία. Οι δύο προσεγγίσεις παραλληλισμού εφαρμόστηκαν και σε αυτό το στάδιο. Στην "παραλληλοποίηση χρωμοσώματος", κάθε νήμα επιλέγει δύο χρωμοσώματα για γονείς ανάλογα με το κόστος τους και δημιουργεί δύο νέα χρωμοσώματα για την επόμενη γενιά. Ως εκ τούτου, μόνο pop/2 νήματα χρειάζονται, όπου pop το μέγεθος του πληθυσμού. Κατά την "παραλληλοποίηση γονιδίου", κάθε νήμα παράγει μόνο ένα γονίδιο (χρονική περίοδο της εξέτασης) για καθένα από τα δύο νέα χρωμοσώματα. Το πρόβλημα που προκύπτει εδώ είναι ότι όλα τα νήματα που διαμορφώνουν ένα νέο χρωμόσωμα θα πρέπει να λαμβάνουν τα ίδια χρωμοσώματα για γονείς και το ίδιο σημείο τομής. Προκειμένου να επιτευχθεί αυτό, η ίδια curandstate δόθηκε σε κάθε νήμα, έτσι ώστε να παράγουν όλα τους ίδιους αριθμούς στις τοπικές μεταβλητές τους, επιλέγοντας έτσι τους ίδιους γονείς και το ίδιο σημείο τομής. Ωστόσο, οι προσβάσεις σε συγκεκριμένες θέσεις της μνήμης από πολλά νήματα ταυτόχρονα οδήγησε σε πολύ κακή απόδοση. Ως εκ τούτου, μια άλλη προσέγγιση ακολουθήθηκε. Η διαδικασία επιλογής διαχωρίστηκε από το στάδιο της αναπαραγωγής και εκτελέστηκαν σε διαφορετικούς πυρήνες, έτσι ώστε κάθε διαδικασία να μπορεί να έχει διαφορετικό αριθμό νημάτων. Στην διαδικασία επιλογής pop/2 νήματα εκτελούνται και επιλέγουν τους γονείς και το σημείο τομής για τα νήματα του επόμενου πυρήνα, αυτού της διασταύρωσης. Αποθηκεύουν τις επιλεγμένες τιμές σε πίνακες στην κύρια μνήμη, έτσι ώστε να είναι προσβάσιμες αργότερα από τα νήματα του πυρήνα διασταύρωσης. Στη συνέχεια, η αναπαραγωγή γίνεται με την εκχώρηση ενός νήματος σε κάθε εξέταση. Η διαμόρφωση των νημάτων είναι η ίδια με την "παραλληλοποίηση γονιδίου" στο στάδιο υπολογισμού του κόστους, με μόνη διαφορά ότι, αντί των pop μπλοκ, εκτελούνται στον άξονα y, μόνο pop/2. Οι ψευδοκώδικες για τις τρεις προσεγγίσεις που αναφέρθηκαν δίνονται στους Αλγορίθμους 4.4, 4.5, 4.6 και 4.7. Το API συσκευής της curand βιβλιοθήκης χρησιμοποιήθηκε σε αυτό το στάδιο,

76 68ΚΕΦΑΛΑΙΟ 4. ΠΡΟΒΛΗΜΑ ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΕΞΕΤΑΣΕΩΝ ΠΑΝΕΠΙΣΤΗΜΙΩΝ δεδομένου ότι δεν είναι γνωστό εκ των προτέρων πόσοι τυχαίοι αριθμοί απαιτείται να δημιουργηθούν, καθώς πρέπει να διασφαλιστεί ότι τα χρωμοσώματα που επιλέγονται δεν είναι τα ίδια και ως εκ τούτου η συνάρτηση curand μπορεί να κληθεί πολλές φορές. chromosome blockdim.x blockidx.x + threadidx.x; p1 chromosome with the lower cost of pop/ 32 randomly selected chromosomes; p2 chromosome with the lower cost of pop/ 32 randomly selected chromosomes; if random_number < crossover_rate then cut_point random_number in [1, (n_courses 1)]; for j 1 to cut_point do slot_next[child1 n_courses + j] slot[p1 n_courses + j]; slot_next[child2 n_courses + j] slot[p2 n_courses + j]; end for j cut_point to n_courses do slot_next[child1 n_courses + j] slot[p2 n_courses + j]; slot_next[child2 n_courses + j] slot[p1 n_courses + j]; end end else for j 1 to n_courses do slot_next[child1 n_courses + j] slot[child1 n_courses + j]; slot_next[child2 n_courses + j] slot[child2 n_courses + j]; end end Algorithm 4.4: Αναπαραγωγή, "παραλληλοποίηση χρωμοσώματος": Κάθε νήμα παράγει δυο καινούρια χρωμοσώματα Μετάλλαξη Ο τελεστής μετάλλαξης χρησιμοποιείται στους γενετικούς αλγορίθμους για να δώσει ποικιλομορφία στον πληθυσμό. Ο τελεστής που χρησιμοποιείται εδώ, επιλέγει κάποια τυχαία εξέταση, σύμφωνα με την πιθανότητα μετάλλαξης και αλλάζει την χρονική περίοδο στην οποία είναι ανατεθειμένη, επίσης τυχαία, τηρώντας τα όρια των διαθέσιμων χρονικών περιόδων. Όπως και σε όλες τις προηγούμενες φάσεις, οι δύο προσεγγίσεις παραλληλισμού υλοποιήθηκαν. Στην "παραλληλοποίηση χρωμοσώματος" κάθε νήμα είναι υπεύθυνο για όλες τις μεταλλάξεις που απαιτούνται σε ένα χρωμόσωμα. Κατά την "παραλληλοποίηση γονιδίου" μια άλλη προβληματική κατάσταση εμφανίστηκε και έπρεπε να λυθεί. Για να δημιουργήσει κάθε νήμα έναν τυχαίο αριθμό, ένας πολύ μεγάλος πίνακας με αρχικές καταστάσεις της γεννήτριας τυχαίων αριθμών απαιτείται. Δεδομένου ότι το μέγεθος της κάθε curandstate είναι 48 bytes, στα μεγάλα σύνολα δεδομένων αυτό δεν μπορούσε να υλοποιηθεί λόγω έλλειψης επαρκούς χώρου μνήμης. Ως εκ τούτου, αποφασίστηκε να χρησιμοποιηθεί το API υποδοχής (host) της curand βιβλιοθήκης σε αυτό το στάδιο, προ-

77 4.4. ΜΕΘΟΔΟΛΟΓΙΑ 69 chromosome blockidx.y; course_id blockdim.x blockidx.x + threadidx.x; get the random seed of the chromosome; p1 chromosome with the lower cost of pop/ 32 randomly selected chromosomes; p2 chromosome with the lower cost of pop/ 32 randomly selected chromosomes; if random_number < crossover_rate then cut_point random_number in [1, (n_courses 1)]; if course_id < cut_point then slot_next[child1 n_courses + course_id] slot[p1 n_courses + course_id]; slot_next[child2 n_courses + course_id] slot[p2 n_courses + course_id]; end else slot_next[child1 n_courses + course_id] slot[p2 n_courses + course_id]; slot_next[child2 n_courses + course_id] slot[p1 n_courses + course_id]; end end else slot_next[child1 n_courses + course_id] slot[child1 n_courses + course_id]; slot_next[child2 n_courses + course_id] slot[child2 n_courses + course_id]; end Algorithm 4.5: Αναπαραγωγή, "παραλληλοποίηση γονιδίου" (υλοποίηση ενός πυρήνα): Κάθε νήμα παράγει ένα γονίδιο για καθένα από τα δυο καινούρια χρωμοσώματα

78 70ΚΕΦΑΛΑΙΟ 4. ΠΡΟΒΛΗΜΑ ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΕΞΕΤΑΣΕΩΝ ΠΑΝΕΠΙΣΤΗΜΙΩΝ chromosome blockdim.x blockidx.x + threadidx.x; get the random seed of the chromosome; p1 chromosome with the lower cost of pop/ 32 randomly selected chromosomes; p2 chromosome with the lower cost of pop/ 32 randomly selected chromosomes; cross_prob random number; cut_point random_number in [1, (n_courses 1)]; p1_d[chromosome] p1; p2_d[chromosome] p2; cross_prob_d[chromosome] cross_prob; cut_point_d[chromosome] cut_point; Algorithm 4.6: Επιλογή, "παραλληλοποίηση γονιδίου" (υλοποίηση δυο πυρήνων): Κάθε νήμα επιλέγει τους γονείς, το σημείο τομής και δημιουργεί ένα τυχαίο αριθμό chromosome blockidx.y; course_id threadidx.x + blockidx.x blockdim.x; cross_prob cross_prob_d[chromosome]; p1 p1_d[chromosome]; p2 p2_d[chromosome]; syncthreads(); if cross_prob < crossover_rate then cut_point cut_point_d[chromosome]; if course_id < cut_point then slot_next[child1 n_courses + course_id] slot[p1 n_courses + course_id]; slot_next[child2 n_courses + course_id] slot[p2 n_courses + course_id]; end else slot_next[child1 n_courses + course_id] slot[p2 n_courses + course_id]; slot_next[child2 n_courses + course_id] slot[p1 n_courses + course_id]; end end else slot_next[child1 n_courses + course_id] slot[child1 n_courses + course_id]; slot_next[child2 n_courses + course_id] slot[child2 n_courses + course_id]; end Algorithm 4.7: Διασταύρωση, "παραλληλοποίηση γονιδίου" (υλοποίηση δυο πυρήνων): Κάθε νήμα χρησιμοποιεί τα επιλεγμένα χρωμοσώματα και κάνει την διασταύρωση

79 4.4. ΜΕΘΟΔΟΛΟΓΙΑ 71 κειμένου να δημιουργήσει τους απαραίτητους δεκαδικούς και ακέραιους αριθμούς αντί του curandstate πίνακα, δεδομένου ότι καταλαμβάνουν πολύ λιγότερο χώρο στη μνήμη. Ο ψευδοκώδικας για τις δύο προσεγγίσεις δίνεται στους Αλγορίθμους 4.8 και 4.9. chromosome blockdim.x blockidx.x + threadidx.x; for j 1 to n_courses do if random_number < m_rate then slot[chromosome n_courses + j] random_number % n_slots; end end Algorithm 4.8: Μετάλλαξη, "παραλληλοποίηση χρωμοσώματος": Κάθε νήμα μεταλλάσσει τα γονίδια ενός χρωμοσώματος ανάλογα με την πιθανότητα μετάλλαξης chromosome blockdim.y; course_id blockdim.x blockidx.x + threadidx.x; if course_id < n_courses then if random_number < m_rate then slot[chromosome n_courses + course_id] random_number % n_slots; end end Algorithm 4.9: Μετάλλαξη, "παραλληλοποίηση γονιδίου": Κάθε νήμα μεταλλάσσει ένα γονίδιο ανάλογα με την πιθανότητα μετάλλαξης Κριτήριο τερματισμού Κυρίως τρία κριτήρια τερματισμού χρησιμοποιούνται στους γενετικούς αλγορίθμους. Ο τερματισμός του αλγορίθμου μετά από ένα συγκεκριμένο αριθμό γενιών ή μετά από ένα συγκεκριμένο χρονικό όριο είναι δύο από αυτά, ενώ ένα άλλο είναι ο τερματισμός του αλγορίθμου όταν δεν επιτυγχάνεται πρόοδος για ένα συγκεκριμένο αριθμό γενιών. Στην περίπτωσή μας, ο αλγόριθμος τερματίζει μετά από ένα προκαθορισμένο αριθμό γενιών Άπληστος αλγόριθμος απότομης καθόδου Προκειμένου να βελτιωθούν τα αποτελέσματα, από άποψη ποιότητας, υλοποιήθηκε ένας αλγόριθμος απότομης καθόδου, ο οποίος διασχίζει όλα τα γονίδια ενός χρωμοσώματος το ένα μετά το άλλο και βρίσκει την καλύτερη χρονική περίοδο που κάθε εξέταση μπορεί να προγραμματιστεί. Η διαδικασία για την εύρεση της καλύτερης χρονικής περιόδου για κάθε εξέταση δεν είναι μια ανεξάρτητη διαδικασία, διότι το κόστος της κάθε εξέτασης θα πρέπει να υπολογίζεται με τις υπόλοιπες σταθερές. Λαμβάνοντας υπόψη ότι το κάθε μπλοκ δεν μπορεί να έχει περισσότερα από 1024 νήματα και ότι ο μέγιστος

80 72ΚΕΦΑΛΑΙΟ 4. ΠΡΟΒΛΗΜΑ ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΕΞΕΤΑΣΕΩΝ ΠΑΝΕΠΙΣΤΗΜΙΩΝ chromosome blockdim.x blockidx.x + threadidx.x; slot_of_thread threadidx.y; shared int lcost[]; shared int w_shared[]; lcost[] 0; if threadidx.x = 0 then w_shared[slot_of_thread] w_d[slot_of_thread]; end syncthreads(); for course_id 1 to n_courses do sum_cost 0; for j 1 to n_courses do distance abs(slot[j] slot_of_thread); sum_cost + = w_shared[distance] students_in_conf lict[course_id][j]; end lcost[slot_of_thread] sum_cost; syncthreads(); find slot with best cost; if threadidx.y = 0 then slot[course_id] slot_with_best_cost; end end Algorithm 4.10: Αλγόριθμος απότομης καθόδου: Κάθε νήμα υπολογίζει το κόστος μιας εξέτασης για μια συγκεκριμένη χρονική περίοδο αριθμός των διαθέσιμων χρονικών περιόδων για τα σύνολα δεδομένων που χρησιμοποιούνται είναι 42, η απόφαση για τη διαμόρφωση των νημάτων ήταν η ακόλουθη: tpb.x = 16 tpb.y = T blocks.x = pop/16 Στις παραπάνω εξισώσεις tpb.x και tpb.y είναι τα νήματα ανά μπλοκ στον x και y άξονα αντίστοιχα, T είναι ο αριθμός των διαθέσιμων χρονικών περιόδων και pop είναι το μέγεθος του πληθυσμού. Με τον τρόπο αυτό, το όριο των 1024 νημάτων ανά μπλοκ δεν ξεπερνιέται ποτέ. Κάθε νήμα σε ένα μπλοκ υπολογίζει το κόστος της εξέτασης για μια συγκεκριμένη χρονική περίοδο και στη συνέχεια υπολογίζεται η χρονική περίοδος με το μικρότερο κόστος. Η διαδικασία επαναλαμβάνεται για όλες τις εξετάσεις. Ο ψευδοκώδικας δίνεται στον Αλγόριθμο 4.10.

81 4.5. ΑΠΟΤΕΛΕΣΜΑΤΑ Αποτελέσματα Προκειμένου να αξιολογηθεί ο αλγόριθμός μας μια σειρά πειραμάτων σχεδιάστηκε και εκτελέστηκε. Στην ενότητα αυτή, όλα τα βήματα του αλγορίθμου εξετάζονται από άποψη απόδοσης. Επιπλέον, αναλύεται η χρήση του συμπιεσμένου πίνακα συγκρούσεων αντί του πλήρους πίνακα. Δύο άλλα θέματα που εξετάζονται είναι η βελτίωση που προσδίδει ο άπληστος αλγόριθμος απότομης καθόδου και η επίδραση του μεγέθους της επιλογής τουρνουά καθώς ο πληθυσμός αυξάνεται. Στο τέλος φαίνονται τα ποιοτικά αποτελέσματα που προέκυψαν. Από τα δεκατρία σύνολα δεδομένων, στα διαγράμματα επιτάχυνσης μόνο τέσσερα παρουσιάζονται έτσι ώστε τα διαγράμματα να παραμένουν εύκολα αναγνώσιμα. Ωστόσο, δόθηκε ιδιαίτερη προσοχή στην επιλογή των συνόλων δεδομένων που χρησιμοποιήθηκαν. Τα σύνολα δεδομένων που επιλέχθηκαν είναι το pur-s-93 λόγω του μεγάλου μεγέθους του και των ειδικών σχεδιαστικών επιλογών που απαιτήθηκαν, το car-s-91 ως το μεγαλύτερο από τα υπόλοιπα, το hec-s-92 ως το μικρότερο, αλλά με την υψηλότερη πυκνότητα σε συγκρούσεις και το lse-f-91 ως ένα σύνολο δεδομένων μεσαίου μεγέθους με μικρή πυκνότητα σε συγκρούσεις. Όλα τα πειράματα διεξήχθησαν σε σταθμούς εργασίας, που περιέχουν μια NVIDIA GTX580 κάρτα γραφικών με υπολογιστική δυνατότητα 2.0 και 512 πυρήνες. Οι CPUs που χρησιμοποιήθηκαν είχαν έναν επεξεργαστή i7 της Intel στα 3.40GHz με 16GB RAM και έναν SSD δίσκο. Θα πρέπει να αναφερθεί ότι η σειριακή προσέγγιση της CPU είναι μονονηματική Επιταχύνσεις Ο κύριος στόχος αυτής της εργασίας ήταν να επιταχύνει τον αλγόριθμο, αξιοποιώντας όσο το δυνατόν περισσότερο την GPU. Στα επόμενα παρουσιάζονται οι επιταχύνσεις που λαμβάνονται για όλα τα στάδια, τον υπολογισμό κόστους, την αναπαραγωγή, την μετάλλαξη και την τοπική αναζήτηση. Τα αποτελέσματα είναι ο μέσος όρος 10 εκτελέσεων με πιθανότητα μετάλλαξης 0,5%, πιθανότητα διασταύρωσης 50% και με σχετικό σφάλμα μέχρι 4%. Στο χρόνο παραγωγής των τυχαίων αριθμών με το API υποδοχής της curand, η πρώτη φορά της εκτέλεσης είναι δαπανηρή από άποψη χρόνου (7 sec) [85], ενώ τα επόμενα βήματα εκτελούνται σε κλάσματα του ενός δευτερολέπτου. Έτσι, στον υπολογισμό της επιτάχυνσης της φάσης μετάλλαξης δεν χρησιμοποιήσαμε την πρώτη μέτρηση, ωστόσο χρησιμοποιήθηκε για τον υπολογισμό της συνολικής επιτάχυνσης του αλγορίθμου. Υπολογισμός κόστους Όπως περιγράφεται και στη μεθοδολογία, για τον υπολογισμό του κόστους, υλοποιήθηκαν δύο παράλληλες προσεγγίσεις. Η "παραλληλοποίηση χρωμοσώματος" και η "παραλληλοποίηση γονιδίου". Επιπλέον, η χρήση του συμπιεσμένου πίνακα συγκρούσεων (Compressed Sparse Row (CSR)) προτάθηκε προκειμένου να βελτιωθεί η απόδοση λόγω της μικρής πυκνότητας σε συγκρούσεις πολλών από τα σύνολα δεδομένων. Στο Σχήμα 4.4 απεικονίζεται η επιτάχυνση που επιτυγχάνεται με την "παραλληλοποίηση γονιδίου". Αυτή η προσέγγιση δίνει καλύτερη επιτάχυνση από την "παραλληλοποίηση χρωμοσώματος". Επιπλέον, μπορεί να παρατηρηθεί ότι τα σύνολα δεδομένων με την μεγαλύτερη επιτάχυνση είναι αυτά με τον λιγότερο αριθμό μαθημάτων. Αυτό συμβαίνει γιατί στο στάδιο υπολογισμού του κόστους υπάρχει ανάγκη για συγχρονισμό μεταξύ

82 74ΚΕΦΑΛΑΙΟ 4. ΠΡΟΒΛΗΜΑ ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΕΞΕΤΑΣΕΩΝ ΠΑΝΕΠΙΣΤΗΜΙΩΝ Speedup Population size car-s-91 hec-s-92 lse-f-91 pur-s-93 Σχήμα 4.4: Επιτάχυνση στον υπολογισμό κόστους για την "παραλληλοποίηση γονιδίου" με τη χρήση του συμπιεσμένου πίνακα συγκρούσεων των νημάτων και ατομικών πράξεων για τα μεγάλα σύνολα δεδομένων, όπως εξηγήθηκε στην προηγούμενη ενότητα. Αναπαραγωγή Σε αυτό το στάδιο, η "παραλληλοποίηση γονιδίου" ήταν επίσης γρηγορότερη. Στο Σχήμα 4.5 απεικονίζονται οι επιταχύνσεις που επιτεύχθηκαν για αυτή την προσέγγιση και με την υλοποίηση των δύο διαφορετικών πυρήνων, για την επιλογή και την αναπαραγωγή. Μπορούμε να δούμε εδώ ότι οι επιταχύνσεις αυξάνονται με την αύξηση του μεγέθους του πληθυσμού που σημαίνει ότι για χαμηλά πληθυσμιακά μεγέθη η κάρτα δεν αξιοποιείται πλήρως. Αυτό δεν συμβαίνει στο στάδιο υπολογισμού του κόστους και ο λόγος είναι ότι ο αριθμός των μπλοκ των νημάτων σε αυτό το στάδιο είναι ο μισός από τον αριθμό μπλοκ που εκτελούνται στο στάδιο υπολογισμού του κόστους. Επιπλέον, οι επιταχύνσεις που επιτυγχάνονται σε αυτό το στάδιο είναι πολύ μεγαλύτερες από ό,τι στο στάδιο υπολογισμού του κόστους. Αυτό συμβαίνει λόγω του γεγονότος ότι στο στάδιο αναπαραγωγής τα νήματα έχουν πρόσβαση σε συνεχείς θέσεις μνήμης, πράγμα που οδηγεί σε μεγαλύτερη ταχύτητα, ενώ στο στάδιο υπολογισμού κόστους αυτό δεν επιτυγχάνεται, ο συγχρονισμός μεταξύ νημάτων είναι αναγκαίος και οι ατομικές λειτουργίες είναι απαραίτητες στα μεγάλα αρχεία δεδομένων.

83 4.5. ΑΠΟΤΕΛΕΣΜΑΤΑ Speedup Population size car-s-91 hec-s-92 lse-f-91 pur-s-93 Σχήμα 4.5: Επιτάχυνση στην αναπαραγωγή για την "παραλληλοποίηση γονιδίου" με την υλοποίηση δύο πυρήνων Μετάλλαξη Σε αυτό το στάδιο και οι δύο προσεγγίσεις δίνουν πολύ μεγάλες τιμές επιτάχυνσης, αλλά η "παραλληλοποίηση γονιδίου" χρησιμοποιεί καλύτερα την κάρτα αφού επιτυγχάνει ικανοποιητικές επιταχύνσεις από μικρά μεγέθη πληθυσμού. Στο Σχήμα 4.6 παρουσιάζεται η επιτάχυνση για την "παραλληλοποίηση γονιδίου". Η επιτάχυνση για το pur-s-93 αρχείο αγγίζει το 360x, το οποίο είναι πολύ μεγάλο, καθώς η φάση μετάλλαξης μπορεί να παραλληλιστεί πλήρως. Παρόλο που η φάση μετάλλαξης παίρνει μόνο ένα πολύ μικρό ποσοστό του συνόλου χρόνου εκτέλεσης του αλγορίθμου, οι τιμές της επιτάχυνσης που επιτεύχθηκαν δείχνουν ότι αυτή η κωδικοποίηση ταιριάζει πολύ καλά με την αρχιτεκτονική της GPU. Άπληστος αλγόριθμος απότομης καθόδου Στο Σχήμα 4.7 δίνεται η επιτάχυνση για τον άπληστο αλγόριθμο απότομης καθόδου. Παραμένει σχεδόν σταθερή για όλα τα μεγέθη του πληθυσμού, κάτι που δείχνει ότι η κάρτα χρησιμοποιείται αρκετά αποδοτικά. Θα πρέπει επίσης να αναφερθεί ότι αυτή η λειτουργία είναι η πιο χρονοβόρα και έτσι η επιτάχυνση αυτής της διαδικασίας είναι ζωτικής σημασίας για την συνολική απόδοση. Συνολική επιτάχυνση Η συνολική επιτάχυνση του αλγορίθμου για τα τέσσερα σύνολα δεδομένων παρουσιάζεται στον Πίνακα 4.2 για την "παραλληλοποίηση γονιδίου". Οι μεταφορές όλων των

84 76ΚΕΦΑΛΑΙΟ 4. ΠΡΟΒΛΗΜΑ ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΕΞΕΤΑΣΕΩΝ ΠΑΝΕΠΙΣΤΗΜΙΩΝ Speedup Population size car-s-91 hec-s-92 lse-f-91 pur-s-93 Σχήμα 4.6: Επιτάχυνση στη μετάλλαξη για την "παραλληλοποίηση γονιδίου" Speedup Population size car-s-91 hec-s-92 lse-f-91 pur-s-93 Σχήμα 4.7: Επιτάχυνση στον άπληστο αλγόριθμο απότομης καθόδου

85 4.5. ΑΠΟΤΕΛΕΣΜΑΤΑ 77 Πρόβλημα pop = 256 pop = 2048 pop = 8192 pop = car-s hec-s lse-f pur-s Πίνακας 4.2: Συνολική επιτάχυνση του αλγορίθμου για την "παραλληλοποίηση γονιδίου" Πρόβλημα Πλήρης πίνακας Συμπιεσμένος πίνακας Πυκνότητα Βελτίωση συγκρούσεων (ms) συγκρούσεων (ms) συγκρούσεων car-s hec-s lse-f pur-s Πίνακας 4.3: Χρόνος εκτέλεσης υπολογισμού κόστους στην GPU και βελτίωση χρόνου με τον συμπιεσμένο πίνακα συγκρούσεων δεδομένων από και προς τη GPU λαμβάνονται υπόψη. Η επιτάχυνση είναι πολύ μεγαλύτερη σε μέγεθος πληθυσμού 8192 το οποίο μπορεί να εξηγηθεί από το γεγονός ότι σε μικρά πληθυσμιακά μεγέθη ο συνολικός χρόνος εκτέλεσης κυριαρχείται από τις μεταφορές μνήμης και όχι από τους υπολογισμούς και από το ότι δεν χρησιμοποιείται ένας σημαντικός αριθμός νημάτων, έτσι ώστε η GPU να είναι αποτελεσματική Συμπιεσμένος πίνακας συγκρούσεων Στον Πίνακα 4.3 παρουσιάζονται οι επιταχύνσεις για τα τέσσερα σύνολα δεδομένων που χρησιμοποιήθηκαν, μεταξύ των υλοποιήσεων με τον πλήρη πίνακα συγκρούσεων και με τον συμπιεσμένο. Στη δεύτερη στήλη φαίνεται ο χρόνος εκτέλεσης με τον πλήρη πίνακα συγκρούσεων, στην τρίτη στήλη φαίνεται ο αντίστοιχος χρόνος με τη χρήση της μορφής CSR, στην τέταρτη η επιτάχυνση και στην πέμπτη η πυκνότητα συγκρούσεων. Οι επιταχύνσεις είναι ίδιες για όλα τα μεγέθη του πληθυσμού, κάτι που αναμενόταν, επειδή η χρήση της μορφής CSR σχετίζεται μόνο με την πυκνότητα συγκρούσεων του συγκεκριμένου συνόλου δεδομένων. Μπορεί να παρατηρηθεί ότι το αρχείο με την υψηλότερη πυκνότητα συγκρούσεων (hec-s-92) έχει τη μικρότερη επιτάχυνση, ενώ το αρχείο με τη μικρότερη πυκνότητα συγκρούσεων (pur-s-93) έχει τη μεγαλύτερη επιτάχυνση. Τα αποτελέσματα που παρουσιάζονται εδώ ελήφθησαν από την προηγούμενη σειρά μετρήσεων Βελτίωση από τη χρήση του άπληστου αλγορίθμου απότομης καθόδου Στην υπο-ενότητα αυτή εξετάζεται το ποσοστό της βελτίωσης της ποιότητας των λύσεων που προκύπτει με το επιπλέον βήμα του άπληστου αλγορίθμου απότομης κα-

86 78ΚΕΦΑΛΑΙΟ 4. ΠΡΟΒΛΗΜΑ ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΕΞΕΤΑΣΕΩΝ ΠΑΝΕΠΙΣΤΗΜΙΩΝ Πρόβλημα pop = 256 pop = 2048 pop = car-f car-s ear-f hec-s kfu-s lse-f pur-s-93 INF INF INF rye-s sta-f tre-s uta-s ute-s yor-f Πίνακας 4.4: Μέση απόσταση (%) από την καλύτερη λύση της βιβλιογραφίας με τον γενετικό αλγόριθμο (INF: infeasible solution) θόδου. Στον Πίνακα 4.4 απεικονίζεται η μέση απόσταση από την καλύτερη λύση στη βιβλιογραφία (σε ποσοστό %) για όλα τα σύνολα δεδομένων με το γενετικό αλγόριθμο. Στον Πίνακα 4.5 δίνονται οι αντίστοιχες τιμές για τον υβριδικό εξελικτικό αλγόριθμο. Τα αποτελέσματα είναι από 5 εκτελέσεις για 3 μεγέθη πληθυσμών με διαφορετικά αρχικά seeds και ένα μικρό αριθμό αρχικών λύσεων. Το μόνο αρχείο χωρίς αρχικές λύσεις ήταν το pur-s-93. Η πιθανότητα μετάλλαξης ήταν 0,8% και η πιθανότητα διασταύρωσης 30%. Η απόσταση από την καλύτερη λύση με τον αλγόριθμο απότομης καθόδου είναι μικρότερη σε όλα τα σύνολα δεδομένων Μέγεθος επιλογής τουρνουά Ένα άλλο ενδιαφέρον σημείο που προέκυψε κατά τη διάρκεια της ανάπτυξης του αλγόριθμου, είναι το μέγεθος της επιλογής τουρνουά του γενετικού αλγορίθμου καθώς αυξάνεται το μέγεθος του πληθυσμού. Είναι προφανές ότι καθώς το μέγεθος του πληθυσμού αυξάνει ένα μικρό μέγεθος επιλογής τουρνουά οδηγεί σε μικρή βελτίωση της ποιότητας των λύσεων. Έτσι, αποφασίστηκε να αυξηθεί το μέγεθος επιλογής τουρνουά καθώς αυξάνεται το μέγεθος του πληθυσμού. Για το λόγο αυτό, επιλέξαμε το μέγεθος της επιλογής τουρνουά να είναι ένα ποσοστό του μεγέθους του πληθυσμού. Ωστόσο, όσο μεγαλύτερο το μέγεθος της επιλογής τουρνουά τόσο περισσότερος υπολογιστικός χρόνος απαιτείται. Μια ισορροπία βρέθηκε για pop / 32. Στους Πίνακες 4.6 και 4.7 φαίνεται ο μέσος όρος των αποστάσεων των λύσεων που πήραμε από την καλύτερη λύση στη βιβλιογραφία για ένα σταθερό μέγεθος επιλογής τουρνουά (10) και για ένα κλάσμα του μεγέθους του πληθυσμού (pop / 32). Τα πειράματα διεξήχθησαν 5 φορές και για τα δεκατρία σύνολα δεδομένων, για 3 μεγέθη πληθυσμών, με διαφορετικά αρχικά seeds, αλλά με τις ίδιες αρχικές λύσεις και η πιθανότητα μετάλλαξης ήταν 0,3% και η πιθανότητα διασταύρωσης 75%. Επίσης, ο αλγόριθμος απότομης καθόδου δεν χρησιμοποιήθηκε σε αυτές τις μετρήσεις, έτσι ώστε να μην επηρεάζει την ποιότητα των λύσεων. Φαίνεται ξεκάθαρα ότι με μεγαλύτερο μέγεθος επιλογής τουρνουά ο αλγόριθμος λαμβάνει κα-

87 4.5. ΑΠΟΤΕΛΕΣΜΑΤΑ 79 Πρόβλημα pop = 256 pop = 2048 pop = car-f car-s ear-f hec-s kfu-s lse-f pur-s rye-s sta-f tre-s uta-s ute-s yor-f Πίνακας 4.5: Μέση απόσταση (%) από την καλύτερη λύση της βιβλιογραφίας με τον υβριδικό εξελικτικό αλγόριθμο λύτερες λύσεις για μέγεθος πληθυσμού 2048 και Για μέγεθος πληθυσμού 256, το μέγεθος της επιλογής τουρνουά 10 είναι μεγαλύτερο από το κλάσμα του μεγέθους του πληθυσμού (256 / 32 = 8). Αξίζει να σημειωθεί ότι σε γενικές γραμμές εδώ φαίνεται το γεγονός ότι τα μεγαλύτερα μεγέθη πληθυσμών δίνουν καλύτερες λύσεις Ποιότητα λύσεων Σχετικά με την ποιότητα των λύσεων που επιτεύχθηκαν, σε αυτό το τμήμα δίνουμε μια στατιστική ανάλυση με βάση τα αποτελέσματα. Δεδομένου ότι στην παρούσα εργασία χρησιμοποιείται η υπολογιστική δύναμη μιας GPU, χρησιμοποιήθηκαν μεγάλα πληθυσμιακά μεγέθη. Στον Πίνακα 4.8 δίνεται το ελάχιστο, το μέγιστο και το μέσο κόστος των λύσεων που επιτεύχθηκαν για όλα τα σύνολα δεδομένων και για μέγεθος πληθυσμού 256. Στον Πίνακα 4.9 δίνονται οι ίδιες μετρήσεις για μέγεθος πληθυσμού Επίσης, τα Σχήματα 4.8 και 4.9 παρουσιάζουν περιγραφικά στατιστικά στοιχεία για τις μετρήσεις. Υπήρξε ανάγκη για ομαλοποίηση των δεδομένων δεδομένου ότι τα κόστη δεν ήταν του ίδιου μεγέθους. Έτσι, το μέσο κόστος έχει λάβει την τιμή 100 για όλα τα σύνολα δεδομένων και εν συνεχεία υπολογίστηκαν τα υπόλοιπα στατιστικά. Για το αρχείο sta-f-83 στα Σχήματα 4.8 και 4.9 δεν υπάρχει κουτί, μιας και η αρχική και η καλύτερη λύση είναι πολύ κοντά και με υψηλό κόστος ( ). Οι μετρήσεις έγιναν με ταυτόσημα seeds (1-100 ) στην συνάρτηση rand της γλώσσας προγραμματισμού C. Η πιθανότητα μετάλλαξης ήταν 0,6%, η πιθανότητα διασταύρωσης 50% και ο αριθμός των γενιών 200 για όλα τα πειράματα. Φαίνεται ότι όλα τα αποτελέσματα που αποκτήθηκαν για μεγαλύτερο μέγεθος πληθυσμού είναι καλύτερα. Αυτό είναι κάτι αναμενόμενο καθώς έχοντας μεγαλύτερο μέγεθος πληθυσμού, μεγαλύτερο μέρος του χώρου λύσεων εξετάζεται. Η προσέγγιση μας επιτυγχάνει ανταγωνιστικά αποτελέσματα για όλα τα σύνολα δεδομένων Τορόντο. Στον Πίνακα 4.10 δίνονται οι καλύτερες λύσεις που βρέθηκαν με την προτεινόμενη μέθοδο, με 3 άλλες εξελικτικές μεθόδους καθώς και τα καλύτερα απο-

88 80ΚΕΦΑΛΑΙΟ 4. ΠΡΟΒΛΗΜΑ ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΕΞΕΤΑΣΕΩΝ ΠΑΝΕΠΙΣΤΗΜΙΩΝ Πρόβλημα pop = 256 pop = 2048 pop = car-f car-s ear-f hec-s kfu-s lse-f pur-s-93 INF INF INF rye-s sta-f tre-s uta-s ute-s yor-f Πίνακας 4.6: Μέση απόσταση (%) από την καλύτερη λύση της βιβλιογραφίας με τον γενετικό αλγόριθμο και μέγεθος επιλογής τουρνουά 10 (INF: infeasible solution) Πρόβλημα pop = 256 pop = 2048 pop = car-f car-s ear-f hec-s kfu-s lse-f pur-s-93 INF INF INF rye-s sta-f tre-s uta-s ute-s yor-f Πίνακας 4.7: Μέση απόσταση (%) από την καλύτερη λύση της βιβλιογραφίας με τον γενετικό αλγόριθμο και μέγεθος επιλογής τουρνουά population size/32 (INF: infeasible solution)

89 4.5. ΑΠΟΤΕΛΕΣΜΑΤΑ 81 Dataset Minimum cost Maximum cost Average cost car-f-92 I car-s-91 I ear-f-83 I hec-s-92 I kfu-s-93 I lse-f-91 I pur-s-93 I rye-s-93 I sta-f-83 I tre-s-92 I uta-s-92 I ute-s-92 I yor-f-83 I Πίνακας 4.8: Ελάχιστο, μέγιστο και μέσο κόστος με μέγεθος πληθυσμού 256 Dataset Minimum cost Maximum cost Average cost car-f-92 I car-s-91 I ear-f-83 I hec-s-92 I kfu-s-93 I lse-f-91 I pur-s-93 I rye-s-93 I sta-f-83 I tre-s-92 I uta-s-92 I ute-s-92 I yor-f-83 I Πίνακας 4.9: Ελάχιστο, μέγιστο και μέσο κόστος με μέγεθος πληθυσμού 16384

90 82ΚΕΦΑΛΑΙΟ 4. ΠΡΟΒΛΗΜΑ ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΕΞΕΤΑΣΕΩΝ ΠΑΝΕΠΙΣΤΗΜΙΩΝ Σχήμα 4.8: Περιγραφικά στατιστικά για μέγεθος πληθυσμού 256 Σχήμα 4.9: Περιγραφικά στατιστικά για μέγεθος πληθυσμού 16384

91 4.6. ΣΥΜΠΕΡΑΣΜΑΤΑ ΚΑΙ ΜΕΛΛΟΝΤΙΚΕΣ ΚΑΤΕΥΘΥΝΣΕΙΣ 83 Dataset is work IGA [64] hmoea [61] MMAS [60] Ersoy [65] Best car-f [86] car-s [86] ear-f [56] hec-s [56] kfu-s [87] lse-f [56] pur-s [56] rye-s [56] sta-f [54] tre-s [87] uta-s [86] ute-s [88] yor-f [87] normalized average distance 16.51% 17.14% 21.11% 25.23% - - Πίνακας 4.10: Σύγκριση με άλλες εξελικτικές μεθόδους και με την καλύτερη λύση της βιβλιογραφίας τελέσματα της βιβλιογραφίας. Μπορούμε να παρατηρήσουμε ότι σε 4 από τα datasets πετυχαίνουμε καλύτερη ποιοτικά λύση σε σύγκριση με τις άλλες εξελικτικές μεθόδους, ενώ σε σύγκριση με τις βέλτιστες διαθέσιμες λύσεις, είναι ανταγωνιστικές, λαμβάνοντας υπόψη το γεγονός ότι επιτεύχθηκαν γρηγορότερα. Επίσης, γίνεται φανερό ότι καμία από τις εξελικτικές μεθόδους δεν πετυχαίνει τη βέλτιστη λύση Περιορισμοί και πλεονεκτήματα Ο κύριος περιορισμός σε αυτό το πρόβλημα ήταν ότι τα σύνολα δεδομένων ήταν πολύ μεγάλα για να χωρέσουν στη μικρή κοινόχρηστη μνήμη των πολυ-επεξεργαστών της GPU. Ωστόσο, η προσέγγιση αυτή θα μπορούσε να είναι επωφελής για άλλα προβλήματα χρονοπρογραμματισμού. Παρά το γεγονός ότι υπάρχουν πολλές εργασίες για την επιτάχυνση γενετικών και μιμητικών αλγορίθμων με τη χρήση GPUs, από όσα γνωρίζουμε, δεν υπάρχει εργασία που ασχολείται με αυτό το είδος των προβλημάτων και τη χρήση GPU. Επιπλέον, πρέπει να αναφερθεί ότι η επιτάχυνση που επιτυγχάνεται από μια GPU εξαρτάται από τους υπολογισμούς που πρέπει να εκτελεστούν. Δεδομένου ότι η αντικειμενική συνάρτηση του προβλήματός μας δεν είναι υπερβολικά περίπλοκη, μεγαλύτερες επιταχύνσεις μπορούν να αναμένονται σε προβλήματα με πιο πολύπλοκες αντικειμενικές συναρτήσεις. 4.6 Συμπεράσματα και μελλοντικές κατευθύνσεις Στο κεφάλαιο αυτό, μελετήθηκε το πρόβλημα χρονοπρογραμματισμού εξετάσεων Πανεπιστημίων και επιλύθηκε σε μια πλατφόρμα GPU. Η προτεινόμενη λύση είναι η χρήση ενός υβριδικού εξελικτικού αλγορίθμου σε συνδυασμό με μια GPU που επιτα-

92 84ΚΕΦΑΛΑΙΟ 4. ΠΡΟΒΛΗΜΑ ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΕΞΕΤΑΣΕΩΝ ΠΑΝΕΠΙΣΤΗΜΙΩΝ χύνει τον αλγόριθμο και μας δίνει τη δυνατότητα να διερευνήσουμε μεγαλύτερα τμήματα του χώρου λύσεων γρηγορότερα. Ο αλγόριθμος αξιολογήθηκε χρησιμοποιώντας τα γνωστά σύνολα δεδομένων αναφοράς Carter/Toronto. Τα αποτελέσματα που προέκυψαν ήταν ανταγωνιστικά σε σχέση με τις βέλτιστες διαθέσιμες λύσεις όσον αφορά την ποιότητα, και η επιτάχυνση που επιτεύχθηκε ήταν μέχρι 26x. Επιπλέον, αναλύθηκε η σημασία του μεγέθους επιλογής τουρνουά και δείχθηκε ότι θα πρέπει να εξαρτάται από το μέγεθος του πληθυσμού. Ο άπληστος αλγόριθμος απότομης καθόδου βοηθά τον γενετικό αλγόριθμο για την περαιτέρω βελτίωση της ποιότητας των λύσεων, ενώ η χρήση της μορφής CSR για τον πίνακα συγκρούσεων είναι επίσης ευεργετική όσον αφορά την ταχύτητα, καθώς η μήτρα των συγκρούσεων στα περισσότερα σύνολα δεδομένων είναι εξαιρετικά αραιή. Τα αποτελέσματα της εργασίας αυτής δίνουν σαφή κίνητρα και κατευθύνσεις για μελλοντικές εργασίες. Η λύση του προβλήματος χρονοπρογραμματισμού εξετάσεων Πανεπιστημίων με μεθόδους που βασίζονται σε πληθυσμούς, μπορεί να βελτιωθεί σημαντικά με την ενσωμάτωση της χρήσης των GPUs και την προτεινόμενη κωδικοποίηση.

93 Κεφάλαιο 5 Εύρεση σχεδίου κίνησης αυτόνομου υποβρυχίου οχήματος 5.1 Εισαγωγή Η εργασία που περιγράφεται σε αυτό το κεφάλαιο της διατριβής έγινε σε συνεργασία με το τμήμα Μηχανολόγων Μηχανικών του Πανεπιστημίου της Πάτρας και πιο συγκεκριμένα με τη βοήθεια του καθηγητή κ. Νίκου Ασπράγκαθου και του Δρ. Παναγιώτη Σωτηρόπουλου. Ο τομέας των μη επανδρωμένων υποβρύχιων οχημάτων (Unmanned Underwater Vehicles (UUV)) έχει ανθίσει τις τελευταίες δεκαετίες. Σήμερα το ευρύ φάσμα εφαρμογής τους κυμαίνεται από την χαρτογράφηση βιολογικών περιβαλλόντων μέχρι την παρακολούθηση υποβρύχιων εγκαταστάσεων. Η πρόσφατη τάση για υλοποίηση υποθαλάσσιων οχημάτων με βραχίονα (Underwater Vehicle Manipulator Systems (UVMS)) δείχνει την τάση για αυτοματοποίηση ορισμένων διαδικασιών ή ακόμη και ολόκληρων αποστολών. Ο σχεδιασμός κίνησης είναι ένα βασικό στοιχείο για αυτόνομες αποστολές και ένα πρόβλημα που έχει συζητηθεί εκτενώς στη βιβλιογραφία. Ένας αποδοτικός αλγόριθμος σχεδιασμού κίνησης που θα παρέχει μια "ασφαλή" διαδρομή για το σύστημα είναι ένα βασικό στοιχείο για μια επιτυχημένη αυτόνομη αποστολή UVMS. Ο σχεδιασμός κίνησης θα μπορούσε να θεωρηθεί ως ένα πρόβλημα βελτιστοποίησης, όπου το ρομπότ πρέπει να βρει την καλύτερη διαδρομή από την αρχική θέση στην τελική, λαμβάνοντας υπόψη μια σειρά κριτηρίων. Οι εξελίξεις στον κλάδο των υδρογονανθράκων έχουν ωθήσει τα όρια των νέων εγκαταστάσεων σε ακόμη χαμηλότερα βάθη. Νέα κοιτάσματα υδρογονανθράκων ανακαλύπτονται, ενώ νέες τεχνικές αξιοποίησης των ένυδρων αλάτων θα αρχίσουν να προκύπτουν στο εγγύς μέλλον. Ως αποτέλεσμα, όλο και περισσότερες υποβρύχιες εγκαταστάσεις κατασκευάζονται και απαιτούν συνεχή παρακολούθηση και συντήρηση. Αυτή είναι η κινητήρια δύναμη πίσω από την συνεχή ανάπτυξη του τομέα των μη επανδρωμένων οχημάτων με βραχίονα. Σήμερα, η πλειοψηφία των UVMS που χρησιμοποιούνται σε επιχειρήσεις είναι τηλεκατευθυνόμενα οχήματα (Remotely Operated Vehicles (ROV)), που απαιτούν ένα μητρικό πλοίο επί τόπου, και η περιήγησή τους γίνεται από κάποιον έμπειρο χειριστή. Προκειμένου να μειωθεί το κόστος αυτών των εργασιών και να ελαχιστοποιηθεί ο συνολικός χρόνος της αποστολής, η τρέχουσα τάση οδηγεί σε αυτόνομες αποστολές από UVMS, αφήνοντας τον πιλότο σε πιο εποπτικό ρόλο. Επιπλέον, 85

94 86ΚΕΦΑΛΑΙΟ 5. ΕΥΡΕΣΗ ΣΧΕΔΙΟΥ ΚΙΝΗΣΗΣ ΑΥΤΟΝΟΜΟΥ ΥΠΟΒΡΥΧΙΟΥ ΟΧΗΜΑΤΟΣ ο αναδυόμενος τομέας των πλήρως αυτόνομων UVMS, τα λεγόμενα αυτόνομα υποβρύχια οχήματα παρέμβασης (Intervention Autonomous Underwater Vehicles (IAUV)), είναι χτισμένος πάνω στην ανάπτυξη μεθόδων για αυτόνομα υποβρύχια οχήματα. Για να αναπτυχθεί ένα πλήρως αυτόνομο λειτουργικά UVMS, πρέπει να αναπτυχθεί μια εξελιγμένη μέθοδος σχεδιασμού, η οποία θα μπορεί να αντιμετωπίσει την αβεβαιότητα ενός δυναμικά μεταβαλλόμενου υποβρύχιου περιβάλλοντος. Πλήρης γνώση του περιβάλλοντος δεν είναι πάντα διαθέσιμη εκ των προτέρων όταν η περιοχή παρέμβασης βρίσκεται μακριά από μια υποβρύχια εγκατάσταση (π.χ. παρεμβάσεις για ναυάγια). Ακόμη και στις περιπτώσεις όμως που υπάρχει λεπτομερής χάρτης της περιοχής παρέμβασης, ένα πιθανό ατύχημα στην περιοχή θα μπορούσε να αλλάξει δραματικά το προφίλ της γνωστής δομής και η καινούρια δομή ενδέχεται να μην είναι διαθέσιμη εκ των προτέρων. Θα πρέπει επίσης να ληφθούν υπόψη και άλλα ρομπότ που μπορεί να είναι στην περιοχή. Εν τω μεταξύ, το όχημα θα πρέπει να είναι σε θέση να εκτελέσει τις επιθυμητές επεμβάσεις στην περιοχή με ασφάλεια. Λαμβάνοντας υπόψιν όλα αυτά, μια μέθοδος για τον σχεδιασμό ολικής αλλά και τοπικής κίνησης χρησιμοποιώντας τα τρέχοντα δεδομένα των αισθητήρων είναι απαραίτητη για αυτόνομες παρεμβάσεις των UVMS. Σε αυτό το κεφάλαιο παρουσιάζονται δυο μέθοδοι για σχεδιασμό κίνησης UVMS συστημάτων. Μια ολικού σχεδιασμού και μια τοπικού σχεδιασμού. Και οι δυο μπορούν να βρουν μια διαδρομή χωρίς συγκρούσεις για ένα UVMS σε ένα 3-Δ περιβάλλον με εμπόδια. Το περιβάλλον εργασίας αναπαρίσταται σε μια Bump-επιφάνεια, όπου γίνεται ο έλεγχος για συγκρούσεις. Η Bump-επιφάνεια υπολογίζεται από ένα παράλληλο αλγόριθμο που τρέχει σε μια μονάδα επεξεργασίας γραφικών (GPU). Η παράλληλη μέθοδος είναι πολύ πιο γρήγορη από την αντίστοιχη σειριακή και θα μπορούσε να αντιμετωπίσει καλύτερα τις αλλαγές της αποστολής της τελευταίας στιγμής. Διατυπώνεται ένα πρόβλημα βελτιστοποίησης με βάση την διαδικασία αποφυγής συγκρούσεων και η μέθοδος αναζήτησης βασίζεται σε έναν εξελικτικό αλγόριθμο. Στην μέθοδο ολικού σχεδιασμού εξετάζεται σαν σενάριο, ένα μονοπάτι που πρέπει να ακολουθηθεί, προκειμένου να αξιολογηθεί η ποιότητα των λύσεων. Στην μέθοδο τοπικού σχεδιασμού μια επιθεώρηση συγκόλλησης σε μια υποθαλάσσια κατασκευή σωλήνα χρησιμεύει ως σενάριο αξιολόγησης του αλγορίθμου, ενώ ένα UVMS με τοποθετημένο έναν βραχίονα με έξι βαθμούς ελευθερίας (β.ε.) εκτελεί το έργο. Ο τοπικός σχεδιαστής μπορεί να βρει λύση ακόμα και αν κάποιο άγνωστο εμπόδιο μπει στον χώρο εργασίας κατά την εκτέλεση της εργασίας καθώς και διαμορφώσεις υψηλών επιδόσεων στον ελεύθερο χώρο. Σε αυτή τη μέθοδο χρησιμοποιούνται και διάφορα κριτήρια επιδεξιότητας. Ένα εκπαιδευμένο τεχνητό νευρωνικό δίκτυο χρησιμοποιείται για τη γρήγορη προσέγγιση του εξεταζόμενου δείκτη επιδεξιότητας. 5.2 Σχεδιασμός κίνησης για UVMS Υπάρχουν πολυάριθμες μελέτες στη βιβλιογραφία που ασχολούνται με το πρόβλημα σχεδιασμού κίνησης των κινητών ρομπότ και μια πλήρης έρευνα υπάρχει στο [89]. Μελετώντας την ειδική περίπτωση ενός UVMS με μια πλωτή βάση έξι βαθμών ελευθερίας (β.ε.), έναν βραχίονα Ν-β.ε. και μια σειρά απαιτήσεων που υπάρχουν σε μια υποβρύχια αποστολή παρέμβασης σε ένα 3-Δ περιβάλλον εργασίας, το πρόβλημα σχεδιασμού κίνησης γίνεται ένα πολυδιάστατο πρόβλημα βελτιστοποίησης με πολλά κριτήρια, και απαιτεί τεράστια υπολογιστική δύναμη για να επιλυθεί. Εξαντλητικοί αλγόριθμοι αναζήτη-

95 5.3. ΟΙ GPUS ΣΤΟΝ ΣΧΕΔΙΑΣΜΟ ΚΙΝΗΣΗΣ 87 σης δέντρου που θα μπορούσαν να εγγυηθούν μια λύση δεν μπορούν να εφαρμοστούν, λόγω του υψηλού υπολογιστικού τους κόστους, ενώ ακόμα και ευρετικές μέθοδοι τείνουν να αυξήσουν τον υπολογιστικό τους χρόνο με την αύξηση της πολυπλοκότητας του προβλήματος [89]. Στο [90] οι συγγραφείς μελέτησαν το πρόβλημα χρησιμοποιώντας έναν τροποποιημένο αλγόριθμο γρήγορου βήματος (fast marching algorithm) σε ένα 2-Δ διακριτό περιβάλλον, ενώ η ακτίνα στροφής του οχήματος και τα υποθαλάσσια ρεύματα ελήφθησαν υπόψιν για να παράξουν μια βέλτιστη διαδρομή. Στο [91], το πρόβλημα σχεδιασμού κίνησης προσεγγίστηκε ως πρόβλημα βελτιστοποίησης με περιορισμούς, όπου μια σειρά από περιορισμούς χρησιμοποιήθηκαν για να καθορίσουν τον ελεύθερο χώρο. Η αναζήτηση εκτελέστηκε στο χώρο διαμόρφωσης του ρομπότ, όμως, μόνο οι δύο β.ε. του UVMS λήφθηκαν υπόψιν στις προσομοιώσεις. Θα πρέπει να σημειωθεί εδώ ότι ο μετασχηματισμός οποιουδήποτε κινούμενου εμποδίου στο χώρο διαμόρφωσης ενός συστήματος πολλών β.ε., όπως είναι η περίπτωση ενός UVMS, είναι υπολογιστικά δαπανηρή και δύσκολα θα μπορούσε να εφαρμοστεί σε οποιαδήποτε μέθοδο πραγματικού χρόνου. Στο παρελθόν έχουν προταθεί πιθανοτικές τεχνικές σχεδιασμού κίνησης για την αντιμετώπιση της αύξησης του υπολογιστικού χρόνου σε προβλήματα με υψηλότερες διαστάσεις. Οι συγγραφείς στο [92] παρουσίασαν έναν τροποποιημένο αλγόριθμο γρήγορης εξερεύνησης τυχαίου δέντρου (RRT) για το πρόβλημα σχεδιασμού κίνησης ενός Autonomous Underwater Vehicle (AUV) 3 β.ε. σε περιβάλλον 2-Δ. Επιπλέον, οι εξελικτικοί αλγόριθμοι θα μπορούσαν να αντιμετωπίσουν προβλήματα μεγάλων διαστάσεων και είναι σε θέση να δώσουν μια καλή λύση, χωρίς σημαντική αύξηση του υπολογιστικού κόστους, όσο η πολυπλοκότητα του χώρου αναζήτησης αυξάνει. Στο [93] οι συγγραφείς επιχείρησαν να ενώσουν τα οφέλη ενός γενετικού αλγορίθμου (ΓΑ) με τα γρήγορα αποτελέσματα του δυναμικού προγραμματισμού (ΔΠ) για την επίλυση του προβλήματος σχεδιασμού κίνησης, για ένα μη επανδρωμένο υποβρύχιο όχημα (UUV) 3 β.ε. Στο [94] χρησιμοποιήθηκε ένας ΓΑ για τον προσδιορισμό της βέλτιστης διαδρομής για ένα AUV σε ένα περιβάλλον με ισχυρό ρεύμα, ενώ οι Sun και Zhang στο [95] εξέτασαν τα ωκεάνια ρεύματα στον ολικό σχεδιασμό κίνησης AUV, χρησιμοποιώντας επίσης ΓΑ. Εκτός από ΓΑ, στο [96], οι συγγραφείς μελέτησαν τη χρήση άλλων μετα-ευρετικών μεθόδων όπως η βελτιστοποίηση σμήνους σωματιδίων (Particle Swarm Optimization (PSO)) και ο αποικισμός μερμηγκιών. Παρ 'όλα αυτά, μια μέθοδος σχεδιασμού κίνησης πραγματικού χρόνου απαιτεί ακόμα ταχύτερους αλγορίθμους και ανάλογα με την πολυπλοκότητα του περιβάλλοντος και την ακρίβεια που χρειάζεται, ακόμα και οι προαναφερθείσες μετα-ευρετικές μέθοδοι μπορεί να μην μπορούν να δώσουν ικανοποιητική λύση. 5.3 Οι GPUs στον σχεδιασμό κίνησης Σε πρόσφατες μελέτες σχεδιασμού κίνησης γίνεται χρήση μονάδων επεξεργασίας γραφικών (GPU) για να επιταχυνθεί η διαδικασία και για την εξεύρεση μιας έγκυρης και καλής λύσης. Οι GPUs είναι σχετικά φθηνές και παρέχουν μεγάλη υπολογιστική ισχύ, δεδομένου ότι περιέχουν εκατοντάδες πυρήνες επεξεργασίας. Τον τελευταίο καιρό, η NVIDIA έχει σχεδιάσει κάρτες γραφικών νέας γενιάς με ελάχιστη κατανάλωση ενέργειας, προκειμένου να τις ενσωματώσει στα κινητά τηλέφωνα, επεκτείνοντας έτσι τη χρήσης τους σε εφαρμογές με περιορισμούς στην ενέργεια.

96 88ΚΕΦΑΛΑΙΟ 5. ΕΥΡΕΣΗ ΣΧΕΔΙΟΥ ΚΙΝΗΣΗΣ ΑΥΤΟΝΟΜΟΥ ΥΠΟΒΡΥΧΙΟΥ ΟΧΗΜΑΤΟΣ Στην κατεύθυνση αυτή, στο [97] παραλληλοποιούνται οι RRT και RRT* αλγόριθμοι και η επιτάχυνση που επιτεύχθηκε είναι μεταξύ 10x και 25x. Η ρουτίνα που παραλληλοποιήθηκε ήταν ο έλεγχος για συγκρούσεις σε ένα πρόβλημα σχεδιασμού κίνησης, καθώς ήταν η πιο χρονοβόρα. Οι αλγόριθμοι εφαρμόστηκαν σε ένα βραχίονα με εννέα συνδέσεις σε ένα περιβάλλον 2-Δ με τέσσερα εμπόδια. Οι Michel κ.ά. [98] χρησιμοποιούν μια πρώιμη GPU, που δεν υποστηρίζει CUDA, για να φτιάξουν ένα πραγματικού χρόνου ιχνηλάτη για 3-Δ περιβάλλον, για αναρρίχηση σκαλοπατιών καθώς και για αποφυγή εμποδίων για ένα ανθρωποειδές ρομπότ. Οι Henc και Porter-Sobieraj [99] επιταχύνουν την διαδικασία του ελέγχου συγκρούσεων με τη χρήση GPU. Αναπαριστούν τα αντικείμενα (το σώμα και τα εμπόδια) ως ένα σύνολο τριγώνων και ελέγχουν για συγκρούσεις, διαδικασία που είναι τελείως παράλληλη. Στο [100] παραλληλοποιήθηκε ο αλγόριθμος PRM για την επίλυση προβλημάτων αναφοράς για ολικό σχεδιασμό κίνησης 3 έως 6 β.ε. σε 3-Δ περιβάλλον. Παρατήρησαν επιταχύνσεις περίπου 10x-80x σε σχέση με την αντίστοιχη υλοποίηση σε CPU της βιβλιοθήκης OOPSMP¹. Επιπλέον, στο [101] παραλληλοποιήθηκε ο αλγόριθμος R* σε GPU και η μέθοδος εφαρμόστηκε σε έναν βραχίονα ρομπότ 6 β.ε. για ένα 2-Δ πρόβλημα εύρεσης διαδρομής. Οι Pan και Manocha [102] παρουσίασαν δύο παράλληλους αλγορίθμους για εύρεση συγκρούσεων για πραγματικού χρόνου σχεδιασμό κινήσεων. Κατάφεραν να εκτελούν ελέγχους σύγκρουσης ανά δευτερόλεπτο και κατάφεραν να υπολογίζουν διαδρομές χωρίς συγκρούσεις σε λιγότερο από 100 χιλιοστά του δευτερολέπτου για πολλά προβλήματα αναφοράς. Μια άλλη ενδιαφέρουσα εργασία πραγματοποιήθηκε από τους συγγραφείς στο [103], όπου παρουσίασαν έναν αποτελεσματικό αλγόριθμο αναζήτησης πλησιέστερων γειτόνων (nearest-neighbor) για το σχεδιασμό κίνησης, επιτυγχάνοντας μία με δύο τάξεις μεγέθους ταχύτερη υλοποίηση από ό,τι στην CPU. Επιπλέον, ο Bleiweiss [104] παρουσίασε μια αποτελεσματική υλοποίηση εύρεσης ολικής διαδρομής σε GPU, με πάνω από μία τάξη μεγέθους καλύτερη απόδοση από ό,τι δυο υλοποιήσεις σε CPU με ένα ή δύο νήματα για τον αλγόριθμο Dijkstra και τον A* αλγόριθμο αναζήτησης. 5.4 Αποδοτικός σχεδιασμός κίνησης Στον σχεδιασμό κίνησης αυτόνομων υποβρύχιων οχημάτων, δεδομένου ότι η ενεργειακή τους αυτονομία είναι αρκετά περιορισμένη, πολλοί συγγραφείς έχουν εξετάσει τη χρήση πρόσθετων κριτηρίων βελτιστοποίησης [90, 94, 95]. Για την ειδική περίπτωση των UVMS αποστολών θα πρέπει επίσης να εξεταστεί η συμπεριφορά του βραχίονα μεταξύ των κριτηρίων βελτιστοποίησης. Προς την κατεύθυνση της ελαχιστοποίησης της κατανάλωσης ενέργειας μιας παρέμβασης από ένα UVMS, στο [105] χρησιμοποιήθηκε ο δείκτης μανουβραρίσματος του βραχίονα του οχήματος για να φτάσει την θέση πρόσδεσής του. Στο [106] εξετάστηκε ένας εκτεταμένος δείκτης μανουβραρίσματος, ως κριτήριο για την βέλτιστη τοποθέτηση του UVMS, προκειμένου να εκτελέσει αποτελεσματικά μια παρέμβαση. Ο Herman [107] πρότεινε επίσης δείκτες βασισμένους στην ενέργεια για βραχίονες ρομπότ που θα μετρούσαν την κινητική ενέργεια που δαπανάται από κάθε ενεργοποιητή για μια δεδομένη αλλαγή διαμόρφωσης. Η κατάλληλη χρήση του δείκτη επιδεξιότητας εξαρτάται από την παρέμβαση που πρέπει να γίνει και θα μπορούσε να θεωρηθεί ως πρόσθετο κριτήριο βελτιστοποίησης σε έναν αλγόριθμο σχεδια- ¹

97 5.5. ΚΙΝΗΜΑΤΙΚΗ ΑΝΑΛΥΣΗ ΤΟΥ UVMS 89 Σχήμα 5.1: Σχηματική αναπαράσταση ενός UVMS σμού κίνησης, για την επίτευξη αποτελεσματικών παρεμβάσεων. Ένας ικανός αλγόριθμος σχεδιασμού κίνησης που θα μπορούσε να βοηθήσει στην εξοικονόμηση ενέργειας κατά μήκος της διαδρομής, θα ωφελούσε σε μεγάλο βαθμό τις τρέχουσες και μελλοντικές επιχειρήσεις αυτόνομων παρεμβάσεων. 5.5 Κινηματική ανάλυση του UVMS Ένα UVMS αποτελείται από μια ελεύθερη βάση 6-β.ε. και ένα βραχίονα Ν-β.ε., με αποτέλεσμα ένα ρομποτικό σύστημα Ν + 6 β.ε.. Στο Σχήμα 5.1 δίδεται μια αναπαράστασή του χρησιμοποιώντας twists για να περιγραφούν οι αρθρώσεις του UVMS. Σε αυτήν την προσέγγιση, οι πρώτοι έξι β.ε. (θ 1,.., θ 6 ) εκπροσωπούνται από τρεις μεταφορικές και τρεις περιστροφικές εικονικές αρθρώσεις και καθορίζουν την θέση του κέντρου βάρους (CoG) του οχήματος. Οι άξονες k1-k3 καθορίζουν τη μετατόπιση και οι άξονες ω4-ω6 την περιστροφή για κάθε μια από τις πρώτες έξι αρθρώσεις αντίστοιχα. Μία διαμόρφωση UVMS ορίζεται από τις τιμές θέσης/γωνίας κάθε άρθρωσης (θ 1,.., θ N+6 ) και δίνεται από: c = (θ 1,..., θ 6, θ 7,..., θ N+6 ) (5.1) Μια εργασία επιθεώρησης UVMS μπορεί να οριστεί από μια καμπύλη που θα πρέπει να προσεγγιστεί από τον βραχίονα με ένα συγκεκριμένο σφάλμα απόστασης π.χ. για μια εργασία ελέγχου συγκόλλησης, το άκρο του βραχίονα θα πρέπει να ακολουθήσει τη γραμμή συγκόλλησης με συνέπεια μέσα στα δεδομένα όρια. Η καμπύλη μπορεί να προσεγγιστεί από ένα πεπερασμένο αριθμό σημείων πάνω στην καμπύλη (p i tp) που θα μπορούσαν να καθοριστούν χρησιμοποιώντας την εκτεταμένη μέθοδο περιορισμένης απόκλισης του Taylor [108], ανάλογα με την επιθυμητή ακρίβεια. Το σύνολο των διαμορφώσεων που θα επιτρέψει στο UVMS να εκτελέσει το συγκεκριμένο έργο από την αρχική διαμόρφωση (START) προς την τελική (GOAL), επισκε-

98 90ΚΕΦΑΛΑΙΟ 5. ΕΥΡΕΣΗ ΣΧΕΔΙΟΥ ΚΙΝΗΣΗΣ ΑΥΤΟΝΟΜΟΥ ΥΠΟΒΡΥΧΙΟΥ ΟΧΗΜΑΤΟΣ Σχήμα 5.2: Σχέδιο κίνησης πτόμενο όλα τα διακριτά σημεία p i tp της καμπύλης, συνθέτει το σχέδιο κίνησης για το σύστημα. Ένα πιθανό σχέδιο κίνησης θα μπορούσε να δοθεί από: r = (c ST ART,..., c i,..., c GOAL ) (5.2) όπου το c i ορίζει την i-οστή διαμόρφωση του σχεδίου κίνησης ενός UVMS που αντιστοιχεί στο p i tp της δοσμένης καμπύλης. Μια απεικόνιση της αρχικής, της τελικής και των ενδιάμεσων διαμορφώσεων του UVMS, σε μια αποστολή ελέγχου ενός σωλήνα δίνεται στο Σχήμα 5.2. Το μοντέλο του UVMS αποτελείται από το κύριο σώμα και ένα βραχίονα 6 β.ε. ο οποίος προσαρτάται στη μπροστινή όψη του οχήματος. Δεδομένου ότι για ένα ρομποτικό σύστημα υπάρχουν περισσότερες από μία UVMS διαμορφώσεις που θα επέτρεπαν στο άκρο του βραχίονα να φθάσει σε ένα ορισμένο σημείο της καμπύλης p i tp, το πρόβλημα σχεδιασμού κίνησης μετασχηματίζεται σε μια αναζήτηση για τη βέλτιστη αλληλουχία διαμορφώσεων που οδηγούν στην επιτυχή εφαρμογή της αποστολής. Σε γενικές γραμμές, ένας επιτυχημένος αλγόριθμος σχεδιασμού κίνησης θα πρέπει να δώσει ένα σχέδιο κίνησης r που για κάθε διαμόρφωση c i οι στόχοι της αποστολής να ικανοποιούνται με τον καλύτερο δυνατό τρόπο. 5.6 Σχεδιασμός κίνησης χωρίς συγκρούσεις σε Bump-επιφάνεια Ένας καλός αλγόριθμος σχεδιασμού κίνησης θα πρέπει να παρέχει ένα σχέδιο κίνησης χωρίς συγκρούσεις κατά την εκτέλεση των εργασιών της αποστολής. Έχουν υπάρξει πολυάριθμες μελέτες που ασχολούνται με το πρόβλημα της αποφυγής εμποδίων στο σχεδιασμό κίνησης. Εδώ, χρησιμοποιείται μια Bump-επιφάνεια ενσωματωμένη σε έναν 4-Δ Ευκλείδειο χώρο για να ελέγξει για ένα σχέδιο κίνησης χωρίς εμπόδια. Η έννοια της Bump-επιφάνειας για το σχεδιασμό κίνησης εισήχθη στο [109] και αργότερα επεκτάθηκε σε ένα κινητό βραχίονα σε περιβάλλον 3-Δ [110]. Η κατασκευή της Bumpεπιφάνειας στηρίζεται σε ένα τρισδιάστατο πλέγμα σημείων ελέγχου με μήκος (L) σε κάθε διάσταση και βήμα (d), ανάλογα με την επιθυμητή ακρίβεια σχεδιασμού κίνησης. Η τιμή της τέταρτης διάστασης του κάθε σημείου ελέγχου δίδεται από ένα τροποποιημένο αλγόριθμο z-τιμής (που περιγράφεται στο [109]), ανάλογα με το αν το σημείο

99 5.6. ΣΧΕΔΙΑΣΜΟΣ ΚΙΝΗΣΗΣ ΧΩΡΙΣ ΣΥΓΚΡΟΥΣΕΙΣ ΣΕ BUMP-ΕΠΙΦΑΝΕΙΑ 91 βρίσκεται μέσα σε ένα εμπόδιο ή όχι. Ο αλγόριθμος z-τιμής περιγράφεται αναλυτικά στην επόμενη ενότητα. Η Bump-επιφάνεια αντιπροσωπεύεται από μια επιφάνεια Β-Spline που δίνεται από: d 1 d 1 d 1 BS(u, v, w) = Ni a (u)nj b (v)nk(w)p c ijk, 0 u, v, w 1 (5.3) i=0 j=0 k=0 όπου Ni a (u), Nj b (v) και Nk c (w) είναι οι συναρτήσεις βάσης και τα a, b και c δηλώνουν το βαθμό στην u, v και w κατεύθυνση αντίστοιχα. Για την ανίχνευση συγκρούσεων παράγεται ένα πεπερασμένο σύνολο σημείων, τα οποία απλώνονται κατά μήκος των εξωτερικών επιφανειών του σώματος του UVMS και του βραχίονα. Αυτά τα σημεία ονομάζονται σημεία συστήματος ( s p j, j = 1 : m) και το τελευταία σημείο ( s p m ) αποδίδεται σκοπίμως στο άκρο του βραχίονα (Σχήμα 5.3). Με βάση μια συγκεκριμένη διαμόρφωση, οι καρτεσιανές συντεταγμένες για κάθε σημείο του συστήματος θα μπορούσαν να υπολογιστούν μέσω του μετασχηματισμού του ευθύ κινηματικού [111] και στη συνέχεια να προβληθούν στην Bump-επιφάνεια χρησιμοποιώντας το πλέγμα των σημείων ελέγχου. Δεδομένου ότι τα εμπόδια αντιπροσωπεύονται από "Bumps" και η ελεύθερη περιοχή από "Flat" περιοχές, προκειμένου να ελεγχθεί κατά πόσον η διαμόρφωση βρίσκεται στον ελεύθερο χώρο, ο όρος επιπεδότητα (F) χρησιμοποιείται και δίνεται από: F = m BS 4 ( s p j ) (5.4) j=1 όπου BS 4 ( s p j ) 0 δηλώνει την τέταρτη διάσταση ενός σημείου συστήματος για μια συγκεκριμένη διαμόρφωση c i στην Bump-επιφάνεια. Λαμβάνοντας υπόψη τη συνολική επιπεδότητα F κάθε s p σε ένα μονοπάτι r, εισάγεται ο όρος της επιπεδότητας της διαδρομής του UVMS H ως εξής: H(r) = l F i (r, s p) (5.5) i=1 Επομένως μια διαδρομή r χωρίς εμπόδια πρέπει να ικανοποιεί τη συνθήκη H = 0. Υπάρχουν διάφοροι τύποι αισθητήρων που θα μπορούσαν να χρησιμοποιηθούν από ένα UVMS προκειμένου να αποκτήσει πληροφορίες σχετικά με το περιβάλλον εργασίας του. Κοινές μέθοδοι πλοήγησης χρησιμοποιούν ένα συνδυασμό οπτικών και ακουστικών αισθητήρων, όπως κάμερες και σόναρ. Για να δείξουμε την έννοια της Bump επιφάνειας χρησιμοποιώντας τις μετρήσεις του αισθητήρα ένα διάγραμμα δίνεται στο Σχήμα 5.4. Στη δεξιά πλευρά του σχήματος φαίνεται ένα υψηλής ανάλυσης πολυ-δεσμικό σόναρ από την Blue-View², ενώ στην αριστερή πλευρά δίνεται ένα UVMS, που θα χρησιμοποιηθεί ως μοντέλο, εξοπλισμένο με ένα πολυ-δεσμικό σόναρ στην πλώρη του. Οι ενδείξεις του σόναρ μοντελοποιούνται ως ένα πεπερασμένο σύνολο από σημεία σόναρ, ενώ το UVMS στέκεται μπροστά από μια απλή δομή σωλήνα. Δεδομένου ότι είναι αδύνατον να απεικονιστεί η 3-Δ υπερ-επιφάνεια ενσωματωμένη σε 4-Δ χώρο, μία ²

100 92ΚΕΦΑΛΑΙΟ 5. ΕΥΡΕΣΗ ΣΧΕΔΙΟΥ ΚΙΝΗΣΗΣ ΑΥΤΟΝΟΜΟΥ ΥΠΟΒΡΥΧΙΟΥ ΟΧΗΜΑΤΟΣ Σχήμα 5.3: Σημεία του συστήματος UVMS (αʹ) (βʹ) Σχήμα 5.4: Το UVMS και τα σημεία του σόναρ α) στην Bump-επιφάνεια β) στον χώρο προεξοχή που δείχνει μια ένδειξη του σχήματός της παρουσιάζεται. Στο Σχήμα 5.5, η αντίστοιχη προεξοχή της Bump-επιφάνειας χαράσσεται, για τα σημεία του σόναρ που ανήκουν στο επίπεδο x-z [Α] (Σχήμα 5.4). Τα εμπόδια περιβάλλοντος απεικονίζονται επίσης στο σχήμα, με ξεθωριασμένο χρώμα. 5.7 Μέθοδος ολικού σχεδιασμού κίνησης Προσέγγιση διαδρομής Για να εξασφαλιστεί ότι το άκρο του βραχίονα ακολουθεί τη διαδρομή της εργασίας με συνέπεια, η απόσταση μεταξύ του άκρου του βραχίονα και κάθε σημείου στην διαδρομή εργασίας πρέπει να παρακολουθείται. Δεδομένου ότι η διαδρομή εργασίας προσεγγίζεται από l σημεία, ο ακόλουθος όρος έχει εισαχθεί για τον υπολογισμό της

101 5.7. ΜΕΘΟΔΟΣ ΟΛΙΚΟΥ ΣΧΕΔΙΑΣΜΟΥ ΚΙΝΗΣΗΣ 93 Σχήμα 5.5: Αναπαράσταση των σημείων του σόναρ στην Bump-επιφάνεια στο επίπεδο x-z και για y = 5 μέγιστης απόκλισης κατά μήκος μιας διαδρομής r: ( D(r) = max ( s p i m p i tp) 2) (5.6) i=1:l όπου p i tp είναι τα σημεία στη διαδρομή εργασίας και s p i m το σημείο στο άκρο του βραχίονα για την i-οστή διαμόρφωση. Μετά από αυτό, το πρόβλημα σχεδιασμού κίνησης θα μπορούσε να διαμορφωθεί ως ένα πρόβλημα βελτιστοποίησης με αντικειμενική συνάρτηση: όπου w 1 και w 2 είναι παράγοντες βάρους. f obj (r) = w 1 H + w 2 D (5.7) Γενετικός αλγόριθμος Υποθέτοντας ότι έχουμε ένα UVMS με βραχίονα Ν βαθμών ελευθερίας και ψάχνουμε για μια διαδρομή χρησιμοποιώντας τις κοινές μεταβλητές (θ 1,.., θ N+6 ), η χρήση ενός γενετικού αλγορίθμου, όπως αυτός που προτείνεται εδώ, είναι λογική επιλογή. Τα χρωμοσώματα του αλγορίθμου είναι κατασκευασμένα έτσι ώστε να αντιπροσωπεύουν μια πιθανή διαδρομή r. Το κάθε χρωμόσωμα ορίζεται ως εξής: x = [c 1... c i... c l ] (5.8) όπου c i είναι η διαμόρφωση για την επίτευξη του i-οστού σημείου στην πορεία εργασιών. Το μήκος του χρωμοσώματος γίνεται l(n + 6) και λόγω του σημαντικού μήκους του, η πραγματική κωδικοποίηση προτιμάται από την δυαδική κωδικοποίηση.

102 94ΚΕΦΑΛΑΙΟ 5. ΕΥΡΕΣΗ ΣΧΕΔΙΟΥ ΚΙΝΗΣΗΣ ΑΥΤΟΝΟΜΟΥ ΥΠΟΒΡΥΧΙΟΥ ΟΧΗΜΑΤΟΣ άξονας x άξονας y Διάσταση πλέγματος μπλοκ d d Νήματα σε μπλοκ d m Πίνακας 5.1: Διαμόρφωση των νημάτων Ο αρχικός πληθυσμός g init = [x 1, x 2,..., x p ], όπου P είναι το μέγεθος του πληθυσμού, δημιουργείται τυχαία χωρίς να ξεπερνά τα όρια των αρθρώσεων. Σε κάθε χρωμόσωμα και για κάθε διαμόρφωση τα αντίστοιχα s p j υπολογίζονται με τη χρήση των εξισώσεων εμπρόσθιας κινηματικής του συστήματος και οι όροι D και H υπολογίζονται με βάση τις Εξισώσεις 5.5 και 5.6. Τα χρωμοσώματα αξιολογούνται με βάση την Εξίσωση 5.7 προς την ελαχιστοποίηση της αξίας της f obj. Για την παραγωγή του νέου πληθυσμού ο τελεστής διασταύρωσης λειτουργεί κατά μήκος του χρωμοσώματος σε κάθε διαμόρφωση, κόβοντάς το σε ένα σημείο, ενώ η μετάλλαξη λειτουργεί στα γονίδια (τιμές αρθρώσεων), αλλάζοντας την τιμή του κάθε επιλεγμένου γονιδίου μέσα στο όριο της αντίστοιχης άρθρωσης Παράλληλη διαδικασία Στην κατεύθυνση του σχεδιασμού κινήσεων σε πραγματικό χρόνο, η ανάγκη για γρηγορότερα αποτελέσματα είναι επιτακτική. Οι GPUs θα μπορούσαν να είναι μια εξέχουσα λύση στο πρόβλημα αυτό. Χρησιμοποιήθηκε λοιπόν, μια NVIDIA GPU και το περιβάλλον CUDA, που εισήχθη από την NVIDIA, για την παραλληλοποίηση ενός μέρους του αλγορίθμου σχεδιασμού κίνησης. Για να βρούμε ποιο κομμάτι του αλγορίθμου πρέπει να παραλληλοποιηθεί, έγινε ανάλυση (profiling) του κώδικα. Αυτό έδειξε ότι η διαδικασία της αποφυγής εμποδίων παίρνει το 96-98% του χρόνου εκτέλεσης, ανάλογα με την πυκνότητα d του πλέγματος της Βump-Επιφάνεια. Όπως αναφέρθηκε πριν, κατά τη διάρκεια της διαδικασίας αποφυγής εμποδίων, η επιπεδότητα της διαδρομής του UVMS H πρέπει να υπολογίζεται σύμφωνα με την Εξίσωση 5.5. Έτσι, η επιπεδότητα του κάθε στιγμιότυπου της διαδρομής, καθενός από τα m σημεία του συστήματος ( s p j ), στην BS, υπολογίζεται για κάθε διαμόρφωση c i κάθε χρωμοσώματος x. Αυτό απαιτεί md 3 υπολογισμούς για μια διαμόρφωση c i. Λαμβάνοντας αυτά υπόψη, η απόφασή μας ήταν να εκτελεστούν md 3 νήματα με το πλέγμα των μπλοκ νημάτων να είναι δισδιάστατο (dd). Κάθε μπλοκ νημάτων αποτελείται από d νήματα στον x-άξονα και m στον y. Με τον τρόπο αυτό έχουμε τον επιθυμητό αριθμό νημάτων και η διαμόρφωση τους συνοψίζεται στον Πίνακα 5.1. Το αποτέλεσμα του κάθε νήματος τοποθετείται σε έναν δισδιάστατο πίνακα (dm) στην κοινή μνήμη. Το άθροισμα κάθε μπλοκ νημάτων υπολογίζεται με λειτουργία μείωσης αθροίσματος για να εκμεταλλευτούμε όσο το δυνατόν πιο πολλά νήματα. Τέλος, το συνολικό άθροισμα υπολογίζεται σε μια θέση στην κύρια μνήμη, χρησιμοποιώντας ατομικές λειτουργίες άθροισης. Λόγω των περιορισμών που επιβάλλονται από το μοντέλο προγραμματισμού CUDA, το γινόμενο dm δεν πρέπει να υπερβαίνει το 1024 και, ως εκ τούτου, η κατανομή των νημάτων πρέπει να γίνει με προσοχή. Σε περίπτωση που το προαναφερθέν γινόμενο πρέπει να υπερβεί το 1024, κάθε νήμα θα μπορούσε να εκτελέσει περισσότερες λειτουργίες.

103 5.7. ΜΕΘΟΔΟΣ ΟΛΙΚΟΥ ΣΧΕΔΙΑΣΜΟΥ ΚΙΝΗΣΗΣ 95 Σχήμα 5.6: Περιγραφή σεναρίου Αποτελέσματα Για την παρούσα εργασία θεωρούμε ένα UVMS με βραχίονα έξι β.ε. (N = 6), οδηγώντας σε ένα σύστημα με δώδεκα β.ε. (θ 1,..., θ 12 ). Η διαδρομή εργασίας προσεγγίζεται από πέντε σημεία (l = 5), ενώ το UVMS ορίζεται από εννέα σημεία επί του οχήματος και ένα σημείο σε κάθε σύνδεσμο του βραχίονα (m = 12). Το πρότυπο περιβάλλον με τη διαδρομή εργασίας και το UVMS απεικονίζονται στο Σχήμα 5.6. Προκειμένου να αξιολογηθεί η απόδοση του αλγορίθμου που παρουσιάζεται, ένας αριθμός πειραμάτων διεξήχθησαν. Για την εκτέλεση του σειριακού αλγορίθμου ένας υπολογιστής με επεξεργαστή Intel Core i7 στα 3.40GHz, 16Gb RAM και ένα δίσκο στερεάς κατάστασης χρησιμοποιήθηκε, ενώ για τον παράλληλο αλγόριθμο χρησιμοποιήθηκε μια NVIDIA GTX580 κάρτα γραφικών με υπολογιστική δυνατότητα 2.0 και 512 πυρήνες. Τα αποτελέσματα που παρουσιάζονται είναι ο μέσος όρος 10 εκτελέσεων και θα πρέπει να αναφερθεί ότι η σειριακή έκδοση του κώδικα είναι μονονηματική. Όλος ο κώδικας είναι γραμμένος σε Matlab, με εξαίρεση το τμήμα της GPU. Ο κώδικας της GPU είναι ενσωματωμένος στο Matlab χρησιμοποιώντας την παράλληλη εργαλειοθήκη (parallel toolbox) Σύγκριση σειριακής και παράλληλης μεθόδου Το πιο ενδιαφέρον και κρίσιμο μέρος του αλγορίθμου, όσον αφορά το χρόνο εκτέλεσης, είναι η διαδικασία αποφυγής εμποδίων, όπως φάνηκε από την ανάλυση του κώδικα. Στο Σχήμα 5.7 φαίνεται η επιτάχυνση της διαδικασίας αποφυγής εμποδίων καθώς η τιμή της πυκνότητας του πλέγματος της Bump-επιφάνειας (d) αυξάνει. Ο χρόνος εκτέλεσης της σειριακής και της παράλληλης προσέγγισης εξετάστηκαν, προκειμένου να διερευνηθεί η σχέση μεταξύ της επιτάχυνσης και της πυκνότητας του πλέγματος της BS. Ο χρόνος εκτέλεσης στη CPU αυξάνει σημαντικά για υψηλότερες τιμές του d, ενώ ο χρόνος εκτέλεσης στη GPU αυξάνεται με πολύ μικρό ρυθμό. Θα πρέπει επίσης να αναφερθεί ότι στο χρόνο εκτέλεσης της παράλληλης προσέγγισης, οι μεταφορές των δεδομένων, από και προς την GPU, λαμβάνονται υπόψη. Δυστυχώς, αυτό

104 96ΚΕΦΑΛΑΙΟ 5. ΕΥΡΕΣΗ ΣΧΕΔΙΟΥ ΚΙΝΗΣΗΣ ΑΥΤΟΝΟΜΟΥ ΥΠΟΒΡΥΧΙΟΥ ΟΧΗΜΑΤΟΣ Σχήμα 5.7: Επιτάχυνση διαδικασίας αποφυγής εμποδίων Πυκνότητα Σειριακή Παράλληλη Επιτάχυνση πλέγματος προσέγγιση (sec) προσέγγιση (sec) Πίνακας 5.2: Χρόνος εκτέλεσης σειριακής και παράλληλης προσέγγισης και επιτάχυνση δεν μπορεί να αποφευχθεί, δεδομένου ότι τα δεδομένα που απαιτούνται, αλλάζουν σε κάθε γενιά. Στον Πίνακα 5.2 δίνονται ο χρόνος εκτέλεσης όλου του αλγορίθμου για τη σειριακή και την παράλληλη προσέγγιση, καθώς και η συνολική επιτάχυνση. Οι χρόνοι που απεικονίζονται, είναι για 10 γενιές του γενετικού αλγορίθμου με το μέγεθος του πληθυσμού να είναι P = 10. Ο συνολικός χρόνος εκτέλεσης χρησιμοποιώντας την παράλληλη προσέγγιση φαίνεται να αυξάνει με ένα πολύ μικρό ποσοστό όσο αυξάνει το μέγεθος του προβλήματος Ποιότητα λύσεων Για να δειχθεί η αποτελεσματικότητα της μεθόδου, διεξήχθη μία σειρά πειραμάτων, χρησιμοποιώντας την παράλληλη προσέγγιση, για το σενάριο που απεικονίζεται στο Σχήμα 5.6, όπου το άκρο του βραχίονα του UVMS έπρεπε να ακολουθήσει μια δεδομένη διαδρομή σε ένα περιβάλλον με εμπόδια. Στον Πίνακα 5.3 φαίνονται οι παράμετροι του γενετικού αλγορίθμου αφού τις προσαρμόσαμε με δοκιμαστικές εκτελέσεις. Από τις εκτελέσεις βρέθηκαν νόμιμες λύσεις, μια από τις οποίες απεικονίζεται στο Σχήμα 5.8. Ο συνολικός χρόνος εκτέλεσης του ΓΑ για τις δεδομένες παραμέτρους ήταν δευτερόλεπτα. Το άκρο του βραχίονα προσεγγίζει την δεδομένη διαδρομή εργα-

105 5.8. ΜΕΘΟΔΟΣ ΤΟΠΙΚΟΥ ΣΧΕΔΙΑΣΜΟΥ ΚΙΝΗΣΗΣ 97 Πληθυσμός Γενιές Πιθανότητα Πιθανότητα d διασταύρωσης μετάλλαξης Πίνακας 5.3: Παράμετροι γενετικού αλγορίθμου Σχήμα 5.8: Τελική λύση σίας με ικανοποιητική ακρίβεια, ενώ κανένα από τα σημεία του UVMS δε συγκρούεται με τα εμπόδια σε όλη τη διαδρομή Συμπεράσματα Στο πρώτο μέρος αυτού του κεφαλαίου παρουσιάστηκε μια μέθοδος για τον ολικό σχεδιασμό κίνησης ενός UVMS με ένα βραχίονα Ν β.ε. Στην προσπάθεια για την ενίσχυση της απόδοσης του αλγορίθμου, εισάγαμε μια παράλληλη προσέγγιση για την υπολογιστικά απαιτητική διαδικασία της αποφυγής των εμποδίων. Η αποφυγή εμποδίων επιτυγχάνεται με τη χρήση μιας 4-Δ Bump-επιφάνειας, με βάση ένα πλέγμα με μεταβλητή πυκνότητα, ανάλογα με την επιθυμητή ακρίβεια. Η παράλληλη διαδικασία αποφυγής εμποδίων στην GPU οδήγησε σε επιτάχυνση από 46 έως 230 φορές σε σχέση με την αρχική σειριακή προσέγγιση. Τα αποτελέσματα δείχνουν ότι η χρήση των νέων τεχνολογιών, όπως οι GPUs, δίνουν τη δυνατότητα να επιτύχουμε μεγαλύτερη ακρίβεια στον αλγόριθμο αποφυγής εμποδίων χωρίς σημαντικό κόστος στον χρόνο εκτέλεσης. Επιπλέον, η μεταφορά όλου του ΓΑ στην GPU μπορεί να οδηγήσει σε ακόμη υψηλότερες επιταχύνσεις για ολόκληρο τον αλγόριθμο σχεδιασμού κίνησης που θα μπορούσε να βοηθήσει στον σχεδιασμό κίνησης πραγματικού χρόνου. 5.8 Μέθοδος τοπικού σχεδιασμού κίνησης Στο δεύτερο μέρος αυτού του κεφαλαίου παρουσιάζεται μια μέθοδος που θα μπορούσε να αντιμετωπίσει το απαιτητικό πρόβλημα σχεδιασμού κίνησης ενός UVMS πολ-

106 98ΚΕΦΑΛΑΙΟ 5. ΕΥΡΕΣΗ ΣΧΕΔΙΟΥ ΚΙΝΗΣΗΣ ΑΥΤΟΝΟΜΟΥ ΥΠΟΒΡΥΧΙΟΥ ΟΧΗΜΑΤΟΣ λών βαθμών ελευθερίας σε ένα ημι-δομημένο 3-Δ περιβάλλον με εμπόδια. Εξετάζεται το πραγματικό μοντέλο του UVMS, ενώ το περιβάλλον αναπαρίσταται πολύ γρήγορα πάνω σε μια Bump-επιφάνεια [109] για γρήγορο έλεγχο συγκρούσεων, με την εφαρμογή ενός παράλληλου αλγορίθμου που τρέχει σε μια GPU. Η υπολογιστικά δαπανηρή μετατροπή των εμποδίων στο χώρο διαμόρφωσης αποφεύγεται αφού ο έλεγχος για συγκρούσεις εκτελείται στην Bump-επιφάνεια. Η προτεινόμενη μέθοδος μπορεί να δημιουργήσει μια ασφαλή, υψηλής ποιότητας διαδρομή, λαμβάνοντας υπόψη τις τελευταίες πληροφορίες του περιβάλλοντος, και μπορεί να δουλέψει είτε σε ένα εν μέρει γνωστό ή ακόμα και σε ένα άγνωστο περιβάλλον. Η μέθοδος αυτή ευνοεί αποτελεσματικές λειτουργίες, βελτιστοποιώντας την χρήση των αρθρώσεων και τη χρήση επιδέξιων διαμορφώσεων καθ' όλη την διάρκεια εκτέλεσης της εργασίας, προσθέτοντας έτσι στην επιτυχία της αποστολής. Επιπλέον, η αρθρωτή αρχιτεκτονική της, επιτρέπει να αντιμετωπιστούν αποστολές με ευέλικτα σενάρια τροποποιώντας τα κριτήρια, ανάλογα με τη φύση της εργασίας. Η μέθοδος μπορεί να επεκταθεί εύκολα σε οποιαδήποτε παρέμβαση ρομπότ σε ένα περιβάλλον 3-Δ. Όσον αφορά την περίπτωση κατά την οποία υπάρχουν λεπτομερείς πληροφορίες της περιοχής παρέμβασης, ένας off-line σχεδιασμός κίνησης [112] μπορεί να παράγει ένα ολικό σχέδιο κίνησης για την αποστολή και ο προτεινόμενος τοπικός αλγόριθμος θα μπορούσε να χρησιμοποιηθεί για την εφαρμογή και τη βελτιστοποίηση της ήδη δημιουργηθείσας διαδρομής, με βάση τις τελευταίες μετρήσεις των αισθητήρων. Θα πρέπει να σημειωθεί πάντως, ότι η αναπαράσταση του χώρου εργασίας χρησιμοποιώντας την Bump-επιφάνεια, αφορά το περιβάλλον κοντά στην περιοχή παρέμβασης και δεν πρέπει να συγχέεται με διάφορες μεθόδους ταυτόχρονου εντοπισμού και χαρτογράφησης. Υποθέτουμε ότι η θέση του οχήματος είναι γνωστή με τη χρήση διαθέσιμων μεθόδων εντοπισμού (Long BaseLine (LBL) ή Ultra Short BaseLine (USBL) συστήματα [108]) Αποδοτική εκτέλεση εργασίας Δείκτης ελάχιστης κίνησης αρθρώσεων Όπως έχει αναφερθεί στην εισαγωγή του κεφαλαίου, η αποτελεσματική χρήση των ενεργειακών πόρων έχει μεγάλη σημασία σε μια αποστολή UVMS. Για UVMS με ελεύθερη βάση, μια συγκεκριμένη κίνηση του άκρου του βραχίονα θα μπορούσε να επιτευχθεί με έναν άπειρο αριθμό διαφορετικών διαμορφώσεων του UVMS. Ανάλογα με την αποστολή, θα ήταν ωφέλιμο να ευνοούνται οι μετακινήσεις ορισμένων αρθρώσεων αντί για ολόκληρο το σύστημα. Για παράδειγμα, η χρήση των ηλεκτροκινητήρων της βάσης του οχήματος που θα μπορούσε να βοηθήσει το άκρο του βραχίονα να ασκήσει μεγάλες δυνάμεις, απαιτεί περισσότερη ενέργεια και είναι σε γενικές γραμμές λιγότερο ακριβής από τη χρήση των ενεργοποιητών του βραχίονά του. Στην κατεύθυνση αυτή, ο όρος του δείκτη ελάχιστης κίνησης των αρθρώσεων (minimum joint displacement index - MJD) παρακολουθεί τις μετατοπίσεις της κάθε άρθρωσης του UVMS μεταξύ δύο συνεχόμενων διαμορφώσεων c i και c i+1. Υπολογίζεται η διαφορά στις τιμές τους και αργότερα κανονικοποιείται με βάση το εύρος της αντίστοιχης άρθρωσης. Ο δείκτης δίνεται από: θ1 i θ1 i+1 θn+6 i MJD(θ) = (we we θi+1 N+6 N+6 ) (5.9) Rθ 1 Rθ N+6 όπου we i είναι τα βάρη που εφαρμόζονται για κάθε κίνηση άρθρωσης του UVMS

107 5.8. ΜΕΘΟΔΟΣ ΤΟΠΙΚΟΥ ΣΧΕΔΙΑΣΜΟΥ ΚΙΝΗΣΗΣ 99 και θ 1 έως θ N+6 αντιπροσωπεύουν τις μεταβλητές άρθρωσης του UVMS. Τα βάρη μπορούν να προσαρμοστούν για να καλύψουν τις ανάγκες της εκάστοτε αποστολής. Για παράδειγμα, σε μια αποστολή που χρειάζονται λεπτοί χειρισμοί, θα πρέπει να ευνοηθεί η κίνηση των αρθρώσεων του βραχίονα, παρά οι κινητήρες του οχήματος που είναι λιγότερο ακριβείς και καταναλώνουν περισσότερη ενέργεια. Κριτήριο επιδεξιότητας Σε αυτή τη μέθοδο χρησιμοποιείται ο δείκτης κινηματικής κατάστασης του Ιακωβιανού (kci) για να βαθμονομηθεί κάθε υποψήφια διαμόρφωση. Ο kci εισάγεται στο [113] και θα μπορούσε να συσχετιστεί με την ακρίβεια του άκρου του βραχίονα, αφού ευνοεί διαμορφώσεις που επιτρέπουν ομοιόμορφη κίνησή του, προς κάθε κατεύθυνση. Ο kci δίνεται από: kci = σ min σ max (5.10) όπου σ min και σ max δηλώνουν τη μικρότερη και τη μέγιστη τιμή ενικότητας του Ιακωβιανού πίνακα του UVMS αντίστοιχα. Ο αναλυτικός υπολογισμός του kci βασίζεται στο singular value decomposition του Ιακωβιανού πίνακα, που αποτελείται από ένα μεγάλο σύνολο υπολογισμών. Δεδομένου ότι η μέθοδος που παρουσιάζεται στοχεύει στις εφαρμογές πραγματικού χρόνου, θα πρέπει να αποφεύγονται οι δαπανηροί υπολογισμοί. Ως εκ τούτου, ένα νευρωνικό δίκτυο με 25 νευρώνες στο κρυφό στρώμα του χρησιμοποιήθηκε για την προσέγγιση της τιμής του kci σε κάθε διαμόρφωση για ένα UVMS 12 β.ε. Το δίκτυο έχει εκπαιδευτεί χρησιμοποιώντας τον αλγόριθμο Levenberg-Marquardt που είναι ενσωματωμένος στο Matlab³. Μια προηγούμενη απόπειρα να χρησιμοποιηθούν νευρωνικά δίκτυα για την προσέγγιση του δείκτη επιδεξιότητα για UVMS έχει παρουσιαστεί στο [114]. Το δίκτυο μπορεί γρήγορα να καταλήξει σε μια καλή προσέγγιση του kci, προσθέτοντας σημαντικά στη μείωση του συνολικού υπολογιστικού χρόνου με επιτάχυνση της τάξης του 110x-125x. Το κριτήριο επιδεξιότητας δίνεται από: J = f NN (c i ) (5.11) όπου ο όρος f NN περιγράφει την προσέγγιση του kci από το νευρωνικό δίκτυο για μια διαμόρφωση του UVMS (c i ). Χρησιμοποιώντας το κριτήριο επιδεξιότητας μπορεί να επιτευχθεί ένα σχέδιο διαδρομής με μεγάλη ακρίβεια για όλη την αποστολή Περιγραφή της αντικειμενικής συνάρτησης Έχοντας αναλύσει και περιγράψει τους βασικούς στόχους του προβλήματος σχεδιασμού κίνησης ενός UVMS, η αντικειμενική συνάρτηση του προβλήματος θα μπορούσε να οριστεί ως εξής: f obj = w 1 F + w 2 D + w 3 K (5.12) ³

108 100ΚΕΦΑΛΑΙΟ 5. ΕΥΡΕΣΗ ΣΧΕΔΙΟΥ ΚΙΝΗΣΗΣ ΑΥΤΟΝΟΜΟΥ ΥΠΟΒΡΥΧΙΟΥ ΟΧΗΜΑΤΟΣ Σχήμα 5.9: Διάγραμμα ροής της μεθόδου όπου w 1, w 2, w 3 είναι παράγοντες βάρους που μπορούν να διαφέρουν ανάλογα με την αποστολή. Ο όρος K μπορεί να αντικατασταθεί από έναν από τους όρους MJD ή J ανάλογα με τη φύση της εργασίας. Αυτή η προσέγγιση της αντικειμενικής συνάρτησης επιτρέπει να χρησιμοποιηθεί σε οποιοδήποτε είδος αποστολής παρέμβασης. Παρ' όλα αυτά, το άθροισμα των συντελεστών βάρους είναι ίσο με 1, ώστε να μπορούμε να έχουμε συνεπείς μετρήσεις. Η αναζήτηση του βέλτιστου σχεδίου κίνησης βασίζεται σε έναν εξελικτικό αλγόριθμο που έχει αναπτυχθεί για να βρίσκει την επόμενη διαμόρφωση για το UVMS. Το διάγραμμα ροής της μεθόδου απεικονίζεται στο Σχήμα 5.9. Στο πρώτο στάδιο, ο αλγόριθμος παίρνει ως είσοδο τα δεδομένα του αισθητήρα για την τρέχουσα διαμόρφωση και ενημερώνει την Bump-επιφάνεια αναλόγως, χρησιμοποιώντας τον παράλληλο αλγόριθμο. Όπως αναφέρθηκε προηγουμένως, η μέθοδος αυτή έχει σχεδιαστεί για να βρίσκει ένα σχέδιο κίνησης μέσα σε ένα ημι-δομημένο περιβάλλον εργασίας, ή ακόμα και να βελτιστοποιεί ένα ήδη υπάρχον σχέδιο. Στο δεύτερο

109 5.8. ΜΕΘΟΔΟΣ ΤΟΠΙΚΟΥ ΣΧΕΔΙΑΣΜΟΥ ΚΙΝΗΣΗΣ 101 στάδιο, εάν υπάρχει ήδη ένα σχέδιο κίνησης, η επόμενη διαμόρφωση του UVMS από το ήδη υπάρχον σχέδιο ορίζεται ως "καλή μαντεψιά" και τροφοδοτείται ως είσοδος στον εξελικτικό αλγόριθμο. Δημιουργούνται τυχαίες υποψήφιες διαμορφώσεις γύρω από τη γειτονιά της "καλής μαντεψιάς" χωρίς να υπερβαίνονται τα όρια των αρθρώσεων. Η "καλή μαντεψιά" και οι τυχαία δημιουργημένες διαμορφώσεις συνθέτουν τον αρχικό πληθυσμό του εξελικτικού αλγορίθμου. Αν δεν υπάρχει ήδη κάποιο σχέδιο κίνησης, οι υποψήφιες διαμορφώσεις δημιουργούνται τυχαία στη γειτονιά της τρέχουσας διαμόρφωσης του οχήματος, που έχει οριστεί ως μια "καλή μαντεψιά". Τα όρια για τις πρώτες τρεις εικονικές, μεταφορικές αρθρώσεις ορίζονται ανάλογα με το πεδίο που βλέπουν οι αισθητήρες και δημιουργείται η αντίστοιχη Bump-επιφάνεια. Οι διαμορφώσεις που οδηγούν τα σημεία του συστήματος έξω από το πλέγμα ελέγχου της Bump-επιφάνειας θεωρούνται μη νόμιμες. Ο εξελικτικός αλγόριθμος έχει αναπτυχθεί για να μπορεί να βρίσκει μια σχεδόν βέλτιστη διαμόρφωση σε σχέση με τα κριτήρια βελτιστοποίησης του προβλήματος. Αυτή είναι μια επαναληπτική διαδικασία που τερματίζει όταν το όχημα φτάσει στην τελική διαμόρφωση, έχοντας επισκεφθεί όλα τα σημεία της καμπύλης (p i tp) Υλοποίηση του αλγορίθμου Ένας από τους κύριους στόχους της παρούσας εργασίας ήταν να σχεδιαστεί ένας γρήγορος αλγόριθμος σχεδιασμού κίνησης που θα μπορεί να χρησιμοποιήσει τις τελευταίες πληροφορίες του αισθητήρα. Ως εκ τούτου, το πιο χρονοβόρο μέρος του αλγορίθμου μεταφέρθηκε σε μια NVIDIA GPU για να επιτευχθεί υψηλή υπολογιστική απόδοση. Το ποσοστό του χρόνου που κατέχει η διαδικασία κατασκευής της Bump-επιφάνειας είναι περίπου το 87% του συνολικού χρόνου εκτέλεσης σύμφωνα με την ανάλυση του κώδικα. Έτσι, είναι σημαντικό να μειωθεί ο χρόνος εκτέλεσης αυτής της διαδικασίας, προκειμένου να ενισχυθεί η απόδοση του προγράμματος. Η διαδικασία κατασκευής της Bump-επιφάνειας μπορεί να παραλληλιστεί σε μεγάλο βαθμό. Αλγόριθμος κατασκευής της Bump-επιφάνειας Για να προσδιοριστεί γρήγορα αν ένα σημείο του συστήματος βρίσκεται μέσα σε εμπόδιο, δημιουργείται μια Bump-επιφάνεια που αναπαριστά το εργασιακό περιβάλλον του UVMS, χρησιμοποιώντας ένα γρήγορο παράλληλο αλγόριθμο. Παράγεται ένα πλέγμα σημείων ελέγχου με βήμα d και η τιμή της τέταρτης διάστασης κάθε σημείου ελέγχου υπολογίζεται στη GPU. Τα εμπόδια που βρίσκονται στο εσωτερικό του χώρου εργασίας μετατρέπονται πολύ γρήγορα σε ένα σύνολο από τετράεδρα χρησιμοποιώντας έναν 3-Δ αλγόριθμο τριγωνοποίησης Delaunay [115] και η παράλληλη μέθοδος δίνει τιμή στην τέταρτη διάσταση κάθε σημείου ελέγχου της Bump-επιφάνειας. Τα τετράεδρα που προέκυψαν για ένα εμπόδιο με σχήμα σωλήνα απεικονίζονται στο κάτω μέρος του Σχήματος Στα πειράματά μας χρησιμοποιήθηκε ένα πλέγμα από σημεία ελέγχου με μεταβλητό μήκος (L) και βήμα (d). Ανάλογα με το βήμα και το μήκος του πλέγματος, ο συνολικός αριθμός των σημείων ελέγχου (S) δίνεται από τον τύπο: S = ( L d + 1)3 (5.13)

110 102ΚΕΦΑΛΑΙΟ 5. ΕΥΡΕΣΗ ΣΧΕΔΙΟΥ ΚΙΝΗΣΗΣ ΑΥΤΟΝΟΜΟΥ ΥΠΟΒΡΥΧΙΟΥ ΟΧΗΜΑΤΟΣ (αʹ) Το πλέγμα των σημείων ελέγχου (βʹ) Τριγωνοποιημένο εμπόδιο Σχήμα 5.10: Πλέγμα σημείων ελέγχου και τριγωνοποιημένο εμπόδιο

111 5.8. ΜΕΘΟΔΟΣ ΤΟΠΙΚΟΥ ΣΧΕΔΙΑΣΜΟΥ ΚΙΝΗΣΗΣ 103 Δεδομένου ότι όλα τα εμπόδια που βρίσκονται στο εσωτερικό της Bump-επιφάνειας μετατρέπονται σε εκατοντάδες τετράεδρα το καθένα και ότι το S μπορεί να είναι έως και αρκετές χιλιάδες, η απόφαση ήταν να ανατεθεί σε κάθε μπλοκ νημάτων ο υπολογισμός της τιμής BS 4 για ένα σημείο ελέγχου. Κάθε νήμα ελέγχει αν το σημείο ελέγχου βρίσκεται μέσα σε ένα τετράεδρο του εμποδίου. Με τον τρόπο αυτό, ο αριθμός των νημάτων σε κάθε μπλοκ (blockdim.x) ισούται με τα τετράεδρα που υπάρχουν (Εξ. 5.14). blockdim.x = τετράεδρα εμποδίου (5.14) Επιπλέον, σε κάθε κατεύθυνση του πλέγματος πυρήνα (griddim.x, griddim.y, griddim.z) ο αριθμός των μπλοκ που πρόκειται να εκτελεστεί είναι ίσος με τον αριθμό των σημείων ελέγχου σε κάθε κατεύθυνση (Εξ. 5.15). griddim.x = griddim.y = griddim.z = ( L d + 1) (5.15) Στο Σχήμα 5.10 απεικονίζεται το πλέγμα των σημείων ελέγχου μαζί με το βήμα (d) και το μήκος (L). Επίσης απεικονίζεται ένα εμπόδιο σε σχήμα σωλήνα με το τριγωνοποιημένο αποτέλεσμα (κάτω εικόνα). Τα σημεία ελέγχου που βρίσκονται στον ελεύθερο χώρο απεικονίζονται με πράσινα "*", ενώ εκείνα που είναι μέσα στο εμπόδιο απεικονίζονται με κόκκινο χρώμα (επάνω εικόνα). Η διαδικασία, που ονομάζεται αλγόριθμος z-τιμής, περιγράφεται εν συντομία στον ψευδοκώδικα στον Αλγόριθμο 5.1 και περιγράφει τα βήματα προκειμένου να υπολογιστεί η τέταρτη διάσταση (BS 4 ) κάθε σημείου ελέγχου. Οι συντεταγμένες κάθε σημείου ελέγχου μεταφέρονται από την κύρια στην κοινόχρηστη μνήμη, δεδομένου ότι χρησιμοποιούνται πολλές φορές και ότι η κοινόχρηστη μνήμη είναι ταχύτερη. Στη συνέχεια, κάθε νήμα υπολογίζει τις Barycentric συντεταγμένες του σημείου ελέγχου και αποφασίζει αν είναι μέσα σε ένα συγκεκριμένο τετράεδρο. Αυτό φαίνεται στο διάνυσμα I_local με τιμή μηδέν (δεν είναι στο εσωτερικό) ή τιμή ένα (είναι στο εσωτερικό). Όταν όλα τα νήματα του μπλοκ φθάσουν σε αυτό το σημείο, το συνολικό άθροισμα του διανύσματος I_local υπολογίζεται με λειτουργία μείωσης αθροίσματος [84]. Το τελικό αποτέλεσμα (BS 4 ) μεταφέρεται στην κύρια μνήμη της κάρτας και στη συνέχεια πίσω στην κύρια μνήμη του υπολογιστή Υλοποίηση εξελικτικού αλγόριθμου Για την αναζήτηση του βέλτιστου σχεδίου κίνησης υλοποιήθηκε ένας εξελικτικός αλγόριθμος. Η αναζήτηση για μια νέα διαμόρφωση εξαρτάται από το στήσιμο του UVMS και είναι σε γενικές γραμμές ένα πολυδιάστατο πρόβλημα, δεδομένου ότι ο αριθμός των διαστάσεων εξαρτάται από την διαμόρφωση του UVMS και στις περισσότερες περιπτώσεις, το UVMS έχει πάνω από 12-β.ε. Ο προκύπτον χώρος διαμορφώσεων 12-β.ε. καθιστά τη χρήση του εξελικτικού αλγορίθμου κατάλληλη. Τα χρωμοσώματα που συνθέτουν τον πληθυσμό του αλγορίθμου είναι κατασκευασμένα έτσι ώστε να αντιπροσωπεύουν μια υποψήφια διαμόρφωση c i. Το μήκος του χρωμοσώματος εξαρτάται από τους β.ε. του UVMS. Στην παρούσα εργασία χρησιμοποιήθηκε η πραγματική κωδικοποίηση. Ο αρχικός πληθυσμός δίνεται από: g init = [c 1 c 2... c pop ] (5.16)

112 104ΚΕΦΑΛΑΙΟ 5. ΕΥΡΕΣΗ ΣΧΕΔΙΟΥ ΚΙΝΗΣΗΣ ΑΥΤΟΝΟΜΟΥ ΥΠΟΒΡΥΧΙΟΥ ΟΧΗΜΑΤΟΣ shared float b_local[]; // Coordinates of the control point shared int I_local[]; int control_point blockidx.x + griddim.x (blockidx.y + griddim.y blockidx.z); if threadidx.x = 0 then b_local[x, y, z] b_global[x, y, z]; // transfer from global to shared memory end I_local[threadIdx.x] 0; syncthreads(); if threadidx.x < number of tetrahedrons then calculate the Barycentric coordinates; if all Barycentric coordinates are greater or equal to 0 then the control point is inside the tetrahedron; I_local[threadIdx.x] 1; end end syncthreads(); f ind the sum of vector I_local with a reduction operation; if threadidx.x = 0 then if sum! = 0 then BS4[control_point] 1; // The control point is inside the obstacle end else BS4[control_point] 0; // The control point is outside the obstacle end end Algorithm 5.1: Αλγόριθμος z-τιμής

113 5.8. ΜΕΘΟΔΟΣ ΤΟΠΙΚΟΥ ΣΧΕΔΙΑΣΜΟΥ ΚΙΝΗΣΗΣ 105 όπου το pop δηλώνει το μέγεθος του πληθυσμού. Ο αρχικός πληθυσμός δημιουργείται τυχαία στη γειτονιά μιας "καλής-μαντεψιάς" τηρώντας τα όρια των αρθρώσεων. Τα χρωμοσώματα αξιολογούνται με βάση την Εξίσωση 5.12 με σκοπό την μεγιστοποίηση της αξίας της f obj. Για την παραγωγή της νέας γενιάς επιλέχθηκαν η επιλογή τουρνουά με μέγεθος 2 και ο τελεστής διασταύρωσης ενός σημείου. Στη φάση της μετάλλαξης επιλέγονται τυχαία γονίδια σύμφωνα με την πιθανότητα μετάλλαξης και οι τιμές τους αλλάζουν επίσης τυχαία πάντα τηρώντας το όριο της αντίστοιχης άρθρωσης. Προκειμένου να αυξηθεί η απόδοση του αλγορίθμου χρησιμοποιήθηκε η διαδικασία του ελιτισμού, κρατώντας στον πληθυσμό τα καλύτερα χρωμοσώματα σε ποσοστό 5% επί του μεγέθους του συνολικού πληθυσμού, αν η νέα γενιά δεν έχει ήδη δημιουργήσει ένα καλύτερο χρωμόσωμα. Για τη μείωση του υπολογιστικού χρόνου μια σειρά από κριτήρια τερματισμού έχουν επίσης εισαχθεί. Τα κριτήρια αυτά θα μπορούσαν να ποικίλουν ανάλογα με τις απαιτήσεις της αποστολής. Εδώ, χρησιμοποιήσαμε το σφάλμα θέσης (D) και την επιπεδότητα (F ) ως κριτήρια τερματισμού. Ο αλγόριθμος τερματίζει αν στην τρέχουσα γενιά, τα όρια της απόστασης και της επιπεδότητας D thres και F thres, επιτευχθούν. Θα πρέπει να σημειωθεί ότι το F thres πρέπει να ισούται με μηδέν για μια διαμόρφωση χωρίς συγκρούσεις ενώ το D thres μπορεί να ποικίλλει ανάλογα με τις απαιτήσεις της αποστολής. Για το δεδομένο πρόβλημα το D thres ορίστηκε σε 1,05 που αντιστοιχεί σε τιμή σφάλματος απόστασης 4,93 εκατοστά Αξιολόγηση της μεθόδου - Αποτελέσματα Κατασκευή Bump-επιφάνειας Ένας κρίσιμος παράγοντας για την αξιολόγηση της προτεινόμενης μεθόδου είναι ο χρόνος που απαιτείται για την κατασκευή της Bump-επιφάνειας. Προκειμένου να μπορεί να βοηθήσει σε εφαρμογές πραγματικού χρόνου, για δυναμικά ή ακόμη και άγνωστα περιβάλλοντα, ο αλγόριθμος πρέπει να είναι σε θέση να κατασκευάζει και να ενημερώνει την Bump-επιφάνεια σε ρυθμό κοντά στον ρυθμό ανανέωσης των αισθητήρων. Χρησιμοποιώντας ως μεταβλητές το βήμα (d) και το μήκος του πλέγματος των σημείων ελέγχου της επιφάνειας (L), στον Πίνακα 5.4 παρουσιάζονται οι χρόνοι εκτέλεσης της ρουτίνας κατασκευής της Bump-επιφάνειας. Ο αλγόριθμος είναι γραμμένος στη γλώσσα προγραμματισμού C++ και η εφαρμογή της CPU είναι μονονηματική. Ο υπολογιστής που έγιναν τα πειράματα έχει έναν επεξεργαστή Core i7 της Intel στα 3.40GHz, μνήμη 16GB και ένα σκληρό δίσκο SSD. Η GPU που χρησιμοποιήθηκε είναι μια GTX580 GeForce με έκδοση CUDA 5.5 και υπολογιστικής δυνατότητας 2.0. Οι χρόνοι που απεικονίζονται είναι ο μέσος όρος δέκα εκτελέσεων για κάθε σύνολο μεταβλητών. Θα πρέπει να σημειωθεί ότι ο υπολογιστικός χρόνος εξαρτάται από την πολυπλοκότητα του περιβάλλοντος. Η υλοποίηση σε GPU μειώνει τον υπολογιστικό χρόνο κατά πολύ κάτι που ήταν ένας από τους κύριους στόχους μας. Θα πρέπει να σημειωθεί ότι, ακόμη και στην περίπτωση των 6 μ. μήκους πλέγματος και με βήμα 0.1 ( σημεία ελέγχου), η Bumpεπιφάνεια παράγεται σε λιγότερο από 1 δευτερόλεπτο και οι τιμές επιτάχυνσης παραμένουν στα ίδια επίπεδα με την αύξηση του μεγέθους του προβλήματος.

114 106ΚΕΦΑΛΑΙΟ 5. ΕΥΡΕΣΗ ΣΧΕΔΙΟΥ ΚΙΝΗΣΗΣ ΑΥΤΟΝΟΜΟΥ ΥΠΟΒΡΥΧΙΟΥ ΟΧΗΜΑΤΟΣ step d = 0.2 step d = 0.1 Grid length L (m) CPU(s) GPU(s) Speedup CPU(s) GPU(s) Speedup Πίνακας 5.4: Χρόνος εκτέλεσης κατασκευής Bump-επιφάνειας we i Πίνακας 5.5: Συντελεστές βάρους MJD Παράμετροι εξελικτικού αλγορίθμου Στους Πίνακες 5.5 και 5.6, φαίνονται οι συντελεστές βάρους που εφαρμόζονται για κάθε άρθρωση του UVMS, το μήκος και το βήμα του δικτύου σημείων ελέγχου που χρησιμοποιήθηκαν για όλα τα πειράματα. Στο Σχήμα 5.11 απεικονίζεται το γράφημα σύγκλισης του εξελικτικού αλγορίθμου. Τα αποτελέσματα που εμφανίζονται ελήφθησαν με βάρη w 1 = 0.2, w 2 = 0.4, w 3 = 0.4 και K = MJD. Οι παράμετροι του εξελικτικού αλγορίθμου είναι 0.35 πιθανότητα διασταύρωσης και πιθανότητα μετάλλαξης. Αν και το διάγραμμα σύγκλισης εξαρτάται σε μεγάλο βαθμό από το αρχικό seed της γεννήτριας τυχαίων αριθμών και τις πιθανότητες διασταύρωσης και μετάλλαξης, μπορούμε να παρατηρήσουμε ότι το 256 είναι το πιο κατάλληλο μέγεθος πληθυσμού. Και για τα δύο μεγέθη πληθυσμού, 128 και 256, ο αλγόριθμος συγκλίνει μετά από περίπου είκοσι γενιές. Το μεγαλύτερο μέγεθος πληθυσμού (pop = 512) αποτυγχάνει να επιτύχει μια καλύτερη λύση για τον δεδομένο αριθμό γενιών αν και η τιμή της f obj αυξάνει συνεχώς και μπορεί να οδηγήσει σε καλύτερα αποτελέσματα για μεγαλύτερο αριθμό γενιών. Δεδομένου ότι ο εξελικτικός αλγόριθμος τρέχει στη CPU, μια αύξηση στον αριθμό γενιών θα οδηγούσε σε υψηλότερο υπολογιστικό χρόνο. Ως εκ τούτου, για μέγεθος πληθυσμού επιλέχθηκε το 256 στα ακόλουθα δοκιμαστικά σενάρια. Αποτελέσματα σχεδιασμού κίνησης Για να αξιολογήσουμε τον αλγόριθμο, δημιουργήσαμε ένα σενάριο στο οποίο χρησιμοποιήθηκε ένα μοντέλο UVMS με βραχίονα 6 β.ε. προσαρτημένο στην εμπρόσθια όψη του. Το σενάριο αποτελείται από μια αποστολή ελέγχου σε μια δομή σωλήνα, όπου το άκρο του βραχίονα πρέπει να παρακολουθεί από κοντά την συγκόλληση στη διασταύρωση των σωλήνων. Η καμπύλη συγκόλλησης προσεγγίζεται από l = 5 σημεία. Το περιβάλλον του προβλήματος απεικονίζεται στο Σχήμα Το UVMS ορίζεται από Μήκος πλέγματος (L) 4.5 Βήμα (d) 0.1 Πίνακας 5.6: Μήκος πλέγματος και βήμα

115 5.8. ΜΕΘΟΔΟΣ ΤΟΠΙΚΟΥ ΣΧΕΔΙΑΣΜΟΥ ΚΙΝΗΣΗΣ 107 Σχήμα 5.11: Σύγκλιση εξελικτικού αλγορίθμου Μήκος Πλάτος Ύψος Άρθρωση 1 Άρθρωση 2 Άρθρωση μ 1.2 μ 0.8 μ 0.2 μ 0.5 μ 0.5 μ Πίνακας 5.7: Χαρακτηριστικά του UVMS (m = 20) σημεία συστήματος που λαμβάνονται στην εξωτερική επιφάνεια της βάσης και του βραχίονα. Ένα σημείο συστήματος συνδέεται επίσης με το άκρο του βραχίονα και χρησιμοποιείται για το σφάλμα προσέγγισης της καμπύλης. Στον πίνακα 5.7 φαίνονται τα χαρακτηριστικά του UVMS. Σχεδιασμός κίνησης χωρίς προϋπάρχον σχέδιο Ως πρώτο σενάριο, ο αλγόριθμος καλείται να βρει ένα έγκυρο σχέδιο κίνησης, προκειμένου να εκτελέσει την αποστολή που περιγράφεται παραπάνω. Η Bump-επιφάνεια που αναπαριστά το περιβάλλον εργασίας ενημερώνεται συνεχώς ώστε να παρέχει στον αλγόριθμο πληροφορίες σχετικά με τα εμπόδια. Το σχέδιο που επιτυγχάνεται παρουσιάζεται στα Σχήματα 5.13 και Για το σενάριο αυτό, η επίτευξη της επιθυμητής ακρίβειας στη θέση και η αποφυγή σύγκρουσης υπολογίζονται με K = M JD, όρος που βοηθάει στην ελάχιστη χρησιμοποίηση των κινητήρων της βάσης (Πίνακας 5.5). Οι τελικές διαμορφώσεις του σχεδίου κίνησης δίνονται στον Πίνακα 5.8 και οι αντίστοιχες τιμές βάρους για την αντικειμενική συνάρτηση δίνονται στον Πίνακα 5.9. Μπορεί να παρατηρηθεί ότι το άκρο του βραχίονα ακολουθεί πολύ κοντά την καμπύλη συγκόλλησης, δεδομένου ότι φθάνει όλα τα συνεχόμενα σημεία εργασίας, ενώ όλα τα σημεία συστήματος βρίσκονται στον ελεύθερο χώρο σε όλο το σχέδιο κίνησης. Ο όρος MJD που χρησιμοποιείται περιορίζει την κίνηση της βάσης όσο αυτό είναι δυνατόν, όμως η επίδρασή του θα φανεί καλύτερα σε ακόλουθη υπο-ενότητα.

116 108ΚΕΦΑΛΑΙΟ 5. ΕΥΡΕΣΗ ΣΧΕΔΙΟΥ ΚΙΝΗΣΗΣ ΑΥΤΟΝΟΜΟΥ ΥΠΟΒΡΥΧΙΟΥ ΟΧΗΜΑΤΟΣ (αʹ) (βʹ) Σχήμα 5.12: Περιβάλλον σεναρίου Σχήμα 5.13: Αποτέλεσμα σχεδίου κίνησης χωρίς υπάρχον σχέδιο, άποψη από πάνω

117 5.8. ΜΕΘΟΔΟΣ ΤΟΠΙΚΟΥ ΣΧΕΔΙΑΣΜΟΥ ΚΙΝΗΣΗΣ 109 Σχήμα 5.14: Αποτέλεσμα σχεδίου κίνησης χωρίς υπάρχον σχέδιο, άποψη από πλάγια θ1 θ2 θ3 θ4 θ5 θ6 θ7 θ8 θ9 θ10 θ11 θ Πίνακας 5.8: Τελικές διαμορφώσεις χωρίς υπάρχον σχέδιο w 1 - Επιπεδότητα w 2 - Απόσταση w 3 - MJD Πίνακας 5.9: Συντελεστές βάρους της f obj

118 110ΚΕΦΑΛΑΙΟ 5. ΕΥΡΕΣΗ ΣΧΕΔΙΟΥ ΚΙΝΗΣΗΣ ΑΥΤΟΝΟΜΟΥ ΥΠΟΒΡΥΧΙΟΥ ΟΧΗΜΑΤΟΣ Σχήμα 5.15: Υπάρχον σχέδιο κίνησης θ1 θ2 θ3 θ4 θ5 θ6 θ7 θ8 θ9 θ10 θ11 θ Πίνακας 5.10: Διαμορφώσεις του υπάρχοντος σχεδίου κίνησης Σχεδιασμός κίνησης με προϋπάρχον σχέδιο Ως δεύτερο σενάριο, για την περίπτωση που υπάρχει ένα σχέδιο κίνησης και το περιβάλλον έχει αλλάξει με τέτοιο τρόπο ώστε η εφαρμογή του σχεδίου κίνησης να μην είναι δυνατή, ο αλγόριθμος πρέπει να υπολογίζει ένα τροποποιημένο σχέδιο. Το σχέδιο αυτό θα πρέπει να αντιμετωπίσει τις αλλαγές μέσα στο περιβάλλον εργασίας. Το ήδη υπάρχον σχέδιο κίνησης απεικονίζεται στο Σχήμα 5.15 και οι αντίστοιχες διαμορφώσεις δίνονται στον Πίνακα Η ύπαρξη του νέου εμποδίου, ενός εξάεδρου με μέγεθος 1m x 2.5m x 1.5m κατά μήκος των αξόνων x, y και z και με κέντρο το [5.75, 2.5, 0.75], αλλάζει το προφίλ της εγκατάστασης. Το UVMS δεν θα είναι σε θέση να εφαρμόσει τις τελευταίες δύο διαμορφώσεις του ήδη υπάρχοντος σχεδίου κίνησης, δεδομένου ότι θα οδηγηθεί σε σύγκρουση. Ο προτεινόμενος αλγόριθμος σχεδιασμού κίνησης καταφέρνει να υπολογίσει ένα βελτιστοποιημένο τροποποιημένο σχέδιο κίνησης που απεικονίζεται στα Σχήματα 5.16 και Οι αντίστοιχες διαμορφώσεις του σχεδίου κίνησης δίνονται στον Πίνακα Στον Πίνακα 5.12 δίνονται επίσης οι συντελεστές βάρους της αντικειμενικής συνάρτησης.

119 5.8. ΜΕΘΟΔΟΣ ΤΟΠΙΚΟΥ ΣΧΕΔΙΑΣΜΟΥ ΚΙΝΗΣΗΣ 111 Σχήμα 5.16: Αποτέλεσμα σχεδίου κίνησης με υπάρχον σχέδιο, άποψη από πάνω Σχήμα 5.17: Αποτέλεσμα σχεδίου κίνησης με υπάρχον σχέδιο, άποψη από πλάγια θ1 θ2 θ3 θ4 θ5 θ6 θ7 θ8 θ9 θ10 θ11 θ Πίνακας 5.11: Τελικές διαμορφώσεις του σχεδίου κίνησης με ήδη υπάρχον σχέδιο

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

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

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

Παράλληλα Συστήματα. Γιώργος Δημητρίου. Ενότητα 3 η : Παράλληλη Επεξεργασία. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

Παράλληλα Συστήματα. Γιώργος Δημητρίου. Ενότητα 3 η : Παράλληλη Επεξεργασία. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής Γιώργος Δημητρίου Ενότητα 3 η : Παράλληλη Επεξεργασία Παράλληλες Αρχιτεκτονικές Παράλληλο σύστημα είναι ένα σύνολο από επεξεργαστικά στοιχεία (processing elements) τα οποία: συνεργάζονται για γρήγορη επίλυση

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

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

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

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

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

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

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

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

ΣΧΕΔΙΑΣΜΟΣ ΚΙΝΗΣΗΣ ΚΑΙ ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΕΡΓΑΣΙΩΝ ΣΕ ΒΙΟΜΗΧΑΝΙΚΑ ΠΕΡΙΒΑΛΛΟΝΤΑ ΣΧΕΔΙΑΣΜΟΣ ΚΙΝΗΣΗΣ ΚΑΙ ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΕΡΓΑΣΙΩΝ ΣΕ ΒΙΟΜΗΧΑΝΙΚΑ ΠΕΡΙΒΑΛΛΟΝΤΑ Ηλίας Κ. Ξυδιάς 1, Ανδρέας Χ. Νεάρχου 2 1 Τμήμα Μηχανικών Σχεδίασης Προϊόντων & Συστημάτων, Πανεπιστήμιο Αιγαίου, Σύρος

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

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

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

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

ΠΕΡΙΕΧΟΜΕΝΑ. 1.1. Υλικό και Λογισμικό.. 1 1.2 Αρχιτεκτονική Υπολογιστών.. 3 1.3 Δομή, Οργάνωση και Λειτουργία Υπολογιστών 6

ΠΕΡΙΕΧΟΜΕΝΑ. 1.1. Υλικό και Λογισμικό.. 1 1.2 Αρχιτεκτονική Υπολογιστών.. 3 1.3 Δομή, Οργάνωση και Λειτουργία Υπολογιστών 6 ΠΕΡΙΕΧΟΜΕΝΑ 1. Εισαγωγή στην Δομή, Οργάνωση, Λειτουργία και Αξιολόγηση Υπολογιστών 1.1. Υλικό και Λογισμικό.. 1 1.2 Αρχιτεκτονική Υπολογιστών.. 3 1.3 Δομή, Οργάνωση και Λειτουργία Υπολογιστών 6 1.3.1 Δομή

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

Τυπικά θέματα εξετάσεων. ΠΡΟΣΟΧΗ: Οι ερωτήσεις που παρατίθενται ΔΕΝ καλύπτουν την πλήρη ύλη του μαθήματος και παρέχονται απλά ενδεικτικά

Τυπικά θέματα εξετάσεων. ΠΡΟΣΟΧΗ: Οι ερωτήσεις που παρατίθενται ΔΕΝ καλύπτουν την πλήρη ύλη του μαθήματος και παρέχονται απλά ενδεικτικά ΤΕΙ Κεντρικής Μακεδονίας Τμήμα Μηχανικών Πληροφορικής ΤΕ Μεταπτυχιακό Πρόγραμμα Τηλεπικοινωνιών & Πληροφορικής Μάθημα : 204a Υπολογιστική Ευφυία Μηχανική Μάθηση Καθηγητής : Σπύρος Καζαρλής Ενότηα : Εξελικτική

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

ΥΠΟΛΟΓΙΣΤΙΚΗ ΧΗΜΕΙΑ ΜΕ ΕΦΑΡΜΟΓΕΣ ΣΕ ΜΟΡΙΑ, ΥΛΙΚΑ, ΠΕΡΙΒΑΛΛΟΝ

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

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

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

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

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

Εισαγωγή στην Αρχιτεκτονική Η/Υ

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

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

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

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

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

ΥΠΟΛΟΓΙΣΤΙΚΗ ΧΗΜΕΙΑ ΜΕ ΕΦΑΡΜΟΓΕΣ ΣΕ ΜΟΡΙΑ, ΥΛΙΚΑ, ΠΕΡΙΒΑΛΛΟΝ. Ι ΑΣΚΟΝΤΕΣ: Μαρία Κανακίδου, Σταύρος Φαράντος, Γιώργος Φρουδάκης

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

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

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

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

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

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

Αρχιτεκτονική Υπολογιστών Αρχιτεκτονική Υπολογιστών Παραλληλισμός Βασικές Πηγές: Αρχιτεκτονική Υπολογιστών: μια Δομημένη Προσέγγιση, Α. Tanenbaum, Vrije Universiteit, Amsterdam. Computer Architecture and Engineering, K. Asanovic,

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

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

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

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

Μία μέθοδος προσομοίωσης ψηφιακών κυκλωμάτων Εξελικτικής Υπολογιστικής

Μία μέθοδος προσομοίωσης ψηφιακών κυκλωμάτων Εξελικτικής Υπολογιστικής Μία μέθοδος προσομοίωσης ψηφιακών κυκλωμάτων Εξελικτικής Υπολογιστικής Βασισμένο σε μια εργασία των Καζαρλή, Καλόμοιρου, Μαστοροκώστα, Μπαλουκτσή, Καλαϊτζή, Βαλαή, Πετρίδη Εισαγωγή Η Εξελικτική Υπολογιστική

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

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

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

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

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

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

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

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

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

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

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

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

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

Το μάθημα συνοπτικά (1) Το μάθημα συνοπτικά (2) Τι είναι ένα υπολογιστικό σύστημα ;

Το μάθημα συνοπτικά (1) Το μάθημα συνοπτικά (2) Τι είναι ένα υπολογιστικό σύστημα ; Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών 2017-18 Εισαγωγή στην Αρχιτεκτονική (θεμελιώδεις αρχές λειτουργίας των υπολογιστών) http://mxstef.gthub.o/courses/comparch/ Μ.Στεφανιδάκης

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

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

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

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

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

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

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

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

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

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

ΣΥΣΤΗΜΑΤΑ ΠΑΡΑΛΛΗΛΗΣ ΕΠΕΞΕΡΓΑΣΙΑΣ 9o εξάμηνο ΗΜΜΥ, ακαδημαϊκό έτος

ΣΥΣΤΗΜΑΤΑ ΠΑΡΑΛΛΗΛΗΣ ΕΠΕΞΕΡΓΑΣΙΑΣ 9o εξάμηνο ΗΜΜΥ, ακαδημαϊκό έτος ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΞΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ http://www.cslab.ece.ntua.gr ΣΥΣΤΗΜΑΤΑ

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

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

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

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

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

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

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

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

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

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

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ << ΜΕΛΕΤΗ ΤΗΣ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ CUDA ΚΑΙ ΠΑΡΑΛΛΗΛΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΡΤΩΝ GPU ΤΗΣ NVIDIA >> Αρ. Μητρώου: 04/2519

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ << ΜΕΛΕΤΗ ΤΗΣ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ CUDA ΚΑΙ ΠΑΡΑΛΛΗΛΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΡΤΩΝ GPU ΤΗΣ NVIDIA >> Αρ. Μητρώου: 04/2519 ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ > Της φοιτήτριας ΚΕΛΑΪΔΗ ΑΙΜΙΛΙΑ Επιβλέπων καθηγητής ΔΙΑΜΑΝΤΑΡΑΣ ΚΩΝ/ΝΟΣ Αρ. Μητρώου: 04/2519 Θεσσαλονίκη

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

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

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

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

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

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

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

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

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

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

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

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

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

Λειτουργικά Συστήματα Ι. Καθηγήτρια Παπαδάκη Αναστασία

Λειτουργικά Συστήματα Ι. Καθηγήτρια Παπαδάκη Αναστασία Λειτουργικά Συστήματα Ι Καθηγήτρια Παπαδάκη Αναστασία 2013 1 Ηλεκτρονικός Υπολογιστής αποτελείται: 1. Από Υλικό Hardware (CPUs, RAM, Δίσκοι), & 2. Λογισμικό - Software Και μπορεί να εκτελέσει διάφορες

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

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

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

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

ΕΠΙΣΤΗΜΟΝΙΚΟΙ ΥΠΟΛΟΓΙΣΜΟΙ: Μια ενδιαφέρουσα σταδιοδρομία

ΕΠΙΣΤΗΜΟΝΙΚΟΙ ΥΠΟΛΟΓΙΣΜΟΙ: Μια ενδιαφέρουσα σταδιοδρομία ΕΠΙΣΤΗΜΟΝΙΚΟΙ ΥΠΟΛΟΓΙΣΜΟΙ: Μια ενδιαφέρουσα σταδιοδρομία N. Μισυρλής (e-mail: nmis@di.uoa.gr) Τμήμα Πληροφορικής και Τηλεπικοινωνιών Πανεπιστήμιο Αθηνών Parallel Scientific Computing Laboratory (PSCL)

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

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

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

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

RobotArmy Περίληψη έργου

RobotArmy Περίληψη έργου RobotArmy Περίληψη έργου Στην σημερινή εποχή η ανάγκη για αυτοματοποίηση πολλών διαδικασιών γίνεται όλο και πιο έντονη. Συνέχεια ακούγονται λέξεις όπως : βελτιστοποίηση ποιότητας ζωής, αυτοματοποίηση στον

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

Εισαγωγή στην Επιστήμη των Υπολογιστών

Εισαγωγή στην Επιστήμη των Υπολογιστών Εισαγωγή στην Επιστήμη των Υπολογιστών Ενότητα 3: Χειρισμός δεδομένων, 2ΔΩ Τμήμα: Αγροτικής Οικονομίας & Ανάπτυξης Διδάσκων: Θεόδωρος Τσιλιγκιρίδης Μαθησιακοί Στόχοι Η Ενότητα 3 διαπραγματεύεται θέματα

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

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον κεφ.6 Εισαγωγή στον Προγραμματισμό

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον κεφ.6 Εισαγωγή στον Προγραμματισμό Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον κεφ.6 Εισαγωγή στον Προγραμματισμό Μάριος Αραποστάθης Καθηγητής πληροφορικής Βαρβάκειου Λύκειου http://users.sch.gr/mariosarapostathis 6.1 Η έννοια του

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

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

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

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

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

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

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

Διαφορές single-processor αρχιτεκτονικών και SoCs

Διαφορές single-processor αρχιτεκτονικών και SoCs 13.1 Τα συστήματα και η επικοινωνία μεταξύ τους γίνονται όλο και περισσότερο πολύπλοκα. Δεν μπορούν να περιγραφούνε επαρκώς στο επίπεδο RTL καθώς αυτή η διαδικασία γίνεται πλέον αρκετά χρονοβόρα. Για αυτό

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

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

Λειτουργικά Συστήματα (Λ/Σ) Λειτουργικά Συστήματα (Λ/Σ) Διαχείριση Κεντρικής Μονάδας Επεξεργασίας (CPU) Βασίλης Σακκάς 4/12/2013 1 Xρονοδρομολόγηση Διεργασιών 1 Η χρονοδρομολόγηση σε ένα Λ/Σ αποφασίζει ποια διεργασία θα χρησιμοποιεί

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

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

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ www.cslab.ece.ntua.gr Συστήματα Παράλληλης

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

Κυκλωμάτων» Χειμερινό εξάμηνο

Κυκλωμάτων» Χειμερινό εξάμηνο «Σχεδιασμός Ολοκληρωμένων Κυκλωμάτων» Χειμερινό εξάμηνο 2016-2017 Εισαγωγή στα Συστήματα Ολοκληρωμένων Κυκλωμάτων Δρ. Παρασκευάς Κίτσος Επίκουρος Καθηγητής http://diceslab.cied.teiwest.gr E-mail: pkitsos@teimes.gr

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

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

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

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

Εισαγωγή στην Αρχιτεκτονική Η/Υ

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

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

Κεφ. 2 Θέματα Θεωρητικής Επιστήμης Υπολογιστών. Κοντογιάννης Βασίλειος ΠΕ19

Κεφ. 2 Θέματα Θεωρητικής Επιστήμης Υπολογιστών. Κοντογιάννης Βασίλειος ΠΕ19 Κεφ. 2 Θέματα Θεωρητικής Επιστήμης Υπολογιστών Κεφ. 2 Θεωρητική Επιστήμη Υπολογιστών 2.3.1.1 Έννοια προγράμματος Τι είναι πρόγραμμα και τι προγραμματισμός; Πρόγραμμα είναι το σύνολο εντολών που χρειάζεται

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

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

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

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

ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Α Γενικού Λυκείου (Μάθημα Επιλογής)

ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Α Γενικού Λυκείου (Μάθημα Επιλογής) ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Α Γενικού Λυκείου (Μάθημα Επιλογής) Σύγχρονα Υπολογιστικά Συστήματα τους υπερυπολογιστές (supercomputers) που χρησιμοποιούν ερευνητικά εργαστήρια τα μεγάλα συστήματα (mainframes)

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

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

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

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

Φουκαράκη Χρυσούλα - ΓΕΛ Γαζίου

Φουκαράκη Χρυσούλα - ΓΕΛ Γαζίου ΚΕΦΑΛΑΙΟ 1 Φουκαράκη Χρυσούλα - ΓΕΛ Γαζίου Υπολογιστικά συστήματα σχεδιάστηκαν για να καλύψουν συγκεκριμένες ανάγκες σε συγκεκριμένη χρονική στιγμή και βοηθούν στη συνολική πρόοδο της τεχνολογίας Φουκαράκη

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

ΑρχιτεκτονικήΥπολογιστών. Ι (ένα) Δημήτρης Γκιζόπουλος. Καθηγητής

ΑρχιτεκτονικήΥπολογιστών. Ι (ένα) Δημήτρης Γκιζόπουλος. Καθηγητής ΑρχιτεκτονικήΥπολογιστών Ι (ένα) Δημήτρης Γκιζόπουλος Καθηγητής Η Βασική Εξίσωση Χρόνος προγράμματος = = εντολές κύκλοι sec x x πρόγραμμα εντολή κύκλος Γενικά 2 Γενικά Δημήτρης Γκιζόπουλος, Καθηγητής http://www.di.uoa.gr/~dgizop

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

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

Εικονική Μνήμη (Virtual Μemory) ΗΥ 431 Αρχιτεκτονική Παραλλήλων Συστημάτων Διάλεξη 16 Εικονική Μνήμη (Virtual Μemory) Νίκος Μπέλλας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ Απλό πείραμα int *data = malloc((1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Εισαγωγή στις Αρχές της Επιστήμης των ΗΥ

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

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

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

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

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

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

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

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

ΜΕΛΕΤΗ ΣΧΕΔΙΑΣΗ ΕΦΑΡΜΟΓΗΣ ΣΕ ΥΠΟΛΟΓΙΣΤΙΚΟ ΝΕΦΟΣ (CLOUD COMPUTING) ΜΕ ΕΜΦΑΣΗ ΣΤΗΝ ΚΑΤΑΣΚΕΥΗ ΔΕΝΤΡΩΝ.

ΜΕΛΕΤΗ ΣΧΕΔΙΑΣΗ ΕΦΑΡΜΟΓΗΣ ΣΕ ΥΠΟΛΟΓΙΣΤΙΚΟ ΝΕΦΟΣ (CLOUD COMPUTING) ΜΕ ΕΜΦΑΣΗ ΣΤΗΝ ΚΑΤΑΣΚΕΥΗ ΔΕΝΤΡΩΝ. ΤΕΙ ΠΕΙΡΑΙΑ ΤΜΗΜΑ ΗΥΣ Θέμα: ΜΕΛΕΤΗ ΣΧΕΔΙΑΣΗ ΕΦΑΡΜΟΓΗΣ ΣΕ ΥΠΟΛΟΓΙΣΤΙΚΟ ΝΕΦΟΣ (CLOUD COMPUTING) ΜΕ ΕΜΦΑΣΗ ΣΤΗΝ ΚΑΤΑΣΚΕΥΗ ΔΕΝΤΡΩΝ. Εισηγητής: Δ. Ν. Καλλέργης, MSc. Φοιτήτρια: Κοντζοπούλου Παναγιώτα Εισαγωγή

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

2 ΟΥ και 7 ΟΥ ΚΕΦΑΛΑΙΟΥ

2 ΟΥ και 7 ΟΥ ΚΕΦΑΛΑΙΟΥ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 2 ΟΥ και 7 ΟΥ ΚΕΦΑΛΑΙΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ και ΔΟΜΗ ΑΚΟΛΟΥΘΙΑΣ 2.1 Να δοθεί ο ορισμός

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

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ. Άσκηση 5: Παράλληλος προγραμματισμός σε επεξεργαστές γραφικών

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ. Άσκηση 5: Παράλληλος προγραμματισμός σε επεξεργαστές γραφικών ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ www.cslab.ece.ntua.gr Συστήματα Παράλληλης

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

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

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

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

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

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

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

ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΜΗΧΑΝΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ. Πτυχιακή εργασία

ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΜΗΧΑΝΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ. Πτυχιακή εργασία ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΜΗΧΑΝΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ Πτυχιακή εργασία ΕΠΙΛΥΣΗ ΤΟΥ ΠΡΟΒΛΗΜΑΤΟΣ ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΜΕΤΑΔΟΣΗΣ ΣΕ ΑΣΥΡΜΑΤΑ ΔΙΚΤΥΑ ΜΕ ΣΥΣΚΕΥΕΣ ΔΙΑΚΡΙΤΩΝ ΤΙΜΩΝ ΙΣΧΥΟΣ ΜΕ ΤΗ ΧΡΗΣΗ

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

GPGPU. Grover. On Large Scale Simulation of Grover s Algorithm by Using GPGPU

GPGPU. Grover. On Large Scale Simulation of Grover s Algorithm by Using GPGPU GPGPU Grover 1, 2 1 3 4 Grover Grover OpenMP GPGPU Grover qubit OpenMP GPGPU, 1.47 qubit On Large Scale Simulation of Grover s Algorithm by Using GPGPU Hiroshi Shibata, 1, 2 Tomoya Suzuki, 1 Seiya Okubo

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

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

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

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

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

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

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

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

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

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

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

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

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

ΕΠΙΣΤΗΜΟΝΙΚΟΙ ΥΠΟΛΟΓΙΣΜΟΙ: Μια ενδιαφέρουσα σταδιοδρομία

ΕΠΙΣΤΗΜΟΝΙΚΟΙ ΥΠΟΛΟΓΙΣΜΟΙ: Μια ενδιαφέρουσα σταδιοδρομία ΕΠΙΣΤΗΜΟΝΙΚΟΙ ΥΠΟΛΟΓΙΣΜΟΙ: Μια ενδιαφέρουσα σταδιοδρομία N. Μισυρλής (e-mail: nmis@di.uoa.gr) Τμήμα Πληροφορικής και Τηλεπικοινωνιών Πανεπιστήμιο Αθηνών Parallel Scientific Computing Laboratory (PSCL)

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

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

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

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

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

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

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

- Εισαγωγή - Επίπεδα μνήμης - Ολοκληρωμένα κυκλώματα μνήμης - Συσκευασίες μνήμης προσωπικών υπολογιστών

- Εισαγωγή - Επίπεδα μνήμης - Ολοκληρωμένα κυκλώματα μνήμης - Συσκευασίες μνήμης προσωπικών υπολογιστών Μάθημα 4.5 Η Μνήμη - Εισαγωγή - Επίπεδα μνήμης - Ολοκληρωμένα κυκλώματα μνήμης - Συσκευασίες μνήμης προσωπικών υπολογιστών Όταν ολοκληρώσεις το μάθημα αυτό θα μπορείς: Να αναφέρεις τα κυριότερα είδη μνήμης

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

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

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

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

Το μάθημα συνοπτικά (1) Το μάθημα συνοπτικά (2) Τι είναι ένα υπολογιστικό σύστημα ;

Το μάθημα συνοπτικά (1) Το μάθημα συνοπτικά (2) Τι είναι ένα υπολογιστικό σύστημα ; Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών 2016-17 Εισαγωγή στην Αρχιτεκτονική (θεμελιώδεις αρχές λειτουργίας των υπολογιστών) http://mxstef.gthub.o/courses/comparch/ Μ.Στεφανιδάκης

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

Chapter 4 (1) Αξιολόγηση και κατανόηση της απόδοσης

Chapter 4 (1) Αξιολόγηση και κατανόηση της απόδοσης Chapter 4 (1) Αξιολόγηση και κατανόηση της απόδοσης Διαφάνειες διδασκαλίας από το πρωτότυπο αγγλικό βιβλίο (4 η έκδοση), μετάφραση: Καθ. Εφαρμογών Νικόλαος Πετράκης, Τμήματος Ηλεκτρονικών Μηχανικών του

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

Βασίλειος Κοντογιάννης ΠΕ19

Βασίλειος Κοντογιάννης ΠΕ19 Ενότητα1 Υλικό Λογισμικό και Εφαρμογές Κεφ1: Υλικό Υπολογιστών - Hardware Τι ονομάζουμε υλικό υπολογιστών; Με τον όρο υλικό (hardware) αναφερόμαστε σε οτιδήποτε έχει μια φυσική-υλική υπόσταση σε ένα υπολογιστικό

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

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

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

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

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

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

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

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

Λειτουργικά Συστήματα (ΗΥ321) Λειτουργικά Συστήματα (ΗΥ321) Διάλεξη 17: Χειρισμός Εισόδου - Εξόδου Συστήματα Εισόδου / Εξόδου: Το Υλικό Ε/Ε Μεγάλη ποικιλία συσκευών Ε/Ε Και μεγαλώνει Συνηθισμένες έννοιες: Πόρτα Δίαυλος Κοινό μέσο πρόσβασης

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

Βασικές Έννοιες Πληροφορικής

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

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 6 ΟΥ ΚΕΦΑΛΑΙΟΥ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ 6.1 Τι ονοµάζουµε πρόγραµµα υπολογιστή; Ένα πρόγραµµα

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

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

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

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

Ιεραρχία Μνήμης. Ιεραρχία μνήμης και τοπικότητα. Σκοπός της Ιεραρχίας Μνήμης. Κρυφές Μνήμες

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

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

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

Λειτουργικά Συστήματα Η/Υ Λειτουργικά Συστήματα Η/Υ Κεφάλαιο 7 «Διαχείριση Μνήμης» Διδάσκων: Δ. Λιαροκάπης Διαφάνειες: Π. Χατζηδούκας 1 Κύρια Μνήμη 1. Εισαγωγή 2. Βασική διαχείριση μνήμης 3. Μνήμη και πολυπρογραμματισμός 4. Τμηματοποίηση

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Τελικό επαναληπτικό διαγώνισμα Επιμέλεια: Δρεμούσης Παντελής

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

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

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

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

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

i Στα σύγχρονα συστήματα η κύρια μνήμη δεν συνδέεται απευθείας με τον επεξεργαστή

i Στα σύγχρονα συστήματα η κύρια μνήμη δεν συνδέεται απευθείας με τον επεξεργαστή Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών 2015-16 Τεχνολογίες Κύριας (και η ανάγκη για χρήση ιεραρχιών μνήμης) http://di.ionio.gr/~mistral/tp/comparch/ Μ.Στεφανιδάκης i Στα σύγχρονα

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

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

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

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

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

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

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

Παραλληλισμός Αλγορίθμων σε Κάρτες Γραφικών για Σχεδιασμό Κίνησης

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

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

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

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

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

Τεχνολογίες Κύριας Μνήμης

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

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

Κεφάλαιο Το υπολογιστικό σύστημα Η εξέλιξη του ανθρώπου πραγματοποιήθηκε χάρη στην ικανότητά στον χειρισμό εργαλείων.

Κεφάλαιο Το υπολογιστικό σύστημα Η εξέλιξη του ανθρώπου πραγματοποιήθηκε χάρη στην ικανότητά στον χειρισμό εργαλείων. Α Γενικού Λυκείου Κεφάλαιο 1 1.1 Το υπολογιστικό σύστημα Η εξέλιξη του ανθρώπου πραγματοποιήθηκε χάρη στην ικανότητά στον χειρισμό εργαλείων. Ιδιαίτερη θέση έχουν οι Υπολογιστικές συσκευές. Μηχανισμός

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