Παραλληλοποίηση αλγορίθµων επίλυσης γενικευµένων πεδίων ϱοής

Σχετικά έγγραφα
ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

Παράλληλη Επεξεργασία Εργαστηριακή Ασκηση Εαρινού Εξαµήνου 2008

προβλήµατα ανάλυσης ροής

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

Συνήθεις διαφορικές εξισώσεις προβλήματα οριακών τιμών

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΠΟΛΙΤΙΚΩΝ ΜΗΧΑΝΙΚΩΝ ΤΟΜΕΑΣ ΥΔΡΑΥΛΙΚΗΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΙΚΗΣ ΤΕΧΝΙΚΗΣ. Διάλεξη 3: Περιγραφή αριθμητικών μεθόδων (συνέχεια)

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΠΟΛΙΤΙΚΩΝ ΜΗΧΑΝΙΚΩΝ ΤΟΜΕΑΣ ΥΔΡΑΥΛΙΚΗΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΙΚΗΣ ΤΕΧΝΙΚΗΣ. Διάλεξη 2: Περιγραφή αριθμητικών μεθόδων

ΕΝΟΤΗΤΑ 2 η ΙΑΧΕΙΡΙΣΗ ΡΟΗΣ ΕΡΓΑΣΙΑΣ (WORKFLOW MANAGEMENT) 2.1 Εισαγωγή

«ΜΕΛΕΤΗ ΙΑΤΑΞΕΩΝ ΦΩΤΟΝΙΚΩΝ ΚΡΥΣΤΑΛΛΩΝ ΓΙΑ ΤΗΛΕΠΙΚΟΙΝΩΝΙΑΚΕΣ ΕΦΑΡΜΟΓΕΣ»

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

J-GANNO. Σύντοµη αναφορά στους κύριους στόχους σχεδίασης και τα βασικά χαρακτηριστικά του πακέτου (προέκδοση 0.9Β, Φεβ.1998) Χάρης Γεωργίου

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

Πιο συγκεκριμένα, η χρήση του MATLAB προσφέρει τα ακόλουθα πλεονεκτήματα.

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

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

WIRELESS SENSOR NETWORKS (WSN)

Επιστηµονικός Υπολογισµός Ι Ενότητα 1 - Εισαγωγή. Ευστράτιος Γαλλόπουλος

Παράλληλη Επεξεργασία

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

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

Εργασία για το μεταπτυχιακό μάθημα Παράλληλοι υπολογισμοί από τον φοιτητή Μουζακίδη Αλέξανδρο AM M 853

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

ΔΙΑΧΕΙΡΙΣΗ ΥΔΑΤΙΚΩΝ ΠΟΡΩΝ

ΕΝΟΤΗΤΑ III ΒΑΣΙΚΕΣ ΜΕΘΟ ΟΙ ΑΝΑΛΥΣΗΣ

ιεργασίες και Επεξεργαστές στα Κατανεµηµένων Συστηµάτων


ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΝΧΕΙΟ Σχολή Μηχανολόγων Μηχανικών Τομέας Ρευστών Εργαστήριο Θερμικών Στροβιλομηχανών. Διδακτορική Διατριβή

Στο στάδιο ανάλυσης των αποτελεσµάτων: ανάλυση ευαισθησίας της λύσης, προσδιορισµός της σύγκρουσης των κριτηρίων.

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

οµηµένος Εξελικτικός Αλγόριθµος

Τα κύρια σηµεία της παρούσας διδακτορικής διατριβής είναι: Η πειραµατική µελέτη της µεταβατικής συµπεριφοράς συστηµάτων γείωσης

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

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

Περίληψη. Υπερυπολογιστές. Υπολογιστικά προβλήµατα. TOP 500 (Ιούνιος 2007) TOP 500 (Ιούνιος 2009) Ε-85: Ειδικά Θέµατα Λογισµικού

ΠΑΡΑΛΛΗΛΗ ΕΠΕΞΕΡΓΑΣΙΑ

Κεφάλαια Εντολές επανάληψης. Τρεις εντολές επανάληψης. Επιλογή εντολής επανάληψης ΟΣΟ...ΕΠΑΝΑΛΑΒΕ. Σύνταξη στη ΓΛΩΣΣΑ

Μοντέλα. χαρακτηριστικά χωρίς να συνοδεύεται από λεπτοµέρειες.

Γουλή Ευαγγελία. 1. Εισαγωγή. 2. Παρουσίαση και Σχολιασµός των Εργασιών της Συνεδρίας

Αριθµητική Ανάλυση 1 εκεµβρίου / 43

Κεφάλαιο 6. Εισαγωγή στη µέθοδο πεπερασµένων όγκων επίλυση ελλειπτικών και παραβολικών διαφορικών εξισώσεων

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

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

Εισαγωγή στους Υπολογιστές

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

ΠΑΡΑΛΛΗΛΗ ΕΠΕΞΕΡΓΑΣΙΑ

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

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

Ελληνικό Ανοικτό Πανεπιστήµιο. Η Ανάλυση και ο Σχεδιασµός στην Ενοποιηµένη ιαδικασία. ρ. Πάνος Φιτσιλής

ΚΑΘΗΓΗΤΗΣ: Α.Γ. ΜΑΜΑΛΗΣ ΑΝΑΠΛΗΡΩΤΗΣ ΚΑΘΗΓΗΤΗΣ:.Ε. ΜΑΝΩΛΑΚΟΣ

Περίληψη ιπλωµατικής Εργασίας

ΑΛΓΟΡΙΘΜΟΙ. Τι είναι αλγόριθμος

Μηχανική ΙI Ροή στο χώρο των φάσεων, θεώρηµα Liouville

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

Σύνθεση Data Path. ιασύνδεσης. Μονάδες. Αριθµό Μονάδων. Τύπο Μονάδων. Unit Selection Unit Binding. λειτουργιών σε. Μονάδες. Αντιστοίχιση µεταβλητών &

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

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

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκή περίοδος

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

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

9. Συστολικές Συστοιχίες Επεξεργαστών

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

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

Αριθμητικές μέθοδοι σε ταλαντώσεις μηχανολογικών συστημάτων

Συστήµατα Παράλληλης Επεξεργασίας

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

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

Εισαγωγή στα Συστήματα Ψηφιακής Επεξεργασίας Σήματος

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Δομή Επανάληψης. Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD

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

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

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

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

Κεφ. 6Β: Συνήθεις διαφορικές εξισώσεις (ΣΔΕ) - προβλήματα αρχικών τιμών

Α. Ερωτήσεις Ανάπτυξης

Κεφ. 7: Συνήθεις διαφορικές εξισώσεις (ΣΔΕ) - προβλήματα αρχικών τιμών

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

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

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

ΚΥΚΛΟΣ ΖΩΗΣ ΛΟΓΙΣΜΙΚΟΥ και ΔΙΑΓΡΑΜΜΑΤΑ ΡΟΗΣ ΔΕΔΟΜΕΝΩΝ

Πίνακας Περιεχομένων 7

Ε-85: Ειδικά Θέµατα Λογισµικού

Επιµέλεια Θοδωρής Πιερράτος

ΠΡΟΣΟΜΟΙΩΣΗ ΟΡΘΟΓΩΝΙΚΗΣ ΚΑΙ ΛΟΞΗΣ ΚΟΠΗΣ ΜΕ ΧΡΗΣΗ ΠΕΠΕΡΑΣΜΕΝΩΝ ΣΤΟΙΧΕΙΩΝ. Ευάγγελος Καστής. Καθ. Αριστομένης Αντωνιάδης ιπλ. Μηχ. (MSc) Χαρά Ευσταθίου

Κεφάλαιο 3.1 Εξισώσεις 1 ου Βαθμού Επιμέλεια Σημειώσεων: Ντάνος Γιώργος ΚΕΦΑΛΑΙΟ 3.1 ΕΞΙΣΩΣΕΙΣ 1 ΟΥ ΒΑΘΜΟΥ 1

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

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

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

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

Αποµακρυσµένη κλήση διαδικασιών

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

Εισαγωγή στη Σχεδίαση Λογισμικού

Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού

Αρχιτεκτονική Λογισμικού

Εισαγωγή στον Προγραµµατισµό. Ανάλυση (ή Επιστηµονικοί8 Υπολογισµοί)

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

ΘΕΜΑΤΑ ΙΠΛΩΜΑΤΙΚΩΝ ΕΡΓΑΣΙΩΝ 2006 / 2007

2η Οµάδα Ασκήσεων. ΑΣΚΗΣΗ 3 (Θεωρία-Αλγόριθµοι-Εφαρµογές)

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

5.1. Χωροταξικός Σχεδιασμός Κριτήρια αξιολόγησης Χωροταξικού Σχεδιασμού Δραστηριότητες Χωροταξικού Σχεδιασμού...

Transcript:

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΕΡΓΑΣΤΗΡΙΟ ΜΗΧΑΝΙΚΩΝ ΡΕΥΣΤΩΝ & ΣΤΡΟΒΙΛΟΜΗΧΑΝΩΝ Παραλληλοποίηση αλγορίθµων επίλυσης γενικευµένων πεδίων ϱοής ιδακτορική ιατριβή του Αναστάσιου Σωτηρόπουλου Μηχανολόγου Μηχανικού Α.Π.Θ Θεσσαλονίκη 2009

ii

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΕΡΓΑΣΤΗΡΙΟ ΜΗΧΑΝΙΚΩΝ ΡΕΥΣΤΩΝ & ΣΤΡΟΒΙΛΟΜΗΧΑΝΩΝ Παραλληλοποίηση αλγορίθµων επίλυσης γενικευµένων πεδίων ϱοής ιδακτορική ιατριβή του Αναστάσιου Σωτηρόπουλου Μηχανολόγου Μηχανικού Α.Π.Θ Ο επιβλέπων καθηγητής Καθ. Απόστολος Γούλας η τριµελής συµβουλευτική επιτροπή Καθ. Α. Γούλας Καθ. Ν. Μουσιόπουλος Καθ. Ζ. Σαµαράς Θεσσαλονίκη 2009

iv

Η ἰσχὺς ἐν τ η ι ἐνώσει Ανάγλυφο µε αναπαράσταση ελληνικής τριήρους 410-400 πχ, µουσείο Ακρόπολης

vi

Ευχαριστίες Η διδακτορική αυτή διατριβή είναι αποτέλεσµα προσπαθειών και κόπων πολλών ετών. Οι δυσκολίες που προέκυψαν κατά τη διάρκεια της εκπονήσεώς της ξεπεράστηκαν µε τη ϐοήθεια και συµπαράσταση προσώπων, χωρίς τη συµβολή των οποίων δε ϑα ήταν δυνατή η ολοκλήρωση αυτού του ερευνητικού έργου, και τους οποίους ϑα ήθελα να ευχαριστήσω. Αισθάνοµαι λοιπόν την υποχρέωση να ευχαριστήσω ϑερµά τον Καθηγητή του Τµή- µατος Μηχανολόγων Μηχανικών της Πολυτεχνικής Σχολής του ΑΠΘ κ. Απόστολο Γούλα για την πολύτιµη ϐοήθειά του κατά τη διάρκεια εκπόνησης αυτής της διατριβής, χωρίς την οποία δε ϑα ήταν δυνατή η επιτυχής έκβαση όλης αυτής της προσπάθειας. Επίσης τον ευχαριστώ ειλικρινά για την εµπιστοσύνη που µου έδειξε και για την ευκαιρία που µου έδωσε να ασχοληθώ µε την έρευνα σε ένα τοµέα που πάντα µου κέντριζε το ενδιαφέρον, αναθέτοντας στο πρόσωπό µου το ϑέµα αυτής της διατριβής. Επιπλέον ϑα ήθελα να ευχαριστήσω τα υπόλοιπα µέλη της τριµελούς συµβουλευτικής επιτροπής τους Καθηγητές του Τµήµατος Μηχανολόγων Μηχανικών της Πολυτεχνικής Σχολής του ΑΠΘ κ. Νικόλαο Μουσιόπουλο και κ. Ζήση Σαµαρά για τη ϐοήθεια και τις συµβουλές τους. Θα ήθελα επίσης να ευχαριστήσω τον Επίκουρο Καθηγητή του Τµήµατος Μηχανολόγων Μηχανικών της Πολυτεχνικής Σχολής του ΑΠΘ κ. Κυριάκο Υάκινθο για τη στήριξη, τις γνώσεις σε ϑέµατα ϱευστοµηχανικής που µου προσέφερε και για τις πολύτιµες συµβουλές που µου παρείχε, κάνοντας εφικτή την ολοκλήρωση αυτής της διατριβής µέσα στα απαιτούµενα χρονικά πλαίσια. Ευχαριστώ επίσης τον Επίκουρο Καθηγητή του Τµήµατος Μηχανολόγων Μηχανικών της Πολυτεχνικής Σχολής του ΑΠΘ κ. Ανέστη Κάλφα για τις πολύτιµες συµβουλές και ϐοήθεια που µου παρείχε αυτό το διάστηµα. Επίσης, ευχαριστώ τα υπόλοιπα µέλη του Εργαστηρίου Μηχανικής Ρευστών και Στροβιλοµηχανών και συγκεκριµένα τους ρ. Ζήνωνα Βλαχοστέργιο, ηµήτρη Μισηρλή και Χρήστο Αλµπανάκη, τους ιπλ. Μηχ. Μηχ. Ιωάννη Αϊδαρίνη, Κοσµά Κρητικό, vii

viii Αθανάσιο Σιδερίδη και Ανέστη Τσορµπατζίδη. Πέρα από την επιστηµονική συνεργασία όµως ϑα ήθελα να ευχαριστήσω όλα τα µέλη του Εργαστηρίου Μηχανικής Ρευστών και Στροβιλοµηχανών του Τµήµατος Μηχανολόγων Μηχανικών για το άριστο κλίµα συνεργασίας που αναπτύχθηκε και ϐοή- ϑησε στην οµαλή διεκπαιρέωση αυτού του έργου. Τέλος ευχαριστώ από ϐάθος ψυχής την οικογένειά µου και όλους τους ϕίλους µου για την υποµονή που έδειξαν και για τη συµπαράσταση και ηθική στήριξη που µου παρείχαν όλο αυτό το διάστηµα. Αναστάσιος Σωτηρόπουλος

ix Η παρούσα διδακτορική διατριβή εκπονήθηκε στα πλαίσια ερευνητικού προγράµ- µατος µε τίτλο «ιερεύνηση διατάξεων εναλλακτών ϑερµότητας σε ακροφύσια καυσαερίων αεροπορικων κινητήρων για τη µείωση των ϱύπων». Το έργο συγχρηµατοδοτείται 75% της ηµόσιας απάνης από την Ευρωπαϊκή Ενωση - Ευρωπαϊκό Κοινωνικό Ταµείο 25% της ηµόσιας απάνης από το Ελληνικό ηµόσιο - Υπουργείο Ανάπτυξης - Γενική Γραµµατεία Ερευνας και Τεχνολογίας στο πλαίσιο του Μέτρου 8.3 του Ε.Π. Ανταγωνιστικότητα - Γ Κοινοτικό Πλαίσιο Στή- ϱιξης. Μέρος της χρηµατοδότησης προέρχεται από τον Ιδιωτικό Τοµέα, MTU Aero Engine GmbH, Munich, Germany

x

Περίληψη Στην παρούσα διδακτορική διατριβή παρουσιάζεται µια προσπάθεια επιτάχυνσης ε- νός ενδοεργαστηριακού (in-house) κώδικα υπολογιστικής ϱευστοδυναµικής (Computational Fluid Dynamics - CFD) χρησιµοποιώντας υπολογιστικά συστήµατα υψηλής απόδοσης (High Performance Computing - HPC). Το κέρδος που αναµένεται από µια τέτοια προσπάθεια είναι η δραστική µείωση του χρόνου επίλυσης καθώς και η δυνατότητα επίλυσης µεγαλύτερων προβληµάτων. Εισαγωγικά γίνεται ανασκόπηση σε προηγούµενες έρευνες που έχουν γίνει καθώς και αναφορά στις σηµαντικότερες τεχνολογίες και τεχνικές παράλληλου προγραµµατισµού, εργαλεία που διευκολύνουν την έρευνα του µηχανικού στον τοµέα του HPC. Η κατανόηση των τεχνολογιών αυτών όπως και η κατανόηση του προβλήµατος αποτελούν τα ϐασικότερα ϐήµατα για τον µελετητή καθώς η επιλογή του κατάλληλου µοντέλου προγραµµατισµού πάνω στη κατάλληλη τεχνολογία εξαρτάται από τη ϕύση του προβλήµατος. Η σωστή επιλογή λοιπόν ϑα οδηγήσει στη ϐέλτιστη αξιοποίηση των διαθέσιµων αυτών εργαλείων. Ακολουθεί η περιγραφή και λειτουργία της συστοιχίας υπολογιστών που εγκαταστάθηκε πάνω στην οποία εκπονήθηκε η διατριβή αυτή. Στα επόµενα κεφάλαια γίνεται ανάλυση του αρχικού σειριακού κώδικα και επεξηγούνται τα ϐήµατα µετάβασής του σε παράλληλο κώδικα. Περιγράφεται η διαχείριση της µνήµης, ο τρόπος παραλληλοποίησης του προβλήµατος στην περίπτωση απλής γεωµετρίας αλλά και για περιπτώσεις πολλαπλών γεωµετριών (multi-block). Η µέ- ϑοδος αποσύνθεσης πεδίου τιµών που χρησιµοποιείται εφαρµόζεται σε µια και δύο διαστάσεις. Η µονοδιάστατη αποσύνθεση γίνεται σε δύο διευθύνσεις. Κατά την α- ποσύνθεση του προβλήµατος γίνεται προσπάθεια να εξισοροπηθεί ο ϕόρτος εργασίας στους επεξεργαστές ώστε να ελαχιστοποιηθεί ο νεκρός χρόνος. Η επέκταση της συστοιχίας που έγινε µε επεξεργαστές διαφορετικής ταχύτητας επέβαλε την αναθεώρηση του αλγορίθµου αποσύνθεσης ώστε να διανέµει τα δεδοµένα ανάλογα µε την ταχύτητα του επεξεργαστή. Επίσης διερευνάται η δυνατότα αξιοποίησης της διαθέσιµης διανυxi

xii Περίληψη σµατικής µονάδας Altivec που παρέχεται από τη χρησιµοποιούµενη αρχιτεκτονική επεξεργαστή της συστοιχίας. Τέλος παρουσιάζονται αποτελέσµατα του παράλληλου κώδικα που δηµιουργήθηκε, αξιολογούνται οι επιδόσεις του συστήµατος και του κώδικα και γίνεται επαλή- ϑευσή των αποτελεσµάτων του συγκρινόµενα µε πειραµατικές µετρήσεις πάνω σε µια σειρά προβληµάτων (test-cases). Τα προβλήµατα που λύθηκαν ήταν ϱοές µόνιµης κατάστασης καθώς και µη µόνιµες ϱοές, ενώ δοκιµάστηκε η αποτελεσµατικότητα του κώδικα σε στρωτές και τυρβώδεις ϱοές µε διάφορα µοντέλα τύρβης. Τα προβλήµατα που επιλύθηκαν αποτελούνται τόσο από απλές γεωµετρίες όσο και από γεωµετρίες πολλαπλών πλεγµάτων.

Περιεχόµενα 1 ΕΙΣΑΓΩΓΗ 1 2 Παράλληλα υπολογιστικά συστήµατα 7 2.1 Ορισµοί - Κατηγορίες.......................... 7 2.2 Εξειδικευµένες µονάδες......................... 9 2.2.1 ιανυσµατικοί επεξεργαστές................... 10 2.2.2 ιανυσµατικές µονάδες επεξεργαστών.............. 10 2.2.3 Επεξεργαστές καρτών γραφικών................. 10 2.2.4 Προγραµµατιζόµενα ολοκληρωµένα κυκλώµατα........ 11 2.3 Τεχνικές παράλληλου προγραµµατισµού................ 11 2.3.1 Τεχνικές αποσύνθεσης προβλήµατος.............. 12 2.4 Απόδοση παράλληλων συστηµάτων................... 13 3 Το πρωτόκολλο MPI 15 3.1 Βασικές ϱουτίνες............................. 15 3.2 Συλλογική επικοινωνία......................... 17 3.3 Παραγόµενοι τύποι δεδοµένων..................... 18 4 Σειριακός επιλυτής 21 4.1 Περιγραφή του σειριακού επιλυτή................... 21 4.2 Βήµατα επίλυσης............................ 22 4.2.1 Εισαγωγή δεδοµένων και Υπολογισµός γεωµετρικών ποσοτήτων 22 4.2.2 Επαναληπτική διαδικασία.................... 23 4.2.3 Ελεγχος τερµατισµού...................... 23 4.3 ιακριτοποίηση............................. 24 4.4 ιαχείριση µνήµης............................ 25 4.5 Επιλυτής συστήµατος.......................... 27 4.5.1 Περιγραφή του αλγορίθµου................... 28 xiii

xiv ΠΕΡΙΕΧΟΜΕΝΑ 5 Παραλληλοποίηση του σειριακού κώδικα 33 5.1 Ανάλυση σειριακού κώδικα....................... 34 5.2 Αποσύνθεση πεδίου........................... 35 5.3 Εξισορρόπηση.............................. 35 5.3.1 Βελτιωµένη εξισορρόπηση.................... 37 5.4 Μελέτη εξάρτησης δεδοµένων...................... 39 5.5 Αποσύνθεση στη διεύθυνση k...................... 39 5.5.1 Εξισορρόπηση.......................... 39 5.5.2 ιαχείριση µνήµης........................ 40 5.5.3 ιανοµή δεδοµένων....................... 40 5.5.4 Επικοινωνία........................... 42 5.5.5 Παραγόµενοι τύποι δεδοµένων................. 43 5.6 Αποσύνθεση στη διεύθυνση i...................... 45 5.6.1 ιαχείριση µνήµης........................ 46 5.6.2 Επικοινωνία........................... 46 5.7 Χειρισµός του αλγορίθµου SIP..................... 46 5.8 Χειρισµός Οριακών Συνθηκών...................... 51 5.8.1 Χειρισµός υπολογισµού ϱοής στην έξοδο............ 51 5.8.2 Συνθήκη περιοδικότητας.................... 52 5.8.3 Επικοινωνία σε πλέγµατα τύπου O............... 54 5.8.4 Επικοινωνία σε πλέγµατα τύπου C............... 55 5.9 Χειρισµός ελέγχου τερµατισµού..................... 56 5.10 Χρήση διανυσµατικής µονάδας..................... 57 5.10.1 Χρήση της µονάδας altivec................... 58 5.10.2 Επιδόσεις της µονάδας altivec................. 59 6 ηµιουργία multi-block επιλυτή 61 6.1 ιαχείριση µνήµης............................ 63 6.2 1η µέθοδος................................ 64 6.2.1 ιαχείριση µνήµης........................ 64 6.3 2η µέθοδος................................ 66 6.3.1 ιαχείριση µνήµης........................ 66 6.3.2 Εύρεση περιοχών επαφής µεταξύ υποπεδίων.......... 67 6.4 Επικοινωνία............................... 69 6.4.1 Επικοινωνία για δισδιάστατη αποσύνθεση........... 69

ΠΕΡΙΕΧΟΜΕΝΑ xv 7 Συστοιχία Υπολογιστών 71 7.1 Υλικό................................... 71 7.2 Λογισµικό................................ 71 7.3 Λειτουργία................................ 72 7.4 Επικοινωνία............................... 73 7.5 Εκτέλεση εργασιών........................... 74 8 Αποτελέσµατα 77 8.1 Απόδοση................................. 77 8.1.1 Επίδραση της επιλογής των επεξεργαστών........... 78 8.2 Επαλήθευση αποτελεσµάτων...................... 78 8.2.1 Ροή σε αγωγό µε εµπόδιο.................... 79 8.2.2 Ροή σε ορθογωνικό αγωγό.................... 82 8.2.3 Ροή σε πειραµατική διάταξη T3L4............... 86 8.2.4 Ροή σε πειραµατική διάταξη T3L6............... 104 8.2.5 Ροή σε εναλλάκτη........................ 118 9 Συµπεράσµατα - Μελλοντική έρευνα 123 9.1 Προτάσεις για µελλοντική έρευνα.................... 125 Βιβλιογραφικές αναφορές 127

Κατάλογος Σχηµάτων 2.1 Αρχιτεκτονική συστήµατος κοινής µνήµης.............. 8 2.2 Αρχιτεκτονική συστήµατος κατανεµηµένης µνήµης......... 8 2.3 Αποσύνθεση σε 1,2 και 3 διαστάσεις................. 13 2.4 Νόµος του Amdahl.......................... 14 3.1 Κοινοποίηση δεδοµένων........................ 18 3.2 ιανοµή και συλλογή δεδοµένων................... 18 4.1 Στοιχειώδης όγκος ελέγχου...................... 22 4.2 Λογικό διάγραµµα σειριακού κώδικα................. 23 4.3 Σχήµα διακριτοποίησης HLPA.................... 25 4.4 Μετατροπή δισδιάστατου µητρώου σε διάνυσµα........... 26 4.5 Αρίθµηση όγκων ελέγχου....................... 27 4.6 Σύστηµα εξισώσεων.......................... 29 4.7 Πίνακες L και U............................ 29 5.1 ιάγραµµα ϱοής του παράλληλου κώδικα.............. 36 5.2 Νεκρός χρόνος κατά την επίλυση................... 37 5.3 Αποσύνθεση απλής γεωµετρίας.................... 41 5.4 Κατανοµή µνήµης κατά την αποσύνθεση στη διεύθυνση k..... 41 5.5 Επικοινωνία στη µονοδιάστατη αποσύνθεση............. 43 5.6 Απαιτούµενη επικοινωνία για µονοδιάστατη αποσύνθεση...... 44 5.7 Παραγόµενος τύπος δεδοµένων SN_TYPE για επικοινωνία στα µέτωπα S-N................................ 45 5.8 Παραγόµενος τύπος δεδοµένων WE_TYPE για επικοινωνία στα µέτωπα W-E................................ 47 5.9 Μηδενισµός στα όρια ενός 4x6 υποπροβλήµατος.......... 48 5.10 Αποσύνθεση σε 4 πεδία........................ 49 5.11 Σύστηµα εξισώσεων για επίλυση σε 4 επεξεργαστές......... 49 xvi

ΚΑΤΑΛΟΓΟΣ ΣΧΗΜΑΤΩΝ xvii 5.12 Ισοϋψείς ταχυτήτων. Επικοινωνία εντός (αριστερά) και εκτός (δεξιά) της επαναληπτικής διαδικασίας του Stone.............. 50 5.13 Χειρισµός οριακής συνθήκης στην έξοδο............... 51 5.14 Γεωµετρία και εφαρµογή συνθήκης περιοδικότητας σε σειρά πτερυγίων στροβιλοµηχανής......................... 53 5.15 Οριακή συνθήκη περιοδικότητας και απαιτούµενη επικοινωνία... 53 5.16 O-type πλέγµα............................. 54 5.17 Απαιτούµενη επικοινωνία σε O-type πλέγµα............. 55 5.18 C-type πλέγµα εφαπτόµενο στον εαυτό του.............. 55 5.19 Αρίθµηση κόµβων στο πλέγµα.................... 56 5.20 Επικοινωνία στο C-type πλέγµα................... 56 5.21 Πρόσθεση σε ϐαθµωτή (scalar) και διανυσµατική (vector) µονάδα. 57 5.22 Επίδραση διαστάσης προστιθέµενων µητρώων στο χρόνο εκτέλεσης. 60 6.1 ιάταξη ϱοής σε αγωγό µε εµπόδιο.................. 62 6.2 Χρήση συνθήκης σταθερής τιµής πεδίου............... 62 6.3 Χρήση τριών πλεγµάτων........................ 62 6.4 ιαχείριση µνήµης για πολλά blocks................. 63 6.5 Μονοδιάστατη αποσύνθεση πολλών πεδίων µε την 1η µέθοδο.... 65 6.6 ιανοµή µητρώων σύµφωνα µε την 1η µέθοδο............ 65 6.7 Μονοδιάστατη αποσύνθεση πολλών πεδίων µε τη 2η µέθοδο.... 66 6.8 Τρόπος αποθήκευσης υποπεδίων κατά τη 2η µέθοδο........ 67 6.9 ισδιάστατη αποσύνθεση πολύπλοκης γεωµετρίας και ανάθεση επίλυσης σε 4 επεξεργαστές....................... 68 6.10 Επικοινωνία για δισδιάστατη αποσύνθεση.............. 70 7.1 Συστοιχία υπολογιστών ΕΜΡΣ..................... 72 8.1 Αρίθµηση επεξεργαστών........................ 79 8.2 Απεικόνιση διάταξης ϱοής γύρω από κύβο.............. 79 8.3 Επιτάχυνση, ισοϋψείς ταχυτήτων U, W πίεσης Π και πεδίο ταχυτήτων 80 8.4 Ροϊκές γραµµές σε διάφορες ϑέσεις.................. 81 8.5 Γεωµετρία ορθογωνικού αγωγού................... 82 8.6 Επιτάχυνση.............................. 83 8.7 Ισοϋψείς ταχυτήτων στην περιοχή εισόδου.............. 83 8.8 Ισοϋψείς ταχυτήτων ακριβώς πριν (αριστερά) και µετά (δεξιά) τη γωνία 84

xviii ΚΑΤΑΛΟΓΟΣ ΣΧΗΜΑΤΩΝ 8.9 Πεδία ταχυτήτων (αριστερά) και εµφάνιση δινών στις γωνίες..... 85 8.10 Περιοχή ανακυκλοφορίας και διάγραµµα σύγκλισης για 15 επεξεργαστές................................. 87 8.11 Χρόνος επίλυσης και επιτάχυνση συναρτήσει των χρησιµοποιούµενων επεξεργαστών........................... 88 8.12 Αριθµός επαναλήψεων συναρτήσει των χρησιµοποιούµενων επεξεργαστών................................. 88 8.13 Γεωµετρία και αποσύνθεση σε 2-16 επεξεργαστές.......... 89 8.14 Γεωµετρία και αποσύνθεση σε 18-22 επεξεργαστές......... 90 8.15 ιαγράµµατα σύγκλισης για εκτέλεση σε 1-14 επεξεργαστές.... 91 8.16 ιαγράµµατα σύγκλισης για εκτέλεση σε 16-22 επεξεργαστές.... 92 8.17 Ισοϋψείς ταχύτητας U για εκτέλεση σε 2-10 επεξεργαστές...... 93 8.18 Ισοϋψείς ταχύτητας U για εκτέλεση σε 12-22 επεξεργαστές..... 94 8.19 Ισοϋψείς ταχύτητας V για εκτέλεση σε 2-10 επεξεργαστές...... 95 8.20 Ισοϋψείς ταχύτητας V για εκτέλεση σε 12-22 επεξεργαστές..... 96 8.21 Ισοϋψείς πίεσης P για εκτέλεση σε 2-10 επεξεργαστές........ 97 8.22 Ισοϋψείς πίεσης P για εκτέλεση σε 12-22 επεξεργαστές....... 98 8.23 Πεδίο ταχυτήτων για εκτέλεση σε 2-10 επεξεργαστές......... 99 8.24 Πεδίο ταχυτήτων για εκτέλεση σε 14-22 επεξεργαστές........ 100 8.25 Ροϊκές γραµµές για εκτέλεση σε 2-12 επεξεργαστές......... 101 8.26 Ροϊκές γραµµές για εκτέλεση σε 14-22 επεξεργαστές........ 102 8.27 Σύγκριση αποτελεσµάτων µε πειραµατικές µετρήσεις στη διάταξη T3L4103 8.28 Χρόνος επίλυσης και επιτάχυνση συναρτήσει των χρησιµοποιούµενων επεξεργαστών........................... 104 8.29 Αριθµός επαναλήψεων συναρτήσει των χρησιµοποιούµενων επεξεργαστών................................. 104 8.30 ιαγράµµατα σύγκλισης για εκτέλεση σε 2-12 επεξεργαστές.... 105 8.31 ιαγράµµατα σύγκλισης για εκτέλεση σε 14-22 επεξεργαστές.... 106 8.32 Ισοϋψείς ταχύτητας U για εκτέλεση σε 2-12 επεξεργαστές...... 107 8.33 Ισοϋψείς ταχύτητας U για εκτέλεση σε 14-22 επεξεργαστές..... 108 8.34 Ισοϋψείς ταχύτητας V για εκτέλεση σε 1-12 επεξεργαστές...... 109 8.35 Ισοϋψείς ταχύτητας V για εκτέλεση σε 14-22 επεξεργαστές..... 110 8.36 Ισοϋψείς πίεσης P για εκτέλεση σε 1-12 επεξεργαστές........ 111 8.37 Ισοϋψείς πίεσης P για εκτέλεση σε 14-22 επεξεργαστές....... 112

ΚΑΤΑΛΟΓΟΣ ΣΧΗΜΑΤΩΝ xix 8.38 Πεδίο ταχυτήτων για εκτέλεση σε 2-12 επεξεργαστές......... 113 8.39 Πεδίο ταχυτήτων για εκτέλεση σε 14-22 επεξεργαστές........ 114 8.40 Ροϊκές γραµµές για εκτέλεση σε 2-12 επεξεργαστές......... 115 8.41 Ροϊκές γραµµές για εκτέλεση σε 14-22 επεξεργαστές........ 116 8.42 Σύγκριση αποτελεσµάτων µε πειραµατικές µετρήσεις στη διάταξη T3L6117 8.43 Γεωµετρία προβλήµατος........................ 118 8.44 Γεωµετρία και ισοµερής δισδιάστατη αποσύνθεση σε 22 επεξεργαστές 118 8.45 Γεωµετρία και εξισορροπηµένη δισδιάστατη αποσύνθεση σε 22 επεξεργαστές............................... 118 8.46 Ισοϋψείς ταχύτητας U (αριστερά) και πεδίο ταχυτήτων (δεξιά).... 120 8.47 Ισοϋψείς ταχύτητας U (αριστερά) και W (δεξιά)............ 121 8.48 Ροϊκές γραµµές σε διάφορες ϑέσεις.................. 122

Κατάλογος Πινάκων 2.1 Σύγκριση Shared-Distributed Memory Systems........... 9 4.1 Αντιστοιχία ϑέσεων µνήµης κατά τη διανυσµατοποίηση........ 26 5.1 Ανάλυση επιδόσεων του σειριακού κώδικα............... 34 5.2 Περιπτώσεις απλής εξισορρόπησης................... 37 5.3 Benchmark για τα 2 είδη επεξεργαστών της συστοιχίας........ 38 5.4 Ορισµός γειτονικών υποπεδίων..................... 43 5.5 Επικοινωνία κατά τη διαδικασία του αλγορίθµου Stone........ 50 5.6 Ορισµός γειτονικών υποπεδίων όταν υπάρχει συνθήκη περιοδικότητας 52 5.7 Ορισµός γειτονικών υποπεδίων σε πλέγµα τύπου Ο.......... 54 5.8 Επιδόσεις altivec για διάφορες πράξεις................. 59 6.1 3 πλέγµατα, διαστάσεις, και αριθµός κελιών.............. 64 7.1 Αριθµός πακέτων............................ 74 8.1 Εξισορρόπηση για διάφορους αριθµούς χρησιµοποιούµενων επεξεργαστών................................... 86 xx

Κεφάλαιο 1 ΕΙΣΑΓΩΓΗ Η υπολογιστική ϱευστοδυναµική (CFD) αποτελεί, εδώ και χρόνια, ένα αναπόσπαστο µέρος της διαδικασίας σχεδιασµού και µελέτης ενός προϊόντος που λειτουργεί µέσα σε ένα ϱοϊκό πεδίο. Μαζί µε τη ϑεωρητική και πειραµατική προσέγγιση του προ- ϐλήµατος επιδιώκεται η ϐέλτιστη συµπεριφορά του εκάστοτε αντικειµένου µελέτης. Οι συνεχώς αυξανόµενες απαιτήσεις στο χώρο αυτό επιβάλουν τη χρήση ολοένα και ταχύτερων υπολογιστών, που λόγω των ϕυσικών ορίων που επιβάλονται από τα υλικά, η ταχύτητα (αλλά και η µνήµη) αυτή είναι πεπερασµένη και συνήθως ανεπαρκής για τη λύση µεγάλων προβληµάτων. Η παράλληλη επεξεργασία έρχεται να καλύψει την ανάγκη αυτή καθώς δίνει τη δυνατότητα πλέον να λυθούν πολύ µεγαλύτερα προ- ϐλήµατα και σε πολύ µικρότερο χρόνο, αφού το πρόβληµα λύνεται από µια οµάδα υπολογιστών που έχουν αθροιστική υπολογιστική ισχύ και δρουν σαν ένας µεγάλος υπερυπολογιστής. Η παραλληλοποίηση ενός κώδικα έχει κυρίως δύο στόχους, που αφορούν τόσο στον χρόνο αλλά και στον χώρο : επιτάχυνση της διαδικασίας επίλυσης δυνατότητα επίλυσης µεγαλύτερων προβληµάτων Ο αλγόριθµος επίλυσης εκτελεί µια οµάδα πράξεων σε ένα συγκεκριµένο υπολογιστικό πεδίο. Το πεδίο αυτό χωρίζεται σε ίσα µέρη (υποπεδία) και κάθε επεξεργαστής εκτελεί τους ίδιους υπολογισµούς ταυτόχρονα στο δικό του όµως υποπεδίο. Εναλλακτικά µπορεί σε κάθε επεξεργαστή να ανατεθεί µέρος των υπολογισµών (που εκτελούνται σε ολόκληρο το πεδίο) οπότε καθένας εκτελεί διαφορετικά ϐήµατα του αλγορίθµου. Και στις δύο περιπτώσεις ο χρόνος επίλυσης ελαττώνεται αφού κάθε επεξεργαστής εκτελεί λιγότερες πράξεις. 1

2 Κεφάλαιο 1. ΕΙΣΑΓΩΓΗ Το δεύτερο όφελος που προκύπτει είναι η δυνατότητα επίλυσης µεγαλύτερων προ- ϐληµάτων, αφού η συνολική διαθέσιµη µνήµη είναι µεγαλύτερη. Ετσι µπορεί να λυθεί ένα πρόβληµα που απαιτεί πολύ µεγάλο αριθµό υπολογιστικών κελιών που δε ϑα µπορούσε να λυθεί σε έναν υπολογιστή λόγω της περιορισµένης διαθέσιµης µνήµης. Η ανάγκη αυτή προκύπτει λόγω της υψηλής επιθυµητής ακρίβειας υπολογισµού που απαιτεί πυκνότερη διακριτοποίηση, δηλαδή περισσότερα υπολογιστικά κελιά και κατά συνέπεια µνήµη. Οι προαναφερθείσες ανάγκες στην περιοχή του CFD έχουν οδηγήσει από νωρίς την επιστηµονική κοινότητα στη λύση της παραλληλοποίησης. Η εξελίξεις στην τεχνολογία υπολογιστικών συστηµάτων έχουν ϐοηθήσει στην ανάπτυξη νέων µεθόδων, ενώ ισχύει και το αντίστροφο, οι αυξανόµενες ανάγκες σε υπολογιστική ισχύ έχουν οδηγήσει στη εξέλιξη των υπολογιστικών συστηµάτων. Πρόκειται για δύο χώρους που είναι στενά συνδεδεµένοι και γι αυτό έχουν ξεκινήσει προσπάθειες κατασκευής υπολογιστών µε δυνατότητα χρήσης πολλών επεξεργαστών από πολύ νωρίς, από τη δεκαετία του 60 [1]. Οι περισσότερες έρευνες επικεντρώνονται σε αλγορίθµους που ϐελτιστοποιούν τον καταµερισµό του προβλήµατος καθώς και την επικοινωνία [2]. Οι αλγόριθµοι αυτοί ασχολούνται µε το διαµερισµό µη-δοµηµένων κυρίως πλεγµάτων (unstructured meshes) και λιγότερο δοµηµένων (structured meshes) όπως γίνεται στην εργασία αυτή. Ο καταµερισµός µη δοµηµένων πλεγµάτων είναι ευκολότερος διότι δεν υπάρχει πε- ϱιορισµός ως προς τη µορφή των υποπεδίων που προκύπτουν. Ο αποτελεσµατικότερη ίσως µέθοδος είναι η αναδροµική ϕασµατική διχοτόµηση (Recursive Spectral Bisection - RSB) που προτάθηκε από τον Pothen [3]. Η µέθοδος εφαρµόζεται πάνω σε ένα γράφο ([4]), κόµβοι του οποίου αποτελούν οι όγκοι ελέγχου του πεδίου ϱοής ενώ οι διασυνδέσεις των κόµβων αναπαριστούν την αλληλεπίδραση των όγκων ελέγχου, δηλαδή την επαφή τους. Η µέθοδος αυτή προορίζεται για µη δοµηµένα πλέγµατα. Το γνωστότερο ίσως λογισµικό που κάνει καταµερισµό µη δοµηµένων πλεγµάτων είναι το METIS [5], χρησιµοποιείται µάλιστα και σε εµπορικούς κώδικες. Άλλες ϕασµατικές µέθοδοι καταµερισµού έχουν αναλυθεί και συγκριθεί σε µεταγενέστερη δηµοσίευση [6], ενώ έχουν προταθεί και ϐελτιστοποιήσεις για δυναµική εξισορρόπηση [7], δηλαδή εκ νέου καταµερισµός κατά τη διάρκεια της επίλυσης. Ο καταµερισµός ενός δοµηµένου πλέγµατος ϑα πρέπει να οδηγήσει στη δηµιουργία µικρότερων δοµηµένων πάλι πλεγµάτων, οπότε η παραπάνω µέθοδος δε µπορεί να εφαρµοστεί άµεσα. Ωστόσο στη δηµοσίευση του Rantakokko [8] παρουσιάζεται

3 η χρήση του αλγορίθµου RSB για δοµηµένα πλέγµατα. Ο χώρος χωρίζεται σε µικρότερες υποπεριοχές δοµηµένων πλεγµάτων που ϑεωρούνται κόµβοι ενός γράφου πάνω στους οποίους εφαρµόζεται η µέθοδος. Ετσι γίνεται ουσιαστικά καταµερισµός υποπεριοχών και όχι όγκων ελέγχου. Οι τελικές υποπεριοχές που ϑα λυθούν στον ίδιο επεξεργαστή συνενώνονται σε µεγαλύτερες περιοχές όταν αυτό είναι δυνατόν ελλαττώνοντας έτσι την µεταξύ τους επικοινωνία. Προσπάθειες για αυτόµατη παραλληλοποίηση κώδικα µε καταµερισµό σε πολλές διαστάσεις έχουν γίνει παλαιότερα όπως από τον Evans [9], στην εργασία του οποίου γίνεται µια προσπάθεια για ηµιαυτόµατη παραγωγή παράλληλου κώδικα αναλύοντας τον σειριακό κώδικα και ϐρίσκοντας ϐρόγχους που µπορούν να παραλληλοποιηθούν. Αργότερα αναπτύχθηκε και παρουσιάστηκε από τους Xiao et al το Auto-CFD [10]. Πρόκειται για ένα εργαλείο το οποίο αναλύει έναν σειριακό CFD κώδικα γραµµένο σε Fortran και τον µετατρέπει σε παράλληλο κώδικα για εκτέλεση σε περιβάλλοντα διανεµηµένης µνήµης, χρησιµοποιώντας το MPI[11] ή το PVM[12]. Παραλληλοποίηση επιλυτών έχουν γίνει και για περιβάλλοντα κοινής µνήµης, χρησιµοποιώντας τη διεπαφή OpenMP[13] για µικρό αριθµό επεξεργαστών (µέχρι 16). Στη δηµοσίευση του Hoeflinger [14] συγκρίθηκε η επίδοση του OpenMP σε σχέση µε τις επιδόσεις κώδικα που χρησιµοποιεί το MPI και ταυτόχρονα διερευνήθηκε η αδυναµία του OpenMP για επαρκή κλιµάκωση σε περισσότερους επεξεργαστές. Επίσης µέσα από αυτή την εργασία προτάθηκαν ϐελτιώσεις για το OpenMP και γενικούς κανόνες που πρέπει να χρησιµοποιούνται και να αποφεύγονται κατά τη χρήση του. Εφαρµογή CFD σε διανυσµατικούς επεξεργαστές έχει παρουσιαστεί στη δηµοσίευση των Bartels et al [15], όπου επιλύονται ϱοές παράλληλα χρησιµοποιώντας τις τεχνικές DNS και RANS για τις τυρβώδεις ϱοές. Η επίλυση έγινε σε 2 είδη διανυσµατικών επεξεργαστών (NEC SX-4 και Fujitsu VPP 700). Η επίλυση έγινε χρησιµοποιώντας νήµατα (τηρεαδς) αλλά και MPI. Παρόµοια εφαρµογή στο σύστηµα VPP 700 έχει γίνει για επίλυση τρισδιάστατης µη µόνιµης ϱοής [16]. Επίλυση ϱοών σε συστήµατα κοινής και διανεµηµένης µνήµης αναπτύσσοντας τρισδιάστατο κώδικα πολλαπλών τοπολογιών (multi-block) έδειξαν καλύτερη απόδοση σε πυκνότερα πλέγµατα στον ίδιο αριθµό επεξεργαστών όπως επίσης καλύτερη απόδοση ϕαίνεται να έχουν τα συστήµατα κοινής µνήµης [17]. Η εξειδικευµένη γλώσσα προγραµµατισµού HPF (High Performance Fortran) [18] έχει ϐρει επίσης εφαρµογή σε επίλυση προβληµάτων ϱευστοδυναµικής [19, 20]. Η HPF αποτελεί µια επέκταση της γλώσσας FORTRAN παρέχοντας µια διεπαφή για πα-

4 Κεφάλαιο 1. ΕΙΣΑΓΩΓΗ ϱάλληλο προγραµµατισµό. Η τελευταία δηµοσίευση διερευνά τις δυνατότητες αυτής της γλώσσας για επίλυσης πεδίων ϱοής χρησιµοποιώντας δοµηµένα και µη δοµηµένα πλέγµατα. Η χρήση του πρωτοκόλλου PVM εµφανίζεται πλέον σε λίγες εφαρµογές, παρά το ότι οι παλαιότερες προσπάθειες παραλληλοποίησης έγιναν µε αυτό [21, 22, 23, 24]. Μετά την εµφάνιση του πρωτοκόλλου MPI η χρήση του PVM άρχισε να ϕθίνει. Παράλληλα έχουν αναπτυχθεί κώδικες χρησιµοποιώντας περισσότερες από µια µεθόδους παραλληλοποίησης. Για παράδειγµα η χρήση του πρωτοκόλλου MPI µαζί µε threads όπως έχει αναπτυχθεί στη δηµοσίευση του Jia [25]. Στην παρουσίαση αυτή συγκρίνονται οι δύο µέθοδοι ξεχωριστά καθώς και ο συνδιασµός τους. Σύγκριση µεταξύ υβριδικού µοντέλου OpenMP-MPI µε καθαρά OpenMP έδειξε ότι υπερτερεί ο καθαρός προγραµµατισµός σε OpenMP [26]. Ο επιλυτής του συστήµατος εξισώσεων που προκύπτει εφαρµόζοντας τη µέθοδο πεπερασµένων όγκων καταναλώνει αρκετό υπολογιστικό χρόνο κατά την επίλυση. Στο παρελθόν έχουν προταθεί µέθοδοι παραλληλοποίησης του επιλυτή του συστήµατος εξισώσεων. Μέθοδοι παραλληλοποίησης του αλγορίθµου SIP (Strongly Implicit Procedure) του Stone [27], ο οποίος χρησιµοποιείται στον κώδικα αυτής της εργασίας, έχουν προταθεί σε παλαιότερη δηµοσίευση [28]. Τα τελευταία χρόνια έχουν τραβήξει την προσοχή οι επεξεργαστές των καρτών γραφικών (GPU) [29]. Από τις πρώτες προσπάθειες που έγιναν επιλύοντας τις εξισώσεις Navier-Stokes (N-S) για ασυµπίεστη ϱοή έδωσαν ικανοποιητική επιτάχυνση [30]. Ακολούθησαν και άλλες έρευνες σε αυτή την κατεύθυνση δίνοντας εντυπωσιακές επιταχύνσεις της τάξης του 40x για δισδιάστατα προβλήµατα και 16x για τρισδιάστατα ([31, 32]). Εκτός από την επίλυση απλών περιπτώσεων έχουν χρησιµοποιηθεί και για επίλυση υπερηχητικών ϱοών [33] και για επιτάχυνση επίλυσης ατµοσφαιρικών µοντέλων [34]. Φυσική εξέλιξη αυτής της κατεύθυνσης είναι η δηµιουργία µιας συστοιχίας αποτελούµενης από GPU [35, 36] µε σκοπό την αθροιστική εκµετάλλευση της ισχύος πολλών καρτών. Λεπτοµέρής ανάλυση της διαδικασίας επίλυσης των εξισώσεων N-S σε GPU γίνεται στο ϐιβλίο GPU Gems [37]. Η σταδιακή ανάπτυξη των συστηµάτων διανεµηµένης µνήµης και η προτίµησή τους λόγω της κλιµάκωσης που παρέχουν οδήγησαν σε µετατροπές των ήδη υπάρχοντων επιλυτών που προοριζόταν για συστήµατα κοινής µνήµης έτσι ώστε να λειτουργούν και σε συστήµατα διανεµηµένης µνήµης. Σε µία απο τις προσπάθειες αυτές ([38]) γίνεται ταυτόχρονα και ελαχιστοποίηση των αλλαγών στον αρχικό κώδι-

5 κα, ενώ έχει χρησιµοποιηθεί τόσο το MPI όσο και το PVM για µέγιστη ϕορητότητα σε διάφορα περιβάλλοντα παράλληλης επεξεργασίας. Τα συστήµατα διανεµηµένης µνήµης ενδέχεται να αποτελούνται από υπολογιστές διαφορετικής αρχιτεκτονικής. Στην εργασία του Χρονόπουλου [39] γίνεται κατεµερισµός του υπολογιστικού χώρου σε οµογενή συστήµατα (µε ίδιους επεξεργαστές) αλλά και σε ανοµοιογενή συστήµατα (µε διαφορετικούς επεξεργαστές και λειτουργικά συστήµατα). Στην περίπτωση των ανοµοιογενών συστηµάτων λαµβάνονται υπόψη η ταχύτητα και η µνήµη του κάθε συστήµατος ώστε να εξισορροπηθεί το ϕορτίο των υπολογισµών ανάλογα µε τις δυνατότητες του κάθε υπολογιστή. Για το σκοπό αυτό αναπτύσσεται ένας ευρετικός αλγόριθµος που ανάλογα µε το πρόβληµα δίνει επιταχύνει την επίλυση µέχρι και 100%. Για την επικοινωνία των υπολογιστών χρησιµοποιήθηκε το πρωτόκολλο MPI. Μεγαλύτερα προβλήµατα όπως η ϱοή γύρω από ένα αεροσκάφος έχουν επιλυθεί επιτυχώς σε παράλληλα περιβάλλοντα [40] παρουσιάζοντας ικανοποιητική επιτάχυνση ακόµα και µε τη χρήση διαύλων πολύ χαµηλής ταχύτητας (10-BaseT και Fast- Ethernet) [41]. Στη δηµοσίευση αυτή γίνεται ϐελτιστοποίηση του αεροδυναµικού σχήµατος ενός αεροσκάφος χρησιµοποιώντας τους 32 επεξεργαστές ενός IBM SP2. Ο χρόνος επίλυσης (28 ώρες) είναι ικανοποιητικός αν και το σύστηµα είναι πλέον ξεπερασµένο. Παρόµοια δουλειά έχει παρουσιαστεί και από τον Reuther [41] χρησιµοποιώντας παράλληλη επίλυση του πεδίου ϱοής γύρω από πτέρυγα αεροσκάφους αποσκοπώντας τη ϐελτιστοποίησή της. Μελέτη ϱοής γύρω από αεροσκάφος έχει γίνει µε παράλληλη επεξεργασία επίσης, µε σκοπό τη µείωση του ϑορύβου [42], ενώ η εφαρµογή Megaflow αποτελεί έναν ακόµη παράλληλο επιλυτή για ϱοές γύρω από αεροσκάφη [43]. Παλαιότερα τα µεγάλα υπολογιστικά συστήµατα κοινής µνήµης, όπως και σταθµοί εργασίας UNIX ήταν σχεδόν η µόνη επιλογή για επίλυση απαιτητικών προβληµάτων, µε κυριότερο µειονέκτηµα το µεγάλο οικονοµικό κόστος. Με την εµφάνιση λειτουργικών συστηµάτων τύπου UNIX τη δεκαετία του 1990 που έχουν τη δυνατότητα να τρέχουν σε ένα κοινό προσωπικό υπολογιστή (λχ Linux), άρχισε το ενδιαφέρον να στρέφεται προς αυτή την κατεύθυνση κυρίως λόγω του χαµηλού κόστους. Η απόδοση ενός Linux Cluster έδειξε να είναι ικανοποιητική µέχρι 16 επεξεργαστές σε σχέση µε ένα UNIX Cluster και έναν παράλληλο υπολογιστή (Cray T3E)[44]. Οι σηµερινές συστοιχίες linux έχουν ϐέβαια αναπτυχθεί σε πολύ καλύτερα επίπεδα απόδοσης προσφέροντας ένα επαρκές παράλληλο περιβάλλον µε χαµηλό κόστος κατασκευής.

6

Κεφάλαιο 2 Παράλληλα υπολογιστικά συστήµατα 2.1 Ορισµοί - Κατηγορίες Ο όρος παράλληλο υπολογιστικό σύστηµα σηµαίνει ότι το σύστηµα έχει την ικανότητα να εκτελεί πολλές πράξεις ταυτόχρονα, σε αντίθεση µε ένα κλιµακωτό (scalar) το οποίο έχει τη δυνατότητα να εκτελέσει µόνο µία πράξη σε έναν κύκλο. Υπάρχουν πολλά είδη παράλληλων συστηµάτων, και µπορούν να ταξινοµηθούν ανάλογα µε τον τρόπο που οι επεξεργαστές έχουν πρόσβαση στη µνήµη, από το επίπεδο υλικού στο οποίο γίνονται οι πράξεις παράλληλα και από τον τρόπο διασύνδεσης των επεξεργαστικών µονάδων (CPU). Τα δύο κύρια είδη είναι τα συστήµατα κοινής µνήµης και συστήµατα κατανεµηµένης µνήµης (shared memory και distributed memory αντίστοιχα). Στα συστήµατα κοινής µνήµης (σχήµα 2.1) τα στοιχεία επεξεργασίας (processor e- lements, κοινώς επεξεργαστές) έχουν άµεση πρόσβαση σε όλη τη µνήµη (RAM). Κλασσικά παραδείγµατα αποτελούν η αρχιτεκτονική SMP (Symmetric Multi-Processing, δηλαδή τα πολυεπεξεργαστικά συστήµατα) και η νεότερη τεχνολογία CMP (Chip-level MultiProcessor, κοινώς οι πολυπύρηνοι επεξεργαστές). Στα συστήµατα κατανεµηµένης µνήµης (σχήµα 2.2) ο (µοναδικός) επεξεργαστής έχει πρόσβαση µόνο στη µνήµη του συστήµατος στο οποίο ανήκει και όχι στη µνήµη των άλλων µελών του συστήµατος. Παράδειγµα ενός τέτοιου συστήµατος αποτελεί η συστοιχία πολλών µονοεπεξεργαστικών συστηµάτων τα οποία επικοινωνούν µέσω ενός διαύλου επικοινωνίας (τοπικού δικτύου). Φυσικά υπάρχει η δυνατότητα µίξης των δύο κατηγοριών, δηλαδή πολλά συστήµατα κοινής µνήµης να συνδέονται µέσω δικτύου δηµιουργώντας ένα µεγαλύτερο ανάµικτο συστήµατα κοινής-κατανεµηµένης µνήµης. 7

8 Κεφάλαιο 2. Παράλληλα υπολογιστικά συστήµατα Σχήµα 2.1: Αρχιτεκτονική συστήµατος κοινής µνήµης Σχήµα 2.2: Αρχιτεκτονική συστήµατος κατανεµηµένης µνήµης Στον πίνακα 2.1 ϕαίνονται οι δύο κατηγορίες µε τα χαρακτηριστικά τους. Σηµαντικότερο πλεονέκτηµα των συστηµάτων κατανεµηµένη µνήµη είναι η επεκτασιµότητα, η δυνατότητα δηλαδή αύξησης της επεξεργαστικής ισχύος προσθέτοντας επεξεργαστές. Αντίθετα τα συστήµατα κοινής µνήµης δεν µπορούν να έχουν µεγάλο αριθµό επεξεργαστών, διαθέτουν όµως πολύ µεγάλη ταχύτητα επικοινωνίας µεταξύ των ε- πεξεργαστών. Η παράµετρος αυτή πρέπει να ληφθεί υπόψη ειδικά σε περιπτώσεις όπου απαιτείται ανταλλαγή µεγάλου όγκου πληροφοριών. Η επιθυµητή υψηλότερη ταχύτητα επικοινωνίας στα συστήµατα µε κατανεµηµένη µνήµη έχουν οδηγήσει σε εξειδικευµένες τεχνολογίες δηµιουργώντας διαύλους ολοένα και υψηλότερης ταχύτητας και µικρότερου χρόνου απόκρισης (latency) προσπαθώντας να ελαττώσουν το χρονικό κόστος της επικοινωνίας. Στις τεχνολογίες αυτές συγκαταλέγονται το Myrinet [45] και το Infiniband [46]. Ενα ακόµη πλεονέκτηµα των κατανεµηµένων συστηµάτων αποτελεί η δυνατότητα χρήσης διαφορετικών αρχιτεκτονικών επεξεργαστών ή και ακόµα λειτουργικών συστηµάτων. Ετσι δίνεται η δυνατότητα επέκτασης µιας συστοιχίας µε επεξεργαστές νεότερης και γενικά διαφορετικής τεχνολογίας χωρίς να µένει η παλαιότερη χρησιµοποιούµενη τεχνολογία ανεκµετάλλευτη. Η επιλογή ανάµεσα στα δύο συστήµατα εξαρτάται καθαρά από το είδος των προβληµάτων για το οποίο

2.2. Εξειδικευµένες µονάδες 9 Πίνακας 2.1: Σύγκριση Shared-Distributed Memory Systems Shared Distributed CPUs Λίγοι Θεωρητικά άπειροι Μνήµη Περιορισµένη Θεωρητικά άπειρη Προγραµµατισµός Απλός Πολυπλοκότερος Ταχύτητα Επικοινωνίας Μεγάλη Μικρή Επεκτασιµότητα Μικρή Μεγάλη προορίζεται. Υποκατηγορίες των κατανεµηµένων συστηµάτων αποτελούν οι συστοιχίες υπολογιστών (clusters) και τα πλέγµατα υπολογιστών (Grid computing). Τα clusters είναι µια συστοιχία όµοιων κυρίως υπολογιστών που συνδέονται µέσω ενός γρήγορου τοπικού δικτύου (τυπικά Gigabit Ethernet, Myrinet, Infiniband). Ενδείκνυται για επίλυση µεγάλων προβληµάτων που ένα σύστηµα κοινής µνήµης δεν αρκεί είτε λόγω ισχύος είτε λόγω διαθέσιµης µνήµης. Σε περίπτωση όµως που απαιτείται συχνή και γρήγορη ανταλλαγή δεδοµένων, όπως συµβαίνει στις περισσότερες επαναληπτικές αριθµητικές µεθόδους που χρησιµοποιούνται στην επίλυση ϱοϊκών πεδίων, η τεχνολογία αυτή µειονεκτεί λόγω της χαµηλής ταχύτητας επικοινωνίας. Η τεχνολογία Beowulf αποτελεί εφαρµογή αυτής της κατηγορίας, πάνω στην οποία έχουν λυθεί προβλήµατα CFD [47]. Το Grid computing είναι µια τεχνολογία µε µεγαλύτερη έκταση και µπορεί να πε- ϱιλαµβάνει υπολογιστές οπουδήποτε στο διαδίκτυο οι οποίοι δουλεύουν πάνω στο ίδιο πρόβληµα. Λόγω της χαµηλής ταχύτητας επικοινωνίας χρησιµοποιείται σε προβλή- µατα που δεν υπάρχει εξάρτηση δεδοµένων και άρα δεν απαιτείται επικοινωνία µεταξύ των υποπροβληµάτων (πχ rendering, fractals κλπ) ή η απαιτούµενη ανταλλαγή δεδο- µένων είναι περιορισµένη. Η δηµοφιλέστερη εφαρµογή αυτής της τεχνολογίας είναι το SETI@Home. Η µέγιστη ϑεωρητική επιτάχυνση που µπορεί να επιτευχθεί είναι ίση µε τον αριθµό των επεξεργαστών. 2.2 Εξειδικευµένες µονάδες Πέρα από τους συµβατικούς κεντρικούς επεξεργαστές (CPU) οι οποίοι εκτελούν µια πράξη ανά κύκλο, υπάρχουν επεξεργαστές που έχουν τη δυνατότητα να εκτελούν εξειδικευµένες πράξεις σε πολλά δεδοµένα ταυτόχρονα. Κάποιες από τις σηµαντικότερες

10 Κεφάλαιο 2. Παράλληλα υπολογιστικά συστήµατα τεχνολογίες που έχουν αναπτυχθεί αναφέρονται παρακάτω συνοπτικά. 2.2.1 ιανυσµατικοί επεξεργαστές Αποτελούν µια ειδική κατηγορία επεξεργαστών που έχουν τη δυνατότητα να εκτελούν πράξεις σε µεγάλο όγκο δεδοµένων (διανύσµατα) ταυτόχρονα, παρέχοντας ένα περιβάλλον µε πολύ υψηλή ταχύτητα επεξεργασίας. Τα πιό γνωστά συστήµατα µε διανυσµατικούς επεξεργαστές είναι αυτά της εταιρίας Cray. Ενδεικτικά αναφέρεται πως ο επεξεργαστής του Cray X1 εκτελεί παράλληλα εντολές µέχρι και σε 32 floats (ή 16 double-precission). Το ταχύτερο σύστηµα του είδους αυτή τη στιγµή αποτελείται από διανυσµατικούς επεξεργαστές ϕτάνοντας την ταχύτητα των 100GFlops 1 ανά επεξεργαστή (NEC SX-9). Η τεχνολογία αυτή αν και εξελίσσεται δεν τραβάει πλέον τόσο το ενδιαφέρον λόγω του υψηλού κόστους και της ανάπτυξης των σαφώς ϕθηνότερων και επεκτάσιµων συστηµάτων διανεµηµένης µνήµης. 2.2.2 ιανυσµατικές µονάδες επεξεργαστών Σε χαµηλότερο επίπεδο και σε µικρότερη κλίµακα κατατάσσονται οι διανυσµατικές µονάδες που ενσωµατώνονται στους σύγχρονους επεξεργαστές. Οι µονάδες αυτές παρέχουν τη δυνατότητα να εκτελούνται περισσότερες από µία πράξεις ταυτόχρονα σε ένα µικρό αριθµό δεδοµένων (συνήθως µέχρι 16 bytes). Στην οµάδα αυτή ανήκουν οι µονάδες MMX (µόνο για πράξεις µε ακέραιους), SSE, 3dnow, Altivec κλπ. Η χρήση µιας τέτοιας µονάδας µπορεί να δώσει τετραπλάσια µέγιστη ϑεωρητική επιτάχυνση σε σχέση µε τον απλό επεξεργαστή για floats, ενώ ενδείκνυται για µικρό όγκο δεδοµένων. 2.2.3 Επεξεργαστές καρτών γραφικών Πολύ µεγάλο ενδιαφέρον έχουν προσελκύσει τελευταία και οι µονάδες επεξεργασίας καρτών γραφικών (GPU) οι οποίες διαθέτους πανίσχυρους επεξεργαστές και έχουν τη δυνατότητα να εκτελούν πράξεις σε ολόκληρα δισδιάστατα µητρώα (textures) σε ένα κύκλο, δηλαδή σε όλα τα στοιχεία των µητρώων ταυτόχρονα. Πέρα από την εξειδικευ- µένη τους δυνατότητα για τη γρήγορο υπολογισµό και απεικόνιση γραφικών έχουν αναπτυχθεί εργαλεία (BrookGPU, Cg, CUDA) που επιτρέπουν τη χρήση τους και για κοινές πράξεις που τις καθιστούν ένα ισχυρό εργαλείο για επίλυση προβληµάτων µε 1 Flop = FLoating-point Operations Per Second, πράξεις µε πραγµατικούς αριθµούς ανά δευτερόλεπτο

2.2.4. Προγραµµατιζόµενα ολοκληρωµένα κυκλώµατα 11 αριθµητικές µεθόδους όπως CFD ([37]). Ενδεικτικά αναφέρεται ότι η υπολογιστική ισχύς που διαθέτουν κάρτες τελευταίας τεχνολογίας αυτή τη στιγµή ξεπερνούν τα 2TFlops ενώ η ισχυρότερη ϐαθµωτή CPU τη στιγµή αυτή δεν ξεπερνά τα 50Gflops. 2.2.4 Προγραµµατιζόµενα ολοκληρωµένα κυκλώµατα Τα ολοκληρωµένα κυκλώµατα FPGA (Field-Programmable Gate Array) παρέχουν τη δυνατότητα να κατασκευαστεί ουσιαστικά ένας εξειδικευµένος επεξεργαστής για µια συγκεκριµένη εργασία. Τα κυκλώµατα αυτά περιέχουν λογικές πύλες, ενώ ο τρόπος σύνδεσης των πυλών αυτών µπορεί να προγραµµατιστεί καθώς δεν είναι προκαθορισµένος όπως στα κοινά ολοκληρωµένα. Μπορούν να επαναπρογραµµατιστούν χρησιµοποιώντας ειδικές γλώσσες προγραµµατισµού (πχ VHDL,Verilog) και ουσιαστικά µπορεί να υλοποιηθεί πάνω τους ένας αλγόριθµος σε επίπεδο hardware. Αυτό σηµαίνει ότι το κύκλωµα αυτό ϑα εκτελεί µόνο την εξειδικευµένη λειτουργία για την οποία έχει προγραµµατιστεί σε αντίθεση µε έναν κοινό επεξεργαστή που εκτελεί γενικές πράξεις. Για το λόγο αυτό µπορεί να πετύχει υψηλές ταχύτητες υπολογισµών. Σηµαντικό µειονέκτηµα είναι η δυσκολία στον προγραµµατισµό, σε σχέση µε κοινώς χρησιµοποιούµενες γλώσσες όπως η FORTRAN και η περιορισµένη µνήµη που διαθέτουν. Η τεχνολογία αυτή δε µπορούσε να αφήσει αδιάφορο τον τοµέα του CFD και έχουν παρουσιαστεί προσπάθειες χρήσης τέτοιων κυκλωµάτων για επιτάχυνση επιλυτών συστηµάτων εξισώσεων[48]. 2.3 Τεχνικές παράλληλου προγραµµατισµού Ανάλογα µε το είδος του παράλληλου συστήµατος έχουν αναπτυχθεί διάφορες τεχνικές προγραµµατισµού [49]. Η σωστή επιλογή της τεχνικής για ένα δεδοµένο σύστηµα είναι σηµαντική, για να εξασφαλιστεί η µέγιστη εκµετάλλευση των δυνατοτήτων του. Για τα συστήµατα κοινής µνήµης έχει αναπτυχθεί η τεχνική προγραµµατισµού µε νήµατα (threads). Τα νήµατα είναι αντίγραφα της αρχικής διεργασίας (process), αποτελούν ουσιαστικά µέρη της διεργασίας αλλά εκτελούν είτε διαφορετικές πράξεις ή ίδιες πράξεις σε διαφορετικά δεδοµένα. Ολα τα νήµατα έχουν πρόσβαση σε όλη τη µνήµη του συστήµατος οπότε δεν υπάρχει ανάγκη για µεταξύ τους επικοινωνία. Ο προγραµµατισµός γίνεται χρησιµοποιώντας εργαλεία όπως POSIX threads και OpenMP[13] και είναι σε γενικές γραµµές ευκολότερος αφού όλοι οι επεξεργαστές έχουν πρόσβαση σε όλη τη µνήµη. Ωστόσο είναι εύκολο να δηµιουργηθούν καταστά-

12 Κεφάλαιο 2. Παράλληλα υπολογιστικά συστήµατα σεις απροσδιοριστίας (race conditions) κατά τις οποίες οι τιµές κάποιων µεταβλητών µπορεί να αλλάξουν απροσδόκητα λόγω κακού χρονισµού των διεργασιών, όταν για παράδειγµα πολλές διεργασίες αλλάζουν την τιµή µιας κοινής µεταβλητής. Οι διεργασίες στα κατανεµηµένα συστήµατα αντίθετα δεν έχουν πρόσβαση στη µνήµη των άλλων διεργασιών, αφού εκτελείται µια διεργασία ανά επεξεργαστή. Ε- ποµένως προκύπτει η ανάγκη ενός πρωτοκόλου επικοινωνίας µεταξύ των διεργασιών µέσω του διαύλου που συνδέει τα επί µέρους στοιχεία επεξεργασίας. Το PVM (Parallel Virtual Machine) [12] και το MPI (Message Passing Interface) [11] είναι πρωτόκολλα που χρησιµοποιούνται κυρίως µε επικρατέστερο το MPI. Η δυσκολία που εισάγει αυτού του είδους ο προγραµµατισµος έγκειται στη µέριµνα του προγραµµατιστή για ορθή και έγκαιρη ανταλλαγή πληροφοριών, διαδικασία που απαιτεί την παρέµβαση του προγραµµατιστή στον κώδικα µε ενδεχόµενη µετατροπή του σειριακού αλγορίθ- µου. Ο κίνδυνος που υπάρχει σε αυτή τη διαδικασία είναι η δηµιουργία deadlocks, καταστάσεις κατά τις οποίες η εκτέλεση διεργασιών αδυνατεί να συνεχίσει λόγω αλληλεξαρτήσεων που εκκρεµούν. 2.3.1 Τεχνικές αποσύνθεσης προβλήµατος Ενα πρόβληµα µπορεί να χωριστεί σε µικρότερα υποπροβλήµατα, εφόσον ο αλγόριθ- µος επίλυσης το επιτρέπει. Ανάλογα µε τους περιορισµούς που ϑέτει ο αλγόριθµος αυτός υπάρχουν δύο τρόποι για το διαχωρισµό του προβλήµατος. αποσύνθεση πεδίου τιµών (Domain decomposision) λειτουργική αποσύνθεση (Functional decomposision) Σύµφωνα µε την 1η τεχνική το πρόβληµα χωρίζεται τοπολογικά. Το πεδίο τιµών αποσυντίθεται, και κάθε νέο υπο-πεδίο ανατίθεται σε έναν επεξεργαστή ο οποίος ϑα εκτελεί πράξεις µόνο µέσα σ αυτό το πεδίο, χωρίς να έχει πρόσβαση στα άλλα πεδία. Η µέθοδος απεικονίζεται σχηµατικά στο σχήµα 2.3 Η 2η τεχνική χωρίζει το πρόβληµα λειτουργικά. Κάθε επεξεργαστής εκτελεί δια- ϕορετικά ϐήµατα του αλγορίθµου που είναι ανεξάρτητα µεταξύ τους οπότε µπορούν να εκτελεστούν παράλληλα. Οι πράξεις γίνονται σε όλο το πεδίο τιµών και τα αποτελέσµατα του ενός επεξεργαστή δεν επηρρεάζουν αυτά κάποιου άλλου. Για επίλυση προβληµάτων µη µόνιµης ϱοής για τα οποία εκτός από το χώρο διακριτοποιείται και ο χρόνος µπορεί να γίνει αποσύνθεση και ως προς το χρόνο ([50]).

2.4. Απόδοση παράλληλων συστηµάτων 13 Σχήµα 2.3: Αποσύνθεση σε 1,2 και 3 διαστάσεις Στην πείπτωση αυτή κάθε επεξεργαστής λύνει το πεδίο ϱοής για διαφορετικό χρονικό ϐήµα. Απαραίτητη προϋπόθεση είναι να έχει ολοκληρωθεί η λύση του πρώτου χρονικού ϐήµατος ([51]). 2.4 Απόδοση παράλληλων συστηµάτων Το άµεσο κέρδος που προκύπτει από τη χρήση ενός παράλληλου συστήµατος είναι ο µειωµένος χρόνος επίλυσης του προβλήµατος. Συνεπώς αυτό που συνήθως µετράται είναι η επιτάχυνση που δίνει ένα τέτοιο σύστηµα σε σχέση µε το χρόνο εκτέλεσης του αρχικού σειριακού κώδικα σε έναν επεξεργαστή. Σύµφωνα µε το νόµο του Amdahl [52] η µέγιστη ϑεωρητική επιτάχυνση S για N επεξεργαστές είναι : S = 1 (1 P) + P N (2.1) όπου P το ποσοστό του παραλληλοποιηµένου κώδικα. Οπως προκύπτει από τη σχέση 2.1 η µέγιστη επιτάχυνση έχει ασυµπτωτική συµπεριφορά και είναι συνάρτηση

14 Κεφάλαιο 2. Παράλληλα υπολογιστικά συστήµατα του ποσοστού του παραλληλοποιηµένου κώδικα και ανεξάρτητο από τον αριθµό των επεξεργαστών (όταν N ) και απεικονίζεται και στο σχήµα 2.4 Πρέπει να τονιστεί ότι ακόµα και όταν το ποσοστό παραλληλοποίησης τείνει στο 100% η επιτάχυνση S είναι µικρότερη από τη ϑεωρητική λόγω της επικοινωνίας µεταξύ των επεξεργαστών. Στα συστήµατα κοινής µνήµης που ο δίαυλος επικοινωνίας παρέχει πολύ υψηλή ταχύτητα, η επιτάχυνση είναι µεγάλη (S N). Στα συστήµατα κατανεµηµένης µνήµης στο ο δίαυλος επικοινωνίας είναι αργός οπότε η επιτάχυνση µπορεί να αποβεί πολύ µικρότερη από τη ϑεωρητική, ειδικά αν υπάρχουν πολλά δεδοµένα που πρέπει να µεταφερθούν. Σχήµα 2.4: Νόµος του Amdahl Παρ ότι ο νόµος του Amdahl λέει ότι η µέγιστη ϑεωρητική επιτάχυνση είναι ίση µε τον αριθµό των επεξεργαστών, έχουν παρατηρηθεί και περιπτώσεις που το ϕράγ- µα αυτό ξεπερνιέται ([53]). Παρόµοια περίπτωση παρατηρείται και στην παρούσα διατριβή και το ϕαινόµενο σχολιάζεται στο κεφάλαιο των αποτελεσµάτων.

Κεφάλαιο 3 Το πρωτόκολλο MPI Το MPI είναι ένα πρωτόκολλο που έχει αναπτυχθεί για την επικοινωνία µεταξύ υπολογιστών. Βασικό χαρακτηριστικό είναι η προσφορά ενός περιβάλλοντος ανεξάρτητου από τη γλώσσα προγραµµατισµού και το λειτουργικό σύστηµα, κάνοντάς το ιδανικό για προγραµµατισµό σε παράλληλα συστήµατα χωρίς να απαιτείται εξειδικευµένη για το εκάστοτε σύστηµα γνώση. Είναι πλέον το πιο διαδεδοµένο πρωτόκολλο για την ανάπτυξη παράλληλων αλγορίθµων που προορίζονται για εκτέλεση σε συστήµατα κατανεµηµένης µνήµης, καλύπτοντας την ανάγκη για επικοινωνία που απαιτείται. Πριν αναλυθούν τα ϐήµατα της παραλληλοποίησης στα επόµενα κεφάλαια κρίνεται αναγκαία η περιγραφή και κατανόηση ϐασικών αρχών και λειτουργιών του πρωτοκόλλου MPI που χρησιµοποιήθηκε στην εργασία αυτή. 3.1 Βασικές ϱουτίνες Οι ϐασικές ϱουτίνες που παρέχει το MPI στον προγραµµατιστή είναι : 1. MPI_Init 2. MPI_Comm_Rank 3. MPI_Comm_Size 4. MPI_Send 5. MPI_Recv 6. MPI_Finalize 15

16 Κεφάλαιο 3. Το πρωτόκολλο MPI Οι 6 αυτές ϱουτίνες είναι αρκετές όχι µόνο για να ξεκινήσει να γράφει ο προγραµµατιστής ένα απλό παράλληλο πρόγραµµα, αλλά καλύπτουν πλήρως όλες τις ανάγκες του. Ωστόσο, υπάρχει µια πληθώρα άλλων ϱουτινών που διευκολύνουν τον προγραµµατισµό και ϑα παρουσιαστούν παρακάτω. Οι ϱουτίνες MPI_Init και MPI_Finalize οριοθετούν την έναρξη και λήξη της πα- ϱάλληλης επεξεργασίας αντίστοιχα. Η MPI_Comm_Size επιστρέφει το πλήθος των διεργασιών (np). Κατά κανόνα, ο αριθµός των διεργασιών είναι ίσος µε τον αριθµό των επεξεργαστών του συστήµατος. Ο αριθµός αυτός ορίζεται από τον χρήστη κατά την εκτέλεση του παράλληλου κώδικα από τη γραµµή εντολών. Η MPI_Comm_Rank δίνει σε κάθε διεργασία µια ακέραια τιµή-ταυτότητα. Με αυτόν τον τρόπο γίνεται διάκριση µεταξύ των διεργασιών αποθηκεύοντας στη µεταβλητή που επιστρέφει (έστω myrank) µια µοναδική ακέραια τιµή από 0 εως np-1 όπου np ο αριθµός των διεργασιών που επιστρέφει η MPI_Comm_Size. Η MPI_Send στέλνει δεδοµένα σε µια άλλη διεργασία, ενώ η MPI_Recv λαµβάνει από µια άλλη διεργασία. Οι MPI_Send και MPI_Recv ανήκουν στην κατηγορία της επικοινωνίας ένα προς ένα (point-to-point communication) διότι εµπλέκουν µόνο δύο διεργασίες που ανταλλάσουν µηνύµατα µεταξύ τους. Επίσης ανήκουν και στην κατηγορία των blocking communications διότι η επιστροφή στον κώδικα µετά την εκτέλεσή τους γίνεται µόνο όταν έχει ολοκληρωθεί η επικοινωνία και στις δύο πλευρές. Ο παρακάτω κώδικας αποτελεί ένα παράδειγµα ενός στοιχειώδους προγράµµατος σε γλώσσα προγραµµατισµού FORTRAN και η έξοδος που παράγει. program test include "mpif.h" integer np,myrank,ierror,istatus(mpi_status_size) call MPI_Init(ierror) call MPI_Comm_size(MPI_COMM_WORLD, np, ierror) call MPI_Comm_rank(MPI_COMM_WORLD, myrank, ierror) write(*,*) I am processor,myrank, of,np call MPI_Finalize(ierror) end εξής : Η εκτέλεση γίνεται από τη γραµµή εντολών για παράδειγµα για 4 διεργασίες ως

3.2. Συλλογική επικοινωνία 17 mpirun -np 4 test Η εκτέλεση του παραπάνω προγράµµατος γίνεται παράλληλα από 4 διεργασίες και δίνει το αποτέλεσµα : I am processor 2 of 4 I am processor 0 of 4 I am processor 3 of 4 I am processor 1 of 4 Αξιοσηµείωτο είναι το γεγονός ότι σε κάθε εκτέλεση η σειρά που τερµατίζουν οι διεργασίες είναι διαφορετική Η σειρά δεν είναι προβλέψιµη και εξαρτάται από τις υπόλοιπες διεργασίες του λειτουργικού συστήµατος και τις προτεραιότητές τους τη συγκεκριµένη στιγµή. Σε περίπτωση που κάποιος αλγόριθµος περιλαµβάνει ϐήµατα που εξαρτώνται από άλλα ϑα πρέπει να δοθεί ιδιαίτερη προσοχή και να προβλεφθεί από τον προγραµµατιστή ο κατάλληλος χειρισµός που ϑα ικανοποιήσει την εξάρτηση αυτή, ϑέτοντας την εξαρτώµενη διαδικασία σε αναµονή. 3.2 Συλλογική επικοινωνία Η συλλογική εποκοινωνία (Collective communication) είναι µια δυνατότητα που πα- ϱέχει το MPI και χρησιµεύει όταν όλες οι διεργασίες πρέπει να ανταλλάξουν δεδοµένα. Κάποιες χρήσιµες ϱουτίνες που χρησιµοποιούνται και στην εργασία αυτή είναι : 1. MPI_Barrier 2. MPI_Bcast 3. MPI_Scatter 4. MPI_Gather 5. MPI_Reduce Καλώντας την MPI_Barrier όλες οι διεργασίες περιµένουν µέχρι να εκτελεστεί από όλες. Χρησιµοποιείται για τον συγχρονισµό των εργασιών. Η MPI_Bcast στέλνει σε όλες τις διεργασίες το ίδιο µήνυµα, για παράδειγµα µια µεταβλητή ή έναν πίνακα. Χρήσιµη για την κοινοποίηση µιας τιµής µιας διεργασίας στις υπόλοιπες.

18 Κεφάλαιο 3. Το πρωτόκολλο MPI Σχήµα 3.1: Κοινοποίηση δεδοµένων Σχήµα 3.2: ιανοµή και συλλογή δεδοµένων Η MPI_Scatter διανέµει δεδοµένα από µια διεργασία στις υπόλοιπες ενώ η MPI_Gather συλλέγει δεδοµένα από όλες τις διεργασίες σε µία. Χαρακτηριστική χρήση της MPI_Scatter είναι κατά τη διανοµή των αρχικών δεδοµένων από τον κεντρικό επεξεργαστή στον οποίο γίνονται κάποιοι αρχικοί υπολογισµοί, στους υπόλοιπους επεξεργαστές πριν ξεκινήσει η επίλυση µε την επαναληπτική διαδιασία. Η MPI_Reduce εκτελεί έναν υπολογισµό σε όλες τις διεργασίες και αποθηκεύει στο αποτέλεσµα σε µία. Εδώ χρησιµοποιείται για τον υπολογισµό των σφαλµάτων καθώς και στον υπολογισµό ποσοτήτων στις εισόδους/εξόδους του ϱοϊκού πεδίου. 3.3 Παραγόµενοι τύποι δεδοµένων Ολες οι παραπάνω ϱουτίνες χειρίζονται µηνύµατα που δεν αποτελούνται µόνο από απλούς τύπους δεδοµένων (integer, float, κλπ). Το MPI παρέχει τη δυνατότητα στον προγραµµατιστή να δηµιουργήσει δικούς του τύπους δεδοµένων σε περιπτώσεις που για παράδειγµα ϑέλει να µεταφέρει δοµές ή δεδοµένα που δεν είναι συνεχόµενα στη µνήµη. Κλασσικό παράδειγµα αποτελεί η αποστολή µιας στήλης ενός δισδιάστατου πίνακα, η οποία στην FORTRAN αποτελείται από µη συνεχόµενα στη µνήµη στοιχεία. Η αποστολή n floats για παράδειγµα µπορεί να γίνει στέλνοντας 1 κάθε ϕορά : do i=1,n Send 1 float

3.3. Παραγόµενοι τύποι δεδοµένων 19 enddo Χρησιµοποιώντας ένα τύπο δεδοµένων η αποστολή γίνεται µε µιάς : Send n floats Στην πρώτη περίπτωση, σε κάθε αποστολή προστίθεται στο χρόνο αποστολής και ένας χρόνος απόκρισης. Ο ίδιος χρόνος απόκρισης προστίθεται και στη δεύτερη περίπτωση µία όµως ϕορά. Ετσι στέλνοντας µαζικά τα δεδοµένα εξοικονοµείται πολύτιµος χρόνος ειδικά σε περιπτώσεις που απαιτείται συχνή ανταλλαγή µικρού όγκου δεδοµένων.

20

Κεφάλαιο 4 Σειριακός επιλυτής 4.1 Περιγραφή του σειριακού επιλυτή Ο σειριακός επιλυτής ϐασίζεται στην µέθοδο των πεπερασµένων όγκων, και έχει αναπτυχθεί στο Εργαστήριο Μηχανικής Ρευστών και Στροβιλοµηχανών [54, 55]. Το πεδίο χωρίζεται σε στοιχειώδεις εξαπλευρικούς όγκους ελέγχου (κελιά) µέσα στους οποίους ϑεωρείται ότι το ϱευστό έχει σταθερές ιδιότητες. Κατά σύµβαση δίνονται τα ονόµατα W,E,S,N,B,T στις επιφάνειες του όγκου ελέγχου όπως απεικονίζονται στο σχήµα 4.1 Σε κάθε όγκο ελέγχου εφαρµόζονται οι εξισώσεις συνέχειας και ορµής από τις οποίες προκύπτουν οι εξισώσεις Navier-Stokes [56, 57] µε την εξής µορφή : (ρu i U j ) = p + [ ( U i µ x j x i x j x j + U ) ] j ρu x i u j i (4.1) Το σύνολο των στοιχειωδών όγκων δηµιουργεί ένα δοµηµένο πλέγµα, πάνω στο οποίο διακριτοποιούνται οι εξισώσεις Navier-Stokes. Ετσι προκύπτει ένα σύστηµα εξισώσεων µε την εξής µορφή : A P φ P = l=w,e,s,n,b,t (A l φ l ) + S u (4.2) όπου φ η προς επίλυση µεταβλητή (ταχύτητα, πίεση και τύρβη), Α είναι συντελεστές που προκύπτουν από όρους συναγωγής και διάχυσης και S u επιλύονται άµεσα αλλά η συνεισφορά τους δίνεται σαν όρος πηγής. είναι όροι που δεν Για την πίεση δεν υπάρχει εξίσωση µεταφοράς και η επίλυση γίνεται έµµεσα, επιλύοντας το παραπάνω σύστηµα εξισώσεων για τη διαφορά της πίεσης και διορθώνοντας τη µεταβλητή της πίεσης, σύµφωνα µε τον αλγόριθµο SIMPLE [58, 59]. Το 21

22 Κεφάλαιο 4. Σειριακός επιλυτής Σχήµα 4.1: Στοιχειώδης όγκος ελέγχου σύστηµα λύνεται µε τον αλγόριθµο SIP ο οποίος αναλύεται σε επόµενη παράγραφο. 4.2 Βήµατα επίλυσης Η λειτουργία του σειριακού κώδικα περιγράφεται στο διάγραµµα ϱοής του σχήµατος 4.2 και τα ϐήµατα περιγράφονται αναλυτικότερα παρακάτω. 4.2.1 Εισαγωγή δεδοµένων και Υπολογισµός γεωµετρικών ποσοτήτων Αρχικά εισάγεται η γεωµετρία του προβλήµατος, αρχικές συνθήκες και σταθερές που περιγράφουν το πρόβληµα. Ως γεωµετρία δίνονται οι συντεταγµένες ενός δοµηµένου πλέγµατος οι οποίες αντιστοιχούν στις γωνίες των όγκων ελέγχου που ορίζει. Στη ϕάση αυτή εισάγονται και οι οριακές συνθήκες, όπως ύπαρξη τοιχωµάτων, συνθήκες συµµετρίας και περιοδικότητας. Επίσης δίνεται µια αρχική εκτίµηση του πεδίου τιµών ϐάσει του οποίου ϑα ξεκινήσει η επίλυση µέσω της επαναληπτικής διαδικασίας. Υπολογίζονται γεωµετρικές ποσότητες των όγκων ελέγχου, όπως συντεταγµένες των κέντρων, κέντρων ακµών και πλευρών, παράγωγοι στον κανονικοποιηµένο χώρο κλπ.

4.2.2. Επαναληπτική διαδικασία 23 Σχήµα 4.2: Λογικό διάγραµµα σειριακού κώδικα 4.2.2 Επαναληπτική διαδικασία Ακριβώς πριν ξεκινήσει η επαναληπτική διαδικασία υπολογίζονται οι όροι συναγωγής. Με την εκκίνηση της διαδικασίας εφαρµόζονται οι οριακές συνθήκες και κατόπιν επιλύονται οι µεταβλητές u, v, w (που αντιστοιχούν στις ταχύτητες στις διευθύνσεις x, y, z αντίστοιχα) ακολουθεί η επίλυση της πίεσης p και εφαρµόζεται η εξίσωση συνέχειας στην έξοδο της ϱοής. Η επίλυση των ταχυτήτων περιλαµβάνει µια σειρά από ενέργειες που ϕαίνονται στο λογικό διάγραµµα 4.2. 4.2.3 Ελεγχος τερµατισµού Το σφάλµα (residual) αποτελεί το κριτήριο για τη σύγκλιση της λύσης, και η τιµή του κάτω από την οποία σταµατά η επαναληπτική διαδικασία και ϑεωρείται ότι έχει ϐρεθεί η λύση εξαρτάται από το πρόβληµα. Συνήθως επιλέγεται η τιµή 10 5. Πριν

24 Κεφάλαιο 4. Σειριακός επιλυτής τον τερµατισµό γράφονται τα αποτελέσµατα σε ειδικά µορφοποιηµένο αρχείο για µετέπειτα οπτικοποίηση και επεξεργασία. Το residual υπολογίζεται ως εξής : res φ = (A e φ i+1jk + A w φ i 1jk + A n φ ij+1k + A s φ ij 1k + A t φ ijk+1 + A b φ ijk 1 + A p φ ijk ) (4.3) 4.3 ιακριτοποίηση Το σχήµα διακριτοποίησης HLPA του Zhu [60] που χρησιµοποιείται συνοψίζεται στα παρακάτω ϐήµατα : Υπολογισµός των συντελεστών διακοπής a + i a i για κάθε επιφάνεια του όγκου ε- λέγχου (i=w,e,s,n,b,t) αν u i 0 τότε a + 1 αν φ P φ P 1 + φ P 2 < φ P φ P 2 i = 0 για κάθε άλλη περίπτωση αν u i < 0 τότε a i = 1 αν φ P 1 2φ P + φ P+1 < φ P 1 φ P+1 0 για κάθε άλλη περίπτωση Η προς επίλυση µεταβλητή στις πλευρές του κελιού φ i δίνεται από τη σχέση : φ i = u + i φ P 1 + u 1 i φ P + φ i όπου φ i = 0.5 µε ( 1 + u i u i ) a + i (φ P φ P 1 ) φ [ P 1 φ P 2 + 1 0.5(1 + u ] i ) a i (φ P 1 φ P ) φ P φ P+1 φ P + φ P 2 u i φ P 1 + φ P+1 Το τελικό σύστηµα εξισώσεων που προκύπτει είναι : A i φ P = A i φ i + S P i A i = Q D i + Q C i 0.5 i ( 1 + u i u i Οι όροι Q D i + Q C i είναι ποσότητες που εκφράζουν τη διάχυση και τη συναγωγή αντίστοιχα στις πλευρές του όγκου ελέγχου και προκύπτουν από τη διακριτοποίηση των εξισώσεων µεταφοράς [55]. Οπως ϕαίνεται από τις εξισώσεις για τον υπολογισµό των a + i, a i ) καθώς και του φ i απαιτούνται οι τιµές από δύο γειτονικούς όγκους ελέγχου (φ P 1, φ P 2 ). Η εξάρτηση αυτή απεικονίζεται στο σχήµα 4.3 όπου ϕαίνεται στο κέντρο ο όγκος ελέγχου σε τοµή στο επίπεδο i-j και οι γειτονικοί του από τους οποίους χρειάζεται τις τιµές.

4.4. ιαχείριση µνήµης 25 4.4 ιαχείριση µνήµης Σχήµα 4.3: Σχήµα διακριτοποίησης HLPA Η εισαγωγή της γεωµετρίας, των αρχικών και οριακών συνθηκών γίνεται σε τρισδιάστατα µητρώα. Ακριβώς επειδή το πρόβληµα έχει τρισδιάστατη υπόσταση, η καταχώρηση των ποσοτήτων αυτών είναι πιο κατανοητή και διευκολύνει τον έλεγχο της διαδικασίας. Οι µεταβλητές αν και αναφέρονται σε τρισδιάστατα µεγέθη αποθηκεύονται σε µονοδιάστατα µητρώα µετά από ειδική µετατροπή. Οπως ϑα δειχθεί, αυτό δίνει ευελιξία στη διανοµή των δεδοµένων και στην αναφορά σε υποπεριοχές του προς επίλυση πεδίου και για το λόγο αυτό έχει προταθεί και εφαρµόζεται στην πράξη [51]. Η αποθήκευση των µεταβλητών σε µονοδιάστατο µητρώο-διάνυσµα γίνεται ακρι- ϐώς όπως και στη µνήµη RAM σειριακά (γίνεται εσωτερικά από τον µεταγλωτιστή). Ο τρόπος αποθήκευσης ενός µητρώου εξαρτάται από τη γλώσσα προγραµµατισµού. Στη γλώσσα FORTRAN η οποία και χρησιµοποιείται εδώ, τα στοιχεία ενός πολυδιάστατου µητρώου αποθηκεύονται στη µνήµη ξεκινώντας από την 1η διάσταση και προχωρώντας στις υπόλοιπες. Ολοι οι τρισδιάστατοι πίνακες λοιπόν µετασχηµατίζονται σε µονοδιάστατους ως εξής : A(i, j, k) A(ijk), ijk = (k 1) ni nj + (j 1) ni + i (4.4) όπου ni, nj, nk οι διαστάσεις του µητρώου A (αρχικοποιηµένο ως A(ni, nj, nk)) σύµ- ϕωνα µε το σχήµα 4.4.

26 Κεφάλαιο 4. Σειριακός επιλυτής Πίνακας 4.1: Αντιστοιχία ϑέσεων µνήµης κατά τη διανυσµατοποίηση Θέση στο χώρο Θέση στο διάνυσµα i,j,k ijk i+1,j,k ijk+1 i-1,j,k ijk-1 i,j+1,k ijk+ni i,j-1,k ijk-ni i,j,k+1 ijk+ni*nj i,j,k-1 ijk-ni*nj Σχήµα 4.4: Μετατροπή δισδιάστατου µητρώου σε διάνυσµα Η αναφορά στα γειτονικά κελιά συνεπώς ϑα γίνεται σύµφωνα µε την αντιστοιχία στον πίνακα 4.1. Στο σχήµα 4.5 απεικονίζεται ένα µητρώο Α µε διαστάσεις 10x1x12. Τα περιεχό- µενα του µητρώου µετά τη µετατροπή σε διάνυσµα ϑα είναι A = [1, 2, 3,..., 119, 120]. Το προς επίλυση πεδίο ϱοής αποτελείται από τα λευκά κελιά, ενώ τα διαγραµµισµένα χρησιµεύουν για την εφαρµογή των οριακών συνθηκών. Αν indexes είναι το µητρώο που περιέχει τους αριθµούς των υπολογιστικών (λευκών) κελιών τα περιεχόµενά του ϑα είναι indexes = [23, 24, 25, 26, 27, 28, 33, 34,..., 97, 98] και η αναφορά στην πε- ϱιοχή του προς επίλυση πεδίου γίνεται πλέον εύκολα ως A(indexes), χρησιµοποιώντας τη δυνατότητα αυτή (array subscripts) που δίνει η γλώσσα προγραµµατισµού FOR- TRAN. Ετσι ο κώδικας αποκτά µια πιό συµπαγοποιηµένη και κατανοητή µορφή, εξαλείφοντας πολλαπλές χρήσεις ϐρόγχων (loops) και ελέγχων if-then-else-endif.

4.5. Επιλυτής συστήµατος 27 Σχήµα 4.5: Αρίθµηση όγκων ελέγχου do k=3,nk-2 do j=3,nk-2 do i=3,ni-2 a(i+1,j,k)=b(i,j+1,k)+c(i,j,k+1) end do end do end do a(indexes+1)=b(indexes+ni)+c(indexes+ni*nj) 4.5 Επιλυτής συστήµατος Η επίλυση του συστήµατος που προκύπτει λύνεται µε τη µέθοδο SIP (Strongly Implicit Procedure και αναπτύχθηκε από τον Stone [27] το 1968. Εκµεταλλεύεται την αραιή δοµή του µητρώου συντελεστών για να ελαχιστοποιήσει τη χρησιµοποιούµενη µνήµη αλλά και το χρόνο επίλυσης. Ο αλγόριθµος αυτός είναι µια επαναληπτική διαδικασία και παρουσιάζει σταθερότητα και πολύ γρήγορη σύγκλιση για αυτού του είδους τα συστήµατα, γεγονός που καθιστούν την επιλογή του µονόδροµο.

28 Κεφάλαιο 4. Σειριακός επιλυτής 4.5.1 Περιγραφή του αλγορίθµου Το τελικό σύστηµα εξισώσεων που προκύπτει από τη διαδικασία διακριτοποίησης είναι : A p φ P = A w φ W + A e φ E + A s φ S + A n φ N + A b φ B + A t φ T + S P (4.5) όπου A p = A w + A e + A s + A n + A b + A t. και έχει τη µορφή που ϕαίνεται στο σχήµα 4.6 Οι τιµές της κυρίας διαγωνίου του πίνακα Α (A p ) είναι µη µηδενικές ενώ όλες οι άλλες τιµές είναι µηδενικές εκτός από τις σεσηµασµένες διαγωνίους, που αντικατοπτρίζουν τη συνεισφορά των γειτονικών κελιών. Η αντιστοιχία των δεικτών P, W, E, S, N, B, T µε τους γειτονικούς όγκους ελέγχου είναι : P (i, j, k) E (i + 1, j, k), W (i 1, j, k) N (i, j + 1, k), S (i, j 1, k) T (i, j, k + 1), B (i, j, k 1) Η διακριτοποιηµέµη εξίσωση 4.5 παίρνει τη µορφή : A P φ ijk = A e φ i+1jk + A w φ i 1jk + A n φ ij+1k + A s φ ij 1k + A t φ ijk+1 + A b φ ijk 1 + S P (4.6) ή Τα ϐήµατα του αλγορίθµου είναι : AΦ = B (4.7) Υπολογισµός L,U (Αρχή επαναληπτικής διαδικασίας) Υπολογισµός σφάλµατος R (residual) Υπολογισµός L (forward substitution) Υπολογισµός U (backward substitution) ιόρθωση µεταβλητής (Τέλος επαναληπτικής διαδικασίας)

4.5.1. Περιγραφή του αλγορίθµου 29 Σχήµα 4.6: Σύστηµα εξισώσεων Αρχικά επιλέγεται ένας πίνακας Ν έτσι ώστε να διαφέρει ελάχιστα από τον Α, ο οποίος να µπορεί να παραγοντοποιηθεί σε γινόµενο δύο πινάκων L και U (Ν=LU). Ο U είναι άνω τριγωνικός έχοντας τους συντελεστές B P, B E, B N, B T στις αντίστοιχες διαγωνίους όπου ϐρίσκονται στον πίνακα Α οι A P, A E, A N, A T. Ο L είναι κάτω τριγωνικός έχοντας τους συντελεστές B W, B S, B B στις αντίστοιχες διαγωνίους και µοναδιαία κύρια διαγώνιο. Ολα τα υπόλοιπα στοιχεία των δύο πινάκων είναι µηδενικά. Η µορφή των πινάκων L και U απεικονίζεται στο σχήµα 4.7. Σχήµα 4.7: Πίνακες L και U

30 Κεφάλαιο 4. Σειριακός επιλυτής Αρχικά εξισώνονται οι διαγώνιοι των πινάκων L και Ν : B b(i,j,k) = A b(i,j,k) B s(i,j,k) = A s(i,j,k) B w(i,j,k) = A w(i,j,k) B w(i,j,k) B e(i 1,j,k) + B s(i,j,k) B n(i,j 1,k) + B b(i,j,k) B t(i,j,k 1) + B P(i,j,k) = A p(i,j,k) (4.8) B e(i,j,k) B b(i,j,k) = A e(i,j,k) B n(i,j,k) B b(i,j,k) = A n(i,j,k) B t(i,j,k) B b(i,j,k) = A t(i,j,k) Από το γινόµενο των L και U προκύπτουν οι επιπλέον διαγώνιοι που δεν αντιστοχούν σε διαγωνίους του πίνακα Α : B wn(i,j,k) = B w(i,j,k) B n(i 1,j,k) B wt(i,j,k) = B w(i,j,k) B t(i 1,j,k) B se(i,j,k) = B s(i,j,k) B e(i,j 1,k) B st(i,j,k) = B s(i,j,k) B t(i,j 1,k) (4.9) B be(i,j,k) = B b(i,j,k) B e(i,j,k 1) B bn(i,j,k) = B b(i,j,k) B n(i,j,k 1) Για κάθε όγκο ελέγχου i,j,k οι εξισώσεις που επιλύονται σε κάθε επανάληψη m είναι : A P(i,j,k) φ m (i,j,k) = A e(i,j,k) φ m (i+1,j,k) + A w(i,j,k)φ m (i 1,j,k) + A n(i,j,k) φ m (i,j+1,k) + A s(i,j,k)φ m (i,j 1,k) + A t(i,j,k) φ m (i,j,k+1) + A b(i,j,k)φ m (i,j,k 1) (4.10) B wn(i,j,k) φ m (i 1,j+1,k) B wt(i,j,k)φ m (i 1,j,k+1) B se(i,j,k) φ m (i+1,j 1,k) B st(i,j,k)φ m (i,j 1,k+1) B be(i,j,k) φ m (i+1,j,k 1) B bn(i,j,k)φ m (i,j+1,k 1) + B (i,j,k) Μετά από κατάλληλες προσεγγίσεις µέσω αναπτυγµάτων Taylor ([61]) προκύπτουν οι παρακάτω σχέσεις που δίνουν τις τιµές των επιπλέον όρων που εµφανίζονται στην εξίσωση 4.10 φ (i 1,j+1,k) = φ (i,j,k) + φ (i,j+1,k) + φ (i 1,j,k)

4.5.1. Περιγραφή του αλγορίθµου 31 φ (i 1,j,k+1) = φ (i,j,k) + φ (i 1,j,k) + φ (i,j,k+1) φ (i+1,j 1,k) = φ (i,j,k) + φ (i+1,j,k) + φ (i,j 1,k) (4.11) φ (i+1,j,k 1) = φ (i,j,k) + φ (i+1,j,k) + φ (i,j,k 1) φ (i,j 1,k+1) = φ (i,j,k) + φ (i,j 1,k) + φ (i,j,k+1) φ (i,j+1,k 1) = φ (i,j,k) + φ (i,j+1,k) + φ (i,j,k 1) Οι παραπάνω όροι πριν αφαιρεθούν από το δεξί µέλος της 4.10 πολλαπλασιάζονται µε µία σταθερά a, µε 0 < a < 1, για λόγους ευστάθειας. Η 4.10 παίρνει έτσι τη µορφή : A P(i,j,k) φ m (i,j,k) = A e(i,j,k) φ m (i+1,j,k) + A w(i,j,k)φ m (i 1,j,k) + A n(i,j,k) φ m (i,j+1,k) + A s(i,j,k)φ m (i,j 1,k) + A t(i,j,k) φ m (i,j,k+1) + A b(i,j,k)φ m (i,j,k 1) ( B wn(i,j,k) φ m (i 1,j+1,k) ( a φ m + (i,j,k) φm + )) (i,j+1,k) φm (i 1,j,k) ( B wt(i,j,k) φ m (i 1,j,k+1) ( a φ m + (i,j,k) φm + )) (i 1,j,k) φm (i,j,k+1) ( B se(i,j,k) φ m (i+1,j 1,k) ( )) a φ m + (i,j,k) φm + (i+1,j,k) φm (i,j 1,k) ( B st(i,j,k) φ m (i,j 1,k+1) ( a φ m + (i,j,k) φm + )) (i,j 1,k) φm (i,j,k+1) ( B be(i,j,k) φ m (i+1,j,k 1) ( )) a φ m + (i,j,k) φm + (i+1,j,k) φm (i,j,k 1) ( B bn(i,j,k) φ m (i,j+1,k 1) ( a φ m + (i,j,k) φm + (i,j+1,k) (i,j,k 1))) φm + B(i,j,k) (4.12) Από το συνδιασµό των 4.12 και 4.9 προκύπτουν οι συντελεστές των U και U: A b(i,j,k) B b(i,j,k) = ) 1 + a (B e(i,j,k 1) + B n(i,j,k 1) A s(i,j,k) B s(i,j,k) = ) 1 + a (B e(i,j 1,k) + B t(i,j 1,k) A w(i,j,k) B w(i,j,k) = ) 1 + a (B n(i 1,j,k) + B t(i 1,j,k) ) B t(i,j,k) = A t(i,j,k) + a (B w(i,j,k) B t(i 1,j,k) + B s(i,j,k) B t(i,j 1,k) B P(i,j,k) ) B n(i,j,k) = A n(i,j,k) + a (B w(i,j,k) B n(i 1,j,k) + B b(i,j,k) B n(i,j,k 1) (4.13) B P(i,j,k) ) B e(i,j,k) = A e(i,j,k) + a (B s(i,j,k) B e(i,j 1,k) + B b(i,j,k) B e(i,j,k 1) B P(i,j,k)

32 Κεφάλαιο 4. Σειριακός επιλυτής B P(i,j,k) = A P(i,j,k) )) + a (B w(i,j,k) (B n(i 1,j,k) + B t(i 1,j,k) B e(i 1,j,k) )) + a (B s(i,j,k) (B e(i,j 1,k) + B t(i,j 1,k) B n(i,j 1,k) )) + a (B b(i,j,k) (B e(i,j,k 1) + B n(i,j,k 1) B t(i,j,k 1) Στη σχέση AΦ = B ϑεωρείται A = N + P όπου P πίνακας έτσι ώστε ο N να διαφέρει ελάχιστα από τον A. Σε κάθε επανάληψη m ισχύει : ( NΦ m = PΦ m 1 +B N Φ m Φ m 1) = AΦ m 1 +B N m = R m 1 LU m = R m 1 όπου m = Φ m Φ m 1 ο πίνακας των διορθώσεων και R m 1 = AΦ m 1 B ο πίνακας των υπολοίπων στην m επανάληψη. Το τελικό σύστηµα είναι ισοδύναµο µε τα δύο τριγωνικά συστήµατα : LY m = R m 1 U m = Y m Το πρώτο λύνεται µε αντικατάσταση προς τα εµπρός και προκύπτει : Y m (i,j,k) = Rm 1 (i,j,k) B w(i,j,k)y m (i 1,j,k) B s(i,j,k)y m (i,j 1,k) B b(i,j,k)y m (i,j,k 1) (4.14) B P(i,j,k) ενώ από το 2ο µε αντικατάσταση προς τα πίσω : m (i,j,k) = Y m (i,j,k) B e(i,j,k) m (i+1,j,k) B n(i,j+1,k) m (i,j,k) B t(i,j,k) m (i,j,k+1) (4.15) Ο υπολογισµός της άγνωστης µεταβλητής προκύπτει από τη σχέση : Φ m = m + Φ m 1 (4.16) Ο αλγόριθµος τερµατίζει στο τέλος των προκαθορισµένων επαναλήψεων m ή όταν ικανοποιηθεί το κριτήριο σύγκλισης της µορφής R m 1 < ε όπου ε ένας µικρός ϑετικός αριθµός που δηλώνει την ακρίβεια της λύσης. i,j,k i,j,k

Κεφάλαιο 5 Παραλληλοποίηση του σειριακού κώδικα Κατά την πρώτη ϕάση της παραλληλοποίησης δίνεται προσπάθεια οι απαιτούµενες αλλαγές στον κώδικα να είναι το κατά δυνατόν λιγότερες. Η διατήρηση της αρχικής µορφής του κώδικα αποσκοπεί στην ευκολότερη κατανόηση του παράλληλου κώδικα, ώστε να µην χρειάζονται εξειδικευµένες γνώσεις παράλληλου προγραµµατισµού από την πλευρά του ερευνητή που τον χρησιµοποιεί. Ως µέθοδος παράλληλου προγραµµατισµού χρησιµοποιήθηκε η αποσύνθεση πεδίου, ενώ η επικοινωνία των υποπεδίων πραγµατοποιείται αποκλειστικά µέσω του πρωτοκόλλου MPI. Αν και η συστοιχία αποτελείται από συστήµατα κοινής µνήµης, δε χρησιµοποιήθηκε υβριδικός προγραµµατισµός όπως συνδιασµός MPI µε threads. Για τη ϐέλτιστη εκµετάλλευση όµως έγινε χρήση του αρθρώµατος usysv σύµφωνα µε το οποίο η επικοινωνία ανά- µεσα σε επεξεργαστές που ανήκουν σε σύστηµα κοινής µνήµης γίνεται µέσω IPC 1 χρησιµοποιώντας σηµατοφορείς (semaphores) αντί να γίνεται µέσω του πρωτοκόλλου TCP 2 όπως είναι η προεπιλεγµένη ϱύθµιση του MPI και χρησιµοποιείται για την ε- πικοινωνία ανάµεσα στους κόµβους. Με τον τρόπο αυτό επιτυγχάνεται µεγαλύτερη ταχύτητα επικοινωνίας µεταξύ επεξεργαστών που ανήκουν στο ίδιο σύστηµα κοινής µνήµης. 1 Inter-Process Communication 2 Transmission Control Protocol 33

34 Κεφάλαιο 5. Παραλληλοποίηση του σειριακού κώδικα 5.1 Ανάλυση σειριακού κώδικα Η ανάλυση του σειριακού κώδικα είναι ένα αναγκαίο ϐήµα που πρέπει να γίνει έτσι ώστε να γίνει σωστή επιλογή της µεθόδου παραλληλοποίησης. Το πρώτο χαρακτηριστικό του κώδικα είναι ότι εκτελεί τις ίδιες πράξεις σε όλο τον υπολογιστικό χώρο. Αυτό συνεπάγεται ότι καταλληλότερη τεχνική ενδείκνυται η αποσύνθεση πεδίου (Domain decomposition) Η επαναληπτική διαδικασία που εµπλέκεται στην επίλυση του προβλήµατος επιτάσσει την κατά το δυνατόν πληρότερη παραλληλοποίηση του µέρους αυτού καθώς εκεί αναλώνεται σχεδόν όλο το µέρος του χρόνου. Στο ϐήµα αυτό επιδιώκεται η ελαχιστοποίηση του σειριακού µέρους του κώδικα ώστε να προκύψει η µέγιστη δυνατή απόδοση σύµφωνα µε τον νόµο του Amdahl [52]. Επίσης µετά από ανάλυση επιδόσεων (performance analysis - profiling) προκύπτει ότι ο χρόνος που απασχολεί ο επιλυτής του συστήµατος εξισώσεων είναι αναλογικά µικρός, επειδή ο κώδικας αναλώνει αρκετό χρόνο εκτελώντας υπολογισµούς που προετοιµάζουν µια µεγάλη πληθώρα ϐοηθητικών µητρώων πριν καταλήξει στον τελικό υπολογισµό των µητρώων του γραµµικού συστήµατος. Οι υπολογισµοί αυτοί λοιπόν ϑα πρέπει να παραλληλοποιηθούν. Η ανάλυση έγινε χρησιµοποιώντας το εργαλείο gprof µετά από κατάλληλη µεταγλώτισση του κώδικα ώστε να παράγει στατιστικά κλήσεων και έγινε πάνω σε ένα πλέγµα 80x50x50 εκτελώντας 10 επαναλήψεις. Στον πίνακα 5.1 ϕαίνονται τα αποτελέσµατα της ανάλυσης για τις κυριότερες υπορουτίνες. Τον περισσότερο χρόνο (40%) καταναλώνει ο επιλυτής του συστήµατος SIP (υπορουτίνα stone). Πίνακας 5.1: Ανάλυση επιδόσεων του σειριακού κώδικα % cumulative self self total time seconds seconds s/call s/call name 40.36 13.06 13.06 0.09 0.09 stone_ 10.32 16.40 3.34 0.00 0.00 secdir_ 5.66 18.23 1.83 0.04 0.04 scheme_ 4.36 19.64 1.41 0.14 0.32 calcp_ 3.71 20.84 1.20 0.02 0.02 convec_ 3.18 21.87 1.03 0.10 0.48 calcu_ 3.06 22.86 0.99 0.10 0.73 calcw_

5.2. Αποσύνθεση πεδίου 35 5.2 Αποσύνθεση πεδίου Ο υπολογιστικός χώρος διαιρείται σε ίσα µέρη (όσον αφορά τα υπολογιστικά κελιά) και οι νέες υποπεριοχές (υποπεδία) που προκύπτουν διανέµονται σε κάθε επεξεργαστή σύµφωνα µε τη µέθοδο αποσύνθεσης πεδίου τιµών (Domain decomposition). Η ισοκατανοµή επιδιώκεται διότι αν κάποιος επεξεργαστής εκτελεί πράξεις σε λιγότερα δεδοµένα ϑα πρέπει να περιµένει έναν άλλον που επεξεργάζεται περισσότερα δεδοµένα. Ο νεκρός αυτός χρόνος ϑα πρέπει να ελαχιστοποιηθεί. Στην ιδανική περίπτωση όλοι οι επεξεργαστές δουλεύουν στον ίδιο αριθµό κελιών οπότε τελειώνουν την επαναληπτική διαδικασία στον ίδιο χρόνο και ο νεκρός χρόνος είναι µηδέν, αξιοποιώντας το σύστηµα στο µέγιστο των δυνατοτήτων του. Σύµφωνα µε τη µέθοδο αυτή κάθε επεξεργαστής αναλαµβάνει να επιλύσει ένα µέρος του πεδίου που του αναλογεί. Κάθε επεξεργαστής δηλαδή επιλύει ένα υποπρόβληµα χωρίς να τον ενδιαφέρει τι συµβαίνει στο υπόλοιπο πεδίο. Η επίλυση των υποπεδίων γίνεται µεν µεµονωµένα για κάθε επεξεργαστή, όµως πρέπει µε κάποιο τρόπο να µεταφερθεί η πληροφορία της επίλυσης των γειτονικών υποπεδίων καθότι πρόκειται για ένα πρόβληµα και όχι για αποµονωµένα υποπροβλήµατα. Ο τρόπος επικοινωνίας των επι µέρους διαδικασιών επίλυσης αναλύεται παρακάτω. Η αρχικοποίηση των µητρώων, η εισαγωγή της γεωµετρίας, των οριακών και αρχικών συνθηκών γίνεται από έναν επεξεργαστή (master) και στη συνέχεια αυτός διανέµει τα δεδοµένα στους υπόλοιπους ακριβώς πριν αρχίσει η επαναληπτική διαδικασία. Το λογικό διάγραµµα του παράλληλου κώδικα ϕαίνεται στο σχήµα 5.1. Ο κώδικας α- νήκει κατά συνέπεια στην κατηγορία SPMD σύµφωνα µε την ταξινόµηση κατά Flynn [62]. 5.3 Εξισορρόπηση Αν d c ο όγκος δεδοµένων που επεξεργάζεται ο επεξεργαστής c και v c η ταχύτητά του τότε ϑα εκτελέσει τις πράξεις σε χρόνο t c = d c v c. Στην απλούστερη περίπτωση όλοι οι επεξεργαστές εκτελούν τις πράξεις µε την ίδια ταχύτητα πάνω στον ίδιο αριθµό δεδοµένων, άρα τελειώνουν στον ίδιο χρόνο. Στη γενική περίπτωση που δεν τρέχουν όλοι οι επεξεργαστές στην ίδια ταχύτητα, κάθε επεξεργαστής χρειάζεται διαφορετικό χρόνο να επιλύσει το ίδιο πεδίο. Στο σχήµα 5.2 ϕαίνεται ένα τέτοιο παράδειγµα 6 επεξεργαστών. Πρώτος τελειώνει ο 5 και περιµένει τους υπόλοιπους πριν ξεκινήσει η επόµενη επανάληψη της επίλυσης. Ετσι δηµιουργείται ένας νεκρός χρόνος ίσος µε

36 Κεφάλαιο 5. Παραλληλοποίηση του σειριακού κώδικα Σχήµα 5.1: ιάγραµµα ϱοής του παράλληλου κώδικα t max t min, στην περίπτωση αυτή t 5 t 3. Σκοπός είναι να ελαχιστοποιηθεί ο νεκρός αυτός χρόνος, ώστε να επιτευχθεί η µέγιστη απόδοση της συστοιχίας. Η ταχύτητα των επεξεργαστών είναι κάτι αµετάβλητο, οπότε το πρόβληµα αυτό λύνεται αναθέτοντας σε κάθε επεξεργαστή τόσα δεδοµένα ώστε να συγχρονιστεί µε τους υπόλοιπους. Στην απλή περίπτωση που όλοι οι επεξεργαστές έχουν την ίδια ταχύτητα, καθένας ϑα πρέπει να επεξεργάζεται τον ίδιο αριθµό δεδοµένων ώστε σε κάθε επανάληψη να τερµατίζουν µαζί. Αν nijk = ni nj nk ο αριθµός των κελιών τότε η ιδανική κατανοµή τους ϑα πρέπει να είναι nijk κελιά ανά επεξεργαστή, όπου np ο αριθµός των np επεξεργαστών. Αυτό δεν είναι πάντα εφικτό διότι κάθε υποπεδίο που ϑα προκύψει

5.3.1. Βελτιωµένη εξισορρόπηση 37 Σχήµα 5.2: Νεκρός χρόνος κατά την επίλυση µετά την αποσύνθεση ϑα πρέπει να αποτελείται πάλι από ένα δοµηµένο πλέγµα. Στον πίνακα 5.2 ϕαίνονται δύο παραδείγµατα διανοµής 18 k-επιπέδων σε 4 επεξεργαστές. Αν για κάθε επίπεδο απαιτείται για την επίλυσή του 1 χρονική µονάδα, τότε στην πρώτη περίπτωση ο νεκρός χρόνος είναι 2 χρονικές µονάδες, οι επεξεργαστές 0,1,2 που ολοκληρώνουν την επίλυση σε 4 χρονικές µονάδες ϑα πρέπει να περιµένουν τον επεξεργαστή 3 που ϑα τελειώσει τους υπολογισµούς σε 6 χρονικές µονάδες. Μεταφέ- ϱοντας ένα επίπεδο από τον επεξεργαστή 3 στον 2, ο νεκρός χρόνος µειώνεται στη µία χρονική µονάδα. Πίνακας 5.2: Περιπτώσεις απλής εξισορρόπησης Κακή εξισορρόπηση Καλύτερη εξισορρόπηση Αριθµός Επεξεργαστή 0 1 2 3 Αριθµός Επεξεργαστή 0 1 2 3 nk 4 4 4 6 nk 4 4 5 5 5.3.1 Βελτιωµένη εξισορρόπηση Η σταδιακή επέκταση της συστοιχίας από 8 σε 16 και κατόπιν σε 22 επεξεργαστές έγινε προσθέτοντας επεξεργαστές διαφορετικής ταχύτητας. Η ανοµοιοµορφία αυτή οδηγεί στη γενική περίπτωση που περιγράφτηκε στην προηγούµενη παράγραφο και δηµιουργεί νεκρό χρόνο που πρέπει να ελαχιστοποιηθεί. Για το σκοπό αυτό κάθε επεξεργαστής δεν αναλαµβάνει να υπολογίσει πλέον ίδιο αριθµό κελιών αλλά ανάλογο µε την ταχύτητά του, επιτυγχάνοντας µια σταθµισµένη εξισορρόπηση ϐάσει της

38 Κεφάλαιο 5. Παραλληλοποίηση του σειριακού κώδικα Πίνακας 5.3: Benchmark για τα 2 είδη επεξεργαστών της συστοιχίας GHz Memory Bus (MHz) time (sec / 100 iterations) 1 2.0 1000 154 2 2.3 1150 134 ταχύτητας αυτής. Θεωρείται ότι η ταχύτητα εκτέλεσης πράξεων του επεξεργαστή είναι ανάλογος της συχνότητάς του η οποία παρέχεται κατά την εκτέλεση του παράλληλου κώδικα χρησιµοποιώντας την εντολή συστήµατος sysctl hw.cpufrequency. Με τον τρόπο αυτό γίνεται αυτόµατα η αναγνώριση της συχνότητας του επεξεργαστή οπότε δεν απαιτείτα καµία γνώση και εισαγωγή αυτής της παραµέτρου από την πλευρά του χρήστη. Αν cells ο συνολικός αριθµός των κελιών, C ο αριθµός των επεξεργαστών και f c η ταχύτητα (συχνότητα σε GHz) του επεξεργαστή c τότε ο αριθµός κελιών που ανατίθεται στον επεξεργαστή c ϑα είναι : nc c = f c cells (5.1) C f c c=1 Η ϑεώρηση ότι η ταχύτητα εκτέλεσης των πράξεων είναι ανάλογη της συχνότητας του επεξεργαστή µπορεί να µην είναι πάντα ακριβής διότι εµπλέκονται και άλλα χαρακτηριστικά του συστήµατος που επηρεάζουν την ταχύτητα αυτή, όπως η λανθάνουσα µνήµη (cache), η ταχύτητα του διαύλου επικοινωνίας µε τη µνήµη, κλπ. Πιο ακριβής µέθοδος είναι η συγκριτικη µέτρηση επιδόσεων των επεξεργαστών (benchmark) ώστε να εξακριβωθούν οι πραγµατικές ικανότητές τους. Στον πίνακα 5.3 παρουσιάζονται τα αποτελέσµατα από ένα benchmark που έγινε µετρώντας χρόνους εκτέλεσης του κώδικα που αναπτύχθηκε. εν επιλέχθηκε κάποιο έτοιµο εργαλείο benchmark διότι ανάλογα µε το είδος των πράξεων η απόδοση µετα- ϐάλλεται. Ετσι η µέτρηση έγινε µε τον κώδικα για τον οποίο προορίζεται η συστοιχία δίνοντας αποτελέσµατα σε πραγµατικές συνθήκες. Από τα αποτελέσµατα προκύπτει ότι οι επεξεργαστές των 2.3GHz είναι σε πραγµατικές συνθήκες όντως 15% ταχύτε- ϱοι από αυτούς των 2.0GHz. Για την εξισορρόπηση λοιπόν χρησιµοποιήθηκε αυτή η αναλογία (2.3/2) για τη διανοµή των µητρώων.

5.4. Μελέτη εξάρτησης δεδοµένων 39 5.4 Μελέτη εξάρτησης δεδοµένων Το επόµενο ϐήµα είναι η µελέτη εξάρτησης δεδοµένων (data dependency study), στο οποίο εξετάζεται ο τρόπος που οι υπολογισµοί σε κάθε υπο-χώρο εξαρτώνται από γειτονικούς. Σύµφωνα µε το σχήµα διακριτοποίησης HLPA που χρησιµοποιήθηκε κάθε επεξεργαστής ϑα πρέπει µε κάποιο τρόπο έχει πρόσβαση στις τιµές των 2 γειτονικών αυτών κελιών σε κάθε διεύθυνση, σύµφωνα µε τις σχέσεις που αναπτύχθηκαν στην παράγραφο 4.3. Ετσι γύρω από το κάθε υπο-πεδίο δεσµεύονται 2 επίπεδα κελιών όπου δεν επιλύονται οι εξισώσεις αλλά χρησιµεύουν για την αποθήκευση των τιµών ενός γειτονικού υπο-χώρου και οριακών συνθηκών. Τα κελιά αυτά λέγονται ghost cells, περιβάλλουν το πεδίο επίλυσης και απεικονίζονται στο σχήµα 5.3 ως γραµµοσκιασµένα. Σε όλους τους υπόλοιπους υπολογισµούς, όπως στη διαδικασία του Stone που αναπτύχθηκε στο αντίστοιχο κεφάλαιο) η εξάρτηση δεδοµένων περιορίζεται µέχρι το 1ο γειτονικό κελί. Κατά συνέπεια η δέσµευση 2 κελιών λόγω της απαίτησης του σχήµατος HLPA καλύπτει τις ανάγκες των υπόλοιπων υπολογισµών. 5.5 Αποσύνθεση στη διεύθυνση k Η πρώτη προσέγγιση παραλληλοποίησης για απλή γεωµετρία (1 block) έγινε µε αποσύνθεση στη διεύθυνση z, όπως απεικονίζεται στο σχήµα 5.3. Αυτό σηµαίνει ότι το πεδίο επίλυσης χωρίζεται σε υποπεδία µε τοµές κάθετα στη διεύθυνση z, οπότε κάθε υποπεδίο αποτελείται από i-j επίπεδα κελιών της αρχικής γεωµετρίας. 5.5.1 Εξισορρόπηση Στην συγκεκριµένη περίπτωση της µονοδιάστατης αποσύνθεσης κατά z τα υποπεδία ϑα περιέχουν αριθµό κελιών πολλαπλάσιο του ni nj, και εφόσον ϑα έχουν όλοι τις ίδιες διαστάσεις στις διευθύνσεις i j αρκεί να διανεµηθούν στους επεξεργαστές nk np επίπεδα k. Στη γενική περίπτωση δεν προκύπτει ακέραιος αριθµός οπότε δεν αντιστοιχεί ο ίδιος αριθµός δεδοµένων σε όλους τους επεξεργαστές. Επιλέγοντας όµως ένα nk ακέραιο πολλαπλάσιο του np κατά τη δηµιουργία του πλέγµατος εξασφαλίζεται η άριστη εξισορρόπηση, για εκτέλεση σε οµοιογενή συστοιχία µε ίδιους επεξεργαστές. Σε κάθε περίπτωση χρησιµοποιείται ο αλγόριθµος σταθµισµένης εξισορρόπησης ϐάσει της ταχύτητας των επεξεργαστών.

40 Κεφάλαιο 5. Παραλληλοποίηση του σειριακού κώδικα 5.5.2 ιαχείριση µνήµης Κάθε επεξεργαστής δεσµεύει χώρο στη µνήµη για το υποπεδίο υπολογισµού που του αντιστοιχεί. Η δέσµευση γίνεται έτσι ώστε να επιτυγχάνεται η ίδια αρίθµηση των όγκων ελέγχου όπως η αρχική πριν την αποσύνθεση. Αν myks, myke η αρχή και το τέλος των υπολογιστικών επιπέδων k για κάθε επεξεργαστή, οι αντίστοιχες ϑέσεις στη διανυσµατική µορφή συµπεριλαµβάνοντας τα ghost-cells ϑα είναι σύµφωνα µε τον τύπο 4.4: myvs = (myks 3) ni nj + 1 myve = (myke + 2) ni nj + 1 Ετσι δεσµεύεται µνήµη για τα µητρώα µε τη χρήση της εντολής allocate ως εξής : allocate(a(myvs:myve)) Στη δέσµευση της µνήµης περιλαµβάνονται και τα ghost-cells οπότε κάθε επεξεργαστής δεσµεύει µνήµη για (ni + 4) (nj + 4) (mynk + 4) ϑέσεις, όπου mynk ο αριθµός κελιών στην k διεύθυνση του εκάστοτε επεξεργαστή. Συνεπώς µετά την αποσύνθεση χρησιµοποιείται τελικά περισσότερη µνήµη από ότι στον σειριακό κώδικα λόγω ακρι- ϐώς της χρήσης των ghost-cells. Στο σχήµα 5.3 ϕαίνεται σε ένα παράδειγµα η αρχική γεωµετρία και αρίθµηση και η αποσύνθεση του πεδίου σε 2 µικρότερα για εκτέλεση σε 2 επεξεργαστές. 5.5.3 ιανοµή δεδοµένων Η διανοµή των µητρώων από τον κεντρικό επεξεργαστή στους υπόλοιπους γίνεται χρησιµοποιώντας τη ϱουτίνα MPI_Scatterv του πρωτοκόλλου MPI. Κατά τη διανοµή περιλαµβάνονται δύο επίπεδα κελιών πριν και µετά το υπολογιστικό πεδίο, έτσι ώστε να περιέχουν τις τιµές από τα µετέπειτα γειτονικά υποπεδία και να χρησιµοποιηθούν ακολούθως ως ghost-cells. Για τη διανοµή απαιτούνται τα µήκη και οι µετατοπίσεις των υποπεδίων στα µητρώα. Ως µήκη εννοούνται οι διαστάσεις των υποπεδίων, δηλαδή το µέγεθος του µητρώου διανύσµατος που δεσµεύεται για κάθε επεξεργαστή. Οι µετατοπίσεις είναι η σχετικές ϑέσεις έναρξης των παραπάνω υπο-διανυσµάτων στο αρχικό (πριν τη διανοµή των δεδοµένων) µητρώο-διάνυσµα. Η σχέση που δίνει τα µήκη είναι : len i = (ni i + 4) (nj i + 4) (mynk i + 4) (5.2) ενώ οι µετατοπίσεις είναι

5.5.3. ιανοµή δεδοµένων 41 Σχήµα 5.3: Αποσύνθεση απλής γεωµετρίας Σχήµα 5.4: Κατανοµή µνήµης κατά την αποσύνθεση στη διεύθυνση k

42 Κεφάλαιο 5. Παραλληλοποίηση του σειριακού κώδικα 5.5.4 Επικοινωνία i 1 idis i = len i (5.3) Η απαιτούµενη επικοινωνία µεταξύ των επεγεργαστών στην περίπτωση της µονοδιάστατης αποσύνθεσης στη διεύθυνση z είναι απλή στην υλοποίηση και παρουσιάζεται στο σχήµα 5.6. Κάθε επεξεργαστής µε ταυτότητα myrank πρέπει να ανταλλάξει δεδοµένα µε τους γειτονικούς του στους οποίους δίνονται τα ονόµατα left και right µε ταυτότητες myrank-1 και myrank+1 αντίστοιχα, όπως παρουσιάζονται στον πίνακα 5.4. Εξαίρεση αποτελούν οι οριακοί επεξεργαστές µε rank 0 και np-1 για τους οποίους δεν απαιτείται καµία επικοινωνία µε τους left και right αντίστοιχα. Στους επεξεργαστές αυτούς δίνονται ως left και right οι ειδικές τιµές MPI_PROC_NULL που ορίζονται από το πρωτόκολλο MPI, τέχνασµα που δηµιουργεί µια εικονική επικοινωνία κατά την οποία δεν ανταλλάσονται δεδοµένα. Η εικονική αυτή επικοινωνία δείχνεται στο σχήµα 5.5 µε τα διακεκοµένα ϐέλη. Ετσι όλοι οι επεξεργαστές εκτελούν την ίδια εντολή για αποστολή και λήψη των απαιτούµενων τιµών, αποφεύγοντας τη χρήση εντολών ελέγχου όπως if, κάτι που καθυστερεί τη διαδικασία. Κάθε επεξεργαστής λοιπόν εκτελεί τις παρακάτω εντολές που απαιτούνται για την ανταλλαγή δεδοµένων : 0 MPI_Send left MPI_Recv right MPI_Send right MPI_Recv left Η σειρά µε την οποία γίνεται η αποστολή και λήψη παίζει σηµαντικό ϱόλο καθότι η λάθος σειρά µπορεί να οδηγήσει σε deadlock. Αν για παράδειγµα εκτελεστεί πρώτα η MPI_Recv πρίν την MPI_Send τότε ϑα περιµένει δεδοµένα χωρίς να έχουν σταλεί από κάποιον γειτονικό. Στο σχήµα 5.6 απεικονίζονται 2 υποπεδία σε ένα παράδειγµα για να δειχτεί η χρήση των ghost-cells κατά την επίλυση οριακών κελιών. Ετσι όταν για παράδειγµα ο επεξεργαστής 2 Ϲητήσει για το κελί 55 την τιµή του κελιού 75 που ανήκει στον 1ο επεξεργαστή, ϑα τη ϐρεί στο ghost-cell όπου ϑα έχει αποθηκευτεί µετά την έγκαιρη

5.5.5. Παραγόµενοι τύποι δεδοµένων 43 Πίνακας 5.4: Ορισµός γειτονικών υποπεδίων left rank right MPI_PROC_NULL 0 1 0 1 2......... ncpu-2 ncpu-1 MPI_PROC_NULL Σχήµα 5.5: Επικοινωνία στη µονοδιάστατη αποσύνθεση αποστολή της. Η αποστολή έχει γίνει περιλαµβάνοντας 2 επίπεδα κελιών. 5.5.5 Παραγόµενοι τύποι δεδοµένων Για την επικοινωνία των υποπεδίων έχουν χρησιµοποιηθεί παραγόµενοι τύποι δεδο- µένων, µε τη ϐοήθεια των οποίων διευκολύνεται ο προγραµµατισµός οδηγώντας σε µια πιό συµπαγοποιηµένη και ευανάγνωστη µορφή του κώδικα. Ο κυριότερος λόγος που γίνεται αυτό είναι η αποφυγή ϐρόγχων κατά τους οποίους γίνεται σταδιακή αποστολή των δεδοµένων. Επειδή κάθε αποστολή περιλαµβάνει µια καθυστέρηση λόγω περιορισµών του υλικού (latency) Ο χρόνος αποστολής ενός πακέτου δεδοµένων είναι : t = t s + t l (5.4) όπου t s ο χρόνος αποστολής που προκύπτει ϐάσει της ταχύτητας του διαύλου και του πλήθους των δεδοµένων και είναι : ενώ ο χρόνος απόκρισης (latency) t l t s = bytes speed (5.5) είναι µια σταθερή ποσότητα και εξαρτάται από το είδος του διαύλου. Στη συγκεκριµένη περίπτωση αυτής της εργασια ο δίαυλος Gigabit που χρησιµοποιείται εδώ έχει µεγάλο latency σε σχέση µε άλλους, και είναι της τάξης των 50-100µs. Ο χρόνος αυτός προστίθεται σε κάθε αποστολή πακέτου,

44 Κεφάλαιο 5. Παραλληλοποίηση του σειριακού κώδικα Σχήµα 5.6: Απαιτούµενη επικοινωνία για µονοδιάστατη αποσύνθεση οπότε πρέπει να περιοριστεί ο αριθµός των πακέτων και τα δεδοµένα να στέλνονται κατά το δυνατόν µαζικά. Χρησιµοποιώντας έναν τέτοιο κατάλληλο τύπο αποφεύγεται η άσκοπη τµηµατική αποστολή των δεδοµένων και ϐελτιώνεται κατά συνέπεια η επιτάχυνση του κώδικα. Για την επικοινωνία στη διεύθυνση k δηµιουργείται ένας παραγόµενος τύπος BT_TYPE που περιλαµβάνει 2 επίπεδα i j κελιών και είναι συνεχόµενα στη µνή- µη. Ο αριθµός των κελιών είναι ni nj οπότε ο τύπος δηµιουργείται ως εξής : MPI_Type_contiguous(2*ni*nj, MPI_REAL, BT_TYPE, ierror) όµοια δηµηιυργούνται και τύποι για επικοινωνία µεταξύ των µετώπων S,N και W,E, καθώς και για ανταλλαγή γωνιακών σηµείων, τύποι που ϑα χρησιµοποιηθούν σε πολυδιάστατη αποσύνθεση και αποσύνθεση σε άλλες διευθύνσεις και στην επικοινωνία του multi-block επιλυτή. MPI_Type_vector(nk, 2*ni, ni*nj, MPI_REAL, SN_TYPE, ierror) MPI_Type_vector(nj, 1, ni, MPI_REAL, CORNER_TYPE, ierror) Σε πολλά προβλήµατα η διεύθυνση i είναι η διεύθυνση της κύριας ϱοής, οπότε χρησιµοποιούνται περισσότερα κελιά κατά τη διακριτοποίηση του υπολογιστικού χώρου. Ο αριθµός κελιών στα επίπεδα i-j,i-k,j-k είναι αντίστοιχα ni*nj,ni*nk,nj*nk

5.6. Αποσύνθεση στη διεύθυνση i 45 Σχήµα 5.7: Παραγόµενος τύπος δεδοµένων SN_TYPE για επικοινωνία στα µέτωπα S-N µε ανάλογο κόστος στην επικοινωνία κατά την αποσύνθεση στις αντίστοιχες διευθύνσεις (k,j,i). Συνεπώς όταν ni> nj,nk στην περίπτωση της αποσύνθεσης στη διεύθυση k η επικονωνία µεταξύ των επεξεργαστών είναι αυξηµένη. Κατά τη µονοδιάστατη αποσύνθεση η ελάχιστος όγκος δεδοµένων προς ανταλλαγή είναι : min{ni nj, ni nk, nj nk} (5.6) Επειδή στα περισσότερα προβλήµατα η µεγαλύτερη διάσταση είναι αυτή στη διεύ- ϑυνση i ϑα πρέπει να αποφεύγεται η αποσύνθεση στις διευθύνσεις όπου εµπλέκεται δηλαδή στις j και k. Στην επόµενη παράγραφο διερευνάται αυτή η περίπτωση ενώ στο κεφάλαιο παρουσίασης των αποτελεσµάτων αξιολογείται το κέρδος από αυτή τη διαφοροποίηση. 5.6 Αποσύνθεση στη διεύθυνση i Στα πλαίσια της µετάβασης του κώδικα ώστε να δύναται να επιλύσει προβλήµατα που περιγράφονται µε πολλαπλές τοπολογίες (multi-block) η αποσύνθεση στη διεύθυνση i αποτέλεσε το µεταβατικό στάδιο, αλλάζοντας τη λογική επίλυσης και τη διαχείριση µνήµης.

46 Κεφάλαιο 5. Παραλληλοποίηση του σειριακού κώδικα 5.6.1 ιαχείριση µνήµης Στην περίπτωση αυτή η αρχική γεωµετρία διασπάται πάλι σε υποπεδία αλλά δηµιουργούνται νέα, µε δική τους αρίθµηση (δε διατηρείται η αρίθµηση των κελιών όπως στην αποσύνθεση κατά k). Κάθε υποπεδίο αποθηκεύεται στη µνήµη πάλι σε διανυσµατική µορφή, αριθµώντας τους όγκους ελέγχου από 1 (a(1 : n)) όπου n ο αριθµός κελιών σε κάθε block. Ο τελικός αριθµός των υποπεδίων είναι ίσος µε τον αριθµό των επεξεργαστών που ϑα συµµετέχουν στην επίλυση, και εφαρµόζεται ο ίδιος αλγόριθµος εξισορρόπησης όπως και στην προηγούµενη αποσύνθεση κατά k. 5.6.2 Επικοινωνία Η επικοινωνία στην περίπτωση αυτή είναι και πάλι µονοδιάστατη και απλή µε µόνη διαφορά την κατεύθυνση επικοινωνίας. Επίσης τα δεδοµένα που πρέπει να ανταλλάξουν οι επεξεργαστές δεν είναι πλέον συνεχόµενα τη µνήµη, οπότε ϑα πρέπει να χρησιµοποιηθεί ένας παραγόµενος τύπος δεδοµένων, ο οποίος ϑα διευκολύνει τον προγραµµατισµό αποφεύγοντας τους άσκοπους ϐρόγχους και ελέγχους. Η απαιτούµενη επικοινωνία ϑα πρέπει να γίνει στα µέτωπα W - E, ο τύπος δεδοµένων που κατασκευάζεται για το σκοπό αυτό αποτελείται από δύο επίπεδα j k. Οι σχετικές ϑέσεις των στοιχείων και ο τρόπος παραγωγής του τύπου αυτού απεικονίζεται στο σχήµα 5.8. MPI_Type_vector(nj*nk, 2, ni, MPI_REAL, WE_TYPE, ierror) MPI_Type_commit(WE_TYPE) Με τις παρακάτω κλήσεις έχει δηµιουργηθεί ο τύπος και είναι έτοιµος για χρήση ως εξής : call MPI_Send(send_s, 1, WE_TYPE, left, id), itag, MPI_COMM_WORLD, ierror)... call MPI_Recv(recv_s, 1, WE_TYPE, right, id), itag, MPI_COMM_WORLD, ierror, istatus) 5.7 Χειρισµός του αλγορίθµου SIP Εφόσον η λύση του προβλήµατος που διαπραγµατεύεται η εργασία αυτή ϐασίζεται στην τεχνική του domain decomposition δεν υπάρχει ανάγκη παραλληλοποίησης

5.7. Χειρισµός του αλγορίθµου SIP 47 Σχήµα 5.8: Παραγόµενος τύπος δεδοµένων WE_TYPE για επικοινωνία στα µέτωπα W-E του ίδιου του αλγορίθµου. Κάθε επεξεργαστής λύνει το δικό του σύστηµα που αντιστοιχεί στη ο προς επίλυση υποπεδίο µε τη µέθοδο SIP. Ωστόσο, υπάρχει ένα λεπτό σηµείο που πρέπει να δοθεί προσοχή ώστε να ανακτηθεί η χαµένη πληροφορία που προκύπτει από γειτονικούς επεξεργαστές λόγω περιορισµών του ίδιου του αλγορίθ- µου. Το σύστηµα εξισώσεων που λύνει κάθε επεξεργαστής είναι της µορφής : A P φ ijk = A w φ i 1jk + A e φ i+1jk + A s φ ij 1k + A n φ ij+1k + A b φ ijk 1 + A t φ ijk+1 + S P (5.7) Ο αλγόριθµος απαιτεί το µηδενισµό των συντελεστών A l, l = W, E, S, N, B, T στα όρια του προς επίλυση πεδίου (σχήµα 5.9). Με αυτόν τον τρόπο χάνεται η αλληλεπίδραση µε τα γειτονικά πεδία στα αντίστοιχα επίπεδα και δίνεται µια λανθασµένη λύση ϑεωρώντας τα υποπεδία αποµονωµένα. Η πληροφορία που χάνεται µε αυτό τον τρόπο εισάγεται σαν ένας πρόσθετος όρος πηγής. Ο συντελεστής A l προστίθεται στο A P και στον όρο πηγής S P ενώ αφαιρείται από τους υπόλοιπους. Το σύστηµα εξισώσεων παίρνει τελικά τη µορφή :

48 Κεφάλαιο 5. Παραλληλοποίηση του σειριακού κώδικα (A P + A fw + A fe + A fs + A fn + A fb + A ft )φ ijk = (A w A fw )φ i 1jk + (A e A fe )φ i+1jk + (A s A fs )φ ij 1k + (A n A fn )φ ij+1k + (A b A fb )φ ijk 1 + (A t A ft )φ ijk+1 + (S P + A fw φ W + A fe φ E + A fs φ S + A fn φ N + A fb φ B + A ft φ T ) Σχήµα 5.9: Μηδενισµός στα όρια ενός 4x6 υποπροβλήµατος Στο σχήµα 5.11 απεικονίζει τη µορφή του συστήµατος εξισώσεων που προκύπτει για το πρόβληµα του σχήµατος 5.10 για εκτέλεση σε 4 επεξεργαστές. Επίσης ϕαίνονται και οι περιοχές των µητρώων που αντιστοιχούν σε κάθε επεξεργαστή. Οι διαγώνιοι αναπαριστούν την αλληλεπίδραση των υποπεδίων. Οπως είναι αναµενόµενο τα στοιχεία στην περιοχή A 14 και A 23 του πίνακα A είναι µηδενικά αφού οι πλευρές των υποπεδίων αυτών δεν έρχονται σε επαφή. Η επικοινωνία ανάµεσα στους επεξεργαστές µπορεί να γίνει µετά το τέλος της επαναληπτικής διαδικασίας του αλγορίθµου SIP ή στο τέλος της κάθε επανάληψης. Στην πρώτη περίπτωση παρατηρήθηκε κα- ϑυστέρηση στη σύγκλιση η οποία οπτικοποιείται στις ισοϋψείς του σχήµατος 5.12 ως ασυνέχεια στα επίπεδα τοµής (δεξιά). Η συµπεριφορά αυτή είναι αναµενόµενη και οφείλεται στην καθυστέρηση στην ενηµέρωση των τιµών µεταξύ των επεξεργαστών,

5.7. Χειρισµός του αλγορίθµου SIP 49 Σχήµα 5.10: Αποσύνθεση σε 4 πεδία Σχήµα 5.11: Σύστηµα εξισώσεων για επίλυση σε 4 επεξεργαστές καθότι οι τιµές που διαβάζονται από τα ghost-cells ανήκουν στην προηγούµενη εξωτερική επανάληψη της επίλυσης. Ετσι η επικοινωνία ϑα πρέπει να γίνεται σε κάθε εσωτερική επανάληψη της διαδικασίας του αλγορίθµου SIP ώστε να υπάρχει έγκαιρη ενηµέρωση των τιµών.

50 Κεφάλαιο 5. Παραλληλοποίηση του σειριακού κώδικα Πίνακας 5.5: Επικοινωνία κατά τη διαδικασία του αλγορίθµου Stone Υπολογισµός L,U Υπολογισµός L,U (Αρχή επαναληπτικής διαδικασίας) (Αρχή επαναληπτικής διαδικασίας) Υπολογισµός R (residual) Υπολογισµός R (residual) Επίλυση L (forward substitution) Επίλυση L (forward substitution) Επίλυση U (backward substitution) Επίλυση U (backward substitution) ιόρθωση µεταβλητής ιόρθωση µεταβλητής Επικοινωνία (Τέλος επαναληπτικής διαδικασίας) (Τέλος επαναληπτικής διαδικασίας) Επικοινωνία Σχήµα 5.12: Ισοϋψείς ταχυτήτων. Επικοινωνία εντός (αριστερά) και εκτός (δεξιά) της επαναληπτικής διαδικασίας του Stone

5.8. Χειρισµός Οριακών Συνθηκών 51 5.8 Χειρισµός Οριακών Συνθηκών Τα µητρώα που περιέχουν πληροφορίες για τις οριακές συνθήκες όπως τοιχώµατα και συνθήκες συµµετρίας δεν διανέµονται οπότε όλοι οι επεξεργαστές γνωρίζουν τις συνθήκες ολόκληρου του πεδίου. Οπου υπάρχουν τοιχώµατα σε µέτωπα W,E,S,N γίνεται ένας έλεγχος για να µην οδηγηθούν οι πράξεις του ενός επεξεργαστή εκτός του πεδίου του. Ο χειρισµός αυτός έγινε για να παραµείνει ίδιο το κοµµάτι του κώδικα που χειρίζεται τις οριακές συνθήκες. 5.8.1 Χειρισµός υπολογισµού ϱοής στην έξοδο Στην έξοδο του πεδίου ϱοής διορθώνονται οι ταχύτητες ϐάσει της αρχής διατήρησης µάζας. Αν flow in = c w (5.8) και flow = c e (5.9) η ϱοή στην έξοδο, η ταχύτητα στη έξοδο (i=ni+1) ϑα πρέπει να είναι : i=1 i=ni u i=ni+1 e = u in flow in flow (5.10) όπου u in η ταχύτητα στην είσοδο του πεδίου ϱοής Σχήµα 5.13: Χειρισµός οριακής συνθήκης στην έξοδο

52 Κεφάλαιο 5. Παραλληλοποίηση του σειριακού κώδικα Κάθε επεξεργαστής υπολογίζει την επί µέρους ϱοής που του αντιστοιχεί. Ο υπολογισµός της συνολικής ϱοής στην έξοδο γίνεται µε τη ϱουτίνα συλλογικής επικοινωνίας MPI_Allreduce χρησιµοποιώντας τον τελεστή MPI_SUM ως εξής : MPI_Allreduce(myflow, flow, 1, MPI_REAL, MPI_SUM, MPI_COMM_WORLD, ierror) Οι ποσότητες myflow που υπολογίζονται από κάθε επεξεργαστή ξεχωριστά προστί- ϑενται και το άθροισµα αποθηκεύεται στη µεταβλητή flow σε όλους τους επεξεργαστές. Η διαδικασία αυτή απεικονίζεται στη σχήµα 5.13 5.8.2 Συνθήκη περιοδικότητας Υπάρχουν περιπτώσεις που η γεωµετρία του προβλήµατος παρουσιάζει περιοδικότητα, όπως η σειρά πτερυγίων σε στροβιλοµηχανή, σειρά σωλήνων σε εναλλάκτη, κλπ. Στις περιπτώσεις αυτές για εξοικονόµηση µνήµης επιλύεται ένα µέρος της γεωµετρίας και εφόσον αυτή επαναλαµβάνεται εκατέρωθεν, εφαρµόζεται στα όρια µια συνθήκη περιοδικότητας έτσι ώστε ο κώδικας να αντιλαµβάνεται ότι υπάρχει εκεί επανάληψη της ίδιας γεωµετρίας. Στο σχήµα 5.14(α ) απεικονίζεται µια σειρά πτερυγίων στροβιλοµηχανής. Η ϱοή επιλύεται µόνο στο µέρος της γεωµετρίας που επαναλαµβάνεται, εφαρµόζοντας τη συνθήκη περιοδικότητας (σχήµα 5.14(ϐ )). Στο σχήµα 5.15 απεικονίζεται µια τέτοια γεωµετρία καθώς και η απαραίτητη διαδικασία επικοινωνίας που πρέπει να λάβει χώρα, όταν η αποσύνθεση πεδίου γίνεται κατά τη διεύθυνση k. Στην περίπτωση αυτή αρκεί η ανταλλαγή δύο οριακών επιπέδων κελιών µεταξύ των επεξεργαστών που χειρίζονται τα κελιά αυτά. Κατά σύµβαση οι επεξεργαστές αυτοί αριθµούνται ως 0 και ncpu-1, όπου ncpu ο αριθµός των ε- πεξεργαστών, και οι γειτονικοί επεξεργαστές ορίζονται σύµφωνα µε τον πίνακα 5.6. Πίνακας 5.6: Ορισµός γειτονικών υποπεδίων όταν υπάρχει συνθήκη περιοδικότητας left rank right ncpu-1 0 1......... myrank-1 myrank myrank+1......... ncpu-2 ncpu-1 0

5.8.2. Συνθήκη περιοδικότητας 53 (α ) Πλέγµα σε σειρά πτερυγίων (ϐ ) Πλέγµα µε συνθήκη περιοδικότητας Σχήµα 5.14: Γεωµετρία και εφαρµογή συνθήκης περιοδικότητας σε σειρά πτερυγίων στροβιλοµηχανής Σχήµα 5.15: Οριακή συνθήκη περιοδικότητας και απαιτούµενη επικοινωνία

54 Κεφάλαιο 5. Παραλληλοποίηση του σειριακού κώδικα 5.8.3 Επικοινωνία σε πλέγµατα τύπου O Ουσιαστικά πρόκειται για ένα πλέγµα τύπου C του οποίου οι γραµµές σταθερού ξ ή η κλείνουν. Στα πλέγµατα τύπου Ο τα µέτωπα W και E (ή S,N) επικοινωνούν σύµφωνα µε το σχήµα 5.16 Στη συγκεκριµένη περίπτωση υπάρχει επαφή στα µέτωπα S-N, δηλαδή τα κελιά µε j=1 και j=nj. Αν γίνει µονοδιάστατη αποσύνθεση στη διεύθυνση j τότε το W µέτωπο ανήκει στον 1ο επεξεργαστή (µε rank 0) ενώ το E µέτωπο ανήκει στον τελευταίο επεξεργαστή (µε rank np-1). Η απαραίτητη µεταξύ τους επικοινωνία είναι απλή και αρκεί να σταλούν 2-i επίπεδα floats ξεκινώντας από το κελί (1,1). Ο τρόπος επικοινωνίας αυτός απεικονίζεται στο σχήµα 5.17 στο οποίο δείχνεται και η αρίθµηση των υπολογιστικών όγκων ελέγχου. Η σύνδεση των δύο µετώπων γίνεται ορίζοντας τα γειτονικά υποπεδία κατάλληλα σύµφωνα µε τον πίνακα 5.7. Σχήµα 5.16: O-type πλέγµα Πίνακας 5.7: Ορισµός γειτονικών υποπεδίων σε πλέγµα τύπου Ο left rank right ncpu-1 0 1......... myrank-1 myrank myrank+1......... ncpu-2 ncpu-1 0

5.8.4. Επικοινωνία σε πλέγµατα τύπου C 55 Σχήµα 5.17: Απαιτούµενη επικοινωνία σε O-type πλέγµα 5.8.4 Επικοινωνία σε πλέγµατα τύπου C Ενα πλέγµα τύπου C µπορεί να χρησιµοποιηθεί για να περιγράψει απλές περιπτώσεις ϱοής γύρω από ένα αντικείµενο, όπως για παράδειγµα γύρω από µια πτέρυγα όπως δείχνει το σχήµα 5.18. Στην περίπτωση αυτή έρχονται σε επαφή όγκοι ελέγχου που ανήκουν στο ίδιο µέτωπο και σε περίπτωση που αυτοί επιλύονται σε διαφορετικό επεξεργαστή ϑα πρέπει να γίνει ειδικός χειρισµός για την επικοινωνία µεταξύ τους. Σχήµα 5.18: C-type πλέγµα εφαπτόµενο στον εαυτό του Ο τρόπος επικοινωνίας στην περίπτωση αυτή αν και είναι ϕαινοµενικά απλός παρουσιάζει µια ιδιαιτερότητα. Οι τιµές των κελιών 1-n1 πρέπει να σταλούν στα ghost-cells πάνω από τα κελιά ni-n1+1 ως ni. Αν σταλούν n1 floats στη ϑέση nin1+1 πάνω από το κελί ni-n1+1 ϑα αποθηκευτεί η τιµή του κελιού 1, που είναι λάθος. Ετσι ϑα πρέπει οι τιµές να σταλούν ανάποδα, σύµφωνα µε τη διαδκασία του σχήµατος 5.20, διότι η αρίθµηση στο κάτω µέρος του πλέγµατος έχει αντίθετη ϕορά (σχήµα 5.19).

56 Κεφάλαιο 5. Παραλληλοποίηση του σειριακού κώδικα Σχήµα 5.19: Αρίθµηση κόµβων στο πλέγµα Σχήµα 5.20: Επικοινωνία στο C-type πλέγµα 5.9 Χειρισµός ελέγχου τερµατισµού Ο τερµατισµός της επαναληπτικής διαδικασίας γίνεται ϐάσει του υπολογισµού του σφάλµατος που αναπτύχθηκε στην παράγραφο 4.2.3. Στον παράλληλο κώδικα ο υπολογισµός του σφάλµατος γίνεται για κάθε πεδίο ξεχωριστά, συνεπώς για τον υπολογισµό του συνολικού σφάλµατος το οποίο αναφέρεται σε όλο το πεδίο ϱοής (όπως γίνεται στο σειριακό κώδικα) ϑα πρέπει τα επί µέρους σφάλµατα να αθροιστούν. Αν κάθε επεξεργαστής υπολογίζει ένα σφάλµα myresidual για το υποπεδίο που επιλύει, τότε το συνολικό σφάλµα ϑα είναι : N residual = myresidual i (5.11) i=1 όπου N ο αριθµός των επεξεργαστών. Η τιµή residual υπολογίζεται κάνοντας χρήση της υπορουτίνας MPI_Allreduce χρησιµοποιώντας τον τελεστή MPI_SUM, ως εξής :

5.10. Χρήση διανυσµατικής µονάδας 57 MPI_Allreduce(myresidual, residual, 1, MPI_REAL, MPI_SUM, MPI_COMM_WORLD, ierror) Οι ποσότητες myresidual που υπολογίζονται από κάθε επεξεργαστή ξεχωριστά από τη σχέση 4.3 προστίθενται και το άθροισµα αποθηκεύεται στη µεταβλητή residual σε όλους τους επεξεργαστές. 5.10 Χρήση διανυσµατικής µονάδας Η χρησιµοποιούµενη συστοιχία αποτελείται από 22 επεξεργαστές PowerPC - G5 της IBM. Οι επεξεργαστές αυτοί διαθέτουν µια ισχυρή διανυσµατική µονάδα ονόµατι Altivec όπου µπορούν να εκτελούνται περισσότερες από µια πράξεις ταυτόχρονα. Ενα µέρος της έρευνας αναλώθηκε στην διερεύνηση αυτής της µονάδας, την πιθανή ενσωµάτωση της τεχνολογίας αυτής στον κώδικα ώστε να επιτευχθεί µεγαλύτερη επιτάχυνση. Η µονάδα αυτή µπορεί να εκτελέσει µια πράξη (instruction) σε δεδοµένα συνολικού µήκους 128bit. εδοµένου ότι ένας αριθµός κινητής υποδιαστολής απλής ακρίβειας (float) έχει µήκος 4bytes = 32bits στη µονάδα αυτή µπορούν να εκτελεστούν 4 πράξεις ταυτόχρονα (σε ένα κύκλο) σε αντίθεση µε µία ϐαθµωτή µονάδα που εκτελεί µία πράξη ανά κύκλο, διαφοροποίηση που ϕαίνεται στο σχήµα 5.21. Σχήµα 5.21: Πρόσθεση σε ϐαθµωτή (scalar) και διανυσµατική (vector) µονάδα

58 Κεφάλαιο 5. Παραλληλοποίηση του σειριακού κώδικα 5.10.1 Χρήση της µονάδας altivec Η πρόσβαση στη τεχνολογία που προσφέρει η µονάδα αυτή επιτυγχάνεται µέσω µιας ϐιβλιοθήκης που παρέχεται από τον µεταγλωτιστή που χρησιµοποιείται. Η δυνατότητα αυτή παρέχεται µόνο για τη γλώσσα προγραµµατισµού C οπότε η ενσωµάτωση της τεχνολογίας αυτής στον κώδικα που αναπτύσσεται εδώ και είναι γραµµένος σε FORTRAN ϑα πρέπει να δηµιουργηθούν κάποιες ενδιάµεσες ϐοηθητικές ϱουτίνες (wrappers), που ϑα παρέχονται στον κώδικα υπό τη µορφή ϐιβλιοθήκης. #include <veclib/vfp.h> void my_vec_add(float *a, float *b, float *c, int *n) { int i; int step = vec_step( vector float ); int loops = *n / step; for( i=0 ; i < loops ; i++ ) { #define va ((vector float*) a ) #define vb ((vector float*) b ) #define vc ((vector float*) c ) *vc = vec_add(*va, *vb); va++; vb++; vc++; } } Ο παραπάνω κώδικας σε C αποτελεί µια ενδιάµεση ϐοηθητική ϱουτίνα (wrapper) ώστε να χρησιµοποιηθεί το altivec µέσα από τη FORTRAN ως εξής : program vecadd parameter (n=4096) real a(n),b(n) a=1. b=3. call my_vec_add(a,b,c,n) end

5.10.2. Επιδόσεις της µονάδας altivec 59 Η παραπάνω ϱουτίνα µπορεί να εκτελέσει παράλληλα 4 πράξεις αλλά για συνολικό αριθµό δεδοµένων πολλαπλάσιο του 4. Στη γενική περίπτωση τα προστιθέµενα διανύσµατα δεν έχουν διάσταση πολλαπλάσια του 4, οπότε η πρόσθεση των υπολοίπων δεδοµένων που δεν µπορούν να εκτελεστούν παράλληλα σε τετράδα ϑα πρέπει να γίνει σειριακά. Με την προσθήκη των παρακάτω γραµµών στην υπορουτίνα δίνεται η δυνατότητα για πρόσθεση µητρώων µε οποιαδήποτε διάσταση : m=mod(n,4) for (i=n-m+1; i<=n; i++) { vc[i]=va[i]+vb[i]; } Αυτό αφήνει ουσιαστικά ένα µέρος του κώδικα σειριακό κάτι που έχει αντίκτυπο στην µέγιστη επιτάχυνση σύµφωνα µε το νόµο του Amdahl. 5.10.2 Επιδόσεις της µονάδας altivec Η µέγιστη επιτάχυνση που επιτεύχθηκε για συνήθεις πράξεις όπως ο πρόσθεση και πολλαπλασιασµός διανυσµάτων ήταν γύρω στο 40% (πίνακας 5.8) και παρατηρήθηκε για µικρές διαστάσεις µητρώων, ενώ για µεγαλύτερα (πάνω από 65000) η απόδοση ϕθίνει δραµατικά και δεν έχει πρακτική αξία. Στο σχήµα 5.22 ϕαίνεται αυτή η συµπεριφορά, αφορά την πρόσθεση 2 µητρώων τύπου float και αναπαριστά το χρόνο εκτέλεσης στην CPU και στη µονάδα Altivec για διάφορες διαστάσεις των προστιθέ- µενων µητρώων. Στο ίδιο σχήµα ϕαίνεται και η επιτάχυνση (speedup) που ορίζεται ως ο λογος του χρόνου εκτέλεσης στο altivec προς το χρόνο εκτέλεσης στη CPU. Πίνακας 5.8: Επιδόσεις altivec για διάφορες πράξεις Τελεστής CPU Altivec + 3.38 2.05 * 3.02 1.89 e x 280 48 Πρέπει να σηµειωθεί ότι οι πράξεις έγιναν µε µεγέθη µητρώων πολλαπλάσια του 4, οπότε η επιτάχυνση που αναφέρεται είναι η µέγιστη. Για τυχαία µεγέθη το κέρδος είναι µικρότερο καθώς όπως αναφέρθηκε προκύπτει ένα µέρος των πράξεων που εκτελείται σειριακά. Ο χρόνος απόκρισης αυτών των κλήσεων αν και ϕαινοµενικά αµελητέος, δηµιουργεί υπολογίσιµη καθυστέρηση λόγω των χιλιάδων κλήσεων που

60 Κεφάλαιο 5. Παραλληλοποίηση του σειριακού κώδικα Σχήµα 5.22: Επίδραση διαστάσης προστιθέµενων µητρώων στο χρόνο εκτέλεσης γίνονται από τον κώδικα. εδοµένου ότι τα περισσότερα προβλήµατα χρησιµοποιούν µεγάλα µητρώα και το κέρδος από αυτή την τεχνολογία στην κλίµακα αυτή είναι αµελητέο, δεν ενσωµατώθηκε στον κώδικα που χρησιµοποιείται παραγωγικά, αλλά παραµένει σε στάδιο διερεύνησης για µελλοντική πιθανή χρήση σε µέρη του κώδικα ή για επιτάχυνση εργαλείων επεξεργασίας δεδοµένων (pre- και post-processing).

Κεφάλαιο 6 ηµιουργία multi-block επιλυτή Η χρήση του δοµηµένου πλέγµατος που απαιτεί η µέθοδος πεπερασµένων όγκων περιορίζει τον κατακερµατισµό του υπολογιστικού χώρου στην περίπτωση µιας πολυπλοκότερης γεωµετρίας µε αποτέλεσµα η ποιότητα των όγκων ελέγχου να µην είναι καλή. Τέτοιες περιπτώσεις περιλαµβάνουν για παράδειγµα γεωµετρίες µε εµπόδια τη ϱοή όπως η διάταξη του σχήµατος 6.1. Η παραλληλοποίηση ενός επιλυτή που χειρίζεται περισσότερα του ενός δοµηµένου πλέγµατος (block) είναι εν γένει πολυπλοκότερη αλλά αναγκαία, γι αυτό και η έρευνα έχει κατευθυνθεί από πολλούς σε αυτόν τον τοµέα [63, 64]. Η αρχική προσέγγιση των παραπάνω περιπτώσεων χρησιµοποιώντας ενα µόνο δο- µηµένο πλέγµα είναι ο ειδικός χειρισµός της περιοχής αυτής κατά τον οποίο εφαρµό- Ϲεται η οριακή συνθήκη «σταθερής τιµής πεδίου» [61]. Η οριακή συνθήκη προβλέπει τη χρήση µιας ψευτοπηγής στα κελιά που ορίζουν την εν λόγω περιοχή (γκρί κελιά στο σχήµα 6.2) η οποία διαµορφώνει το τελικό σύστηµα εξισώσεων ως εξής : (A P + S P + S p)φ P = A i φ i + S u + φ FIX S u (6.1) όπου S p και S u όροι µε πολύ µεγάλη τιµή, έτσι ώστε οι όροι A P +S P και i A i φ i +S u ϑεωρούνται αµελητέοι. Ετσι προκύπτει φ P φ FIX, δηλαδή η σταθερή επιθυµητή τιµή στα συγκεκριµένα κελιά. Αν πρόκειται για εµπόδιο όπου δεν υπάρχει ϱοή τίθεται φ FIX = 0 για τις ταχύτητες φ P u, v, w. Ο παραπάνω χειρισµός έχει το µειονέκτηµα της άσκοπης χρήσης µνήµης στην περιοχή όπου εφαρµόζεται οι συνθήκη αυτή, και κυρίως ο άσκοπος υπολογιστικός χρόνος που αναλώνεται εκεί. Η χρήση περισσότερων του ενός δοµηµένου πλέγµατος λύνει τα παραπάνω προβλήµατα καθώς η απαιτούµενη µνήµη και οι υπολογισµοί 61 i

62 Κεφάλαιο 6. ηµιουργία multi-block επιλυτή γίνονται µόνο σε όγκους ελέγχου όπου υπάρχει ϱοή. Παράδειγµα χρήσης τριών πλεγµάτων για το πρόβληµα του σχήµατος 6.1 απεικονίζεται στο σχήµα 6.3. Σχήµα 6.1: ιάταξη ϱοής σε αγωγό µε εµπόδιο Σχήµα 6.2: Χρήση συνθήκης σταθερής τιµής πεδίου Σχήµα 6.3: Χρήση τριών πλεγµάτων Στην παρούσα εργασία ερευνήθηκαν δύο τρόποι µε τους οποίους µπορεί να γίνει αποσύνθεση πολλών δοµηµένων πλεγµάτων. Η διαχείριση της µνήµης και στις δύο περιπτώσεις πριν τη διανοµή των δεδοµένων είναι ίδια και περιγράφεται αµέσως µετά.

6.1. ιαχείριση µνήµης 63 6.1 ιαχείριση µνήµης Το σύνολο των blocks (έστω m) αποθηκεύονται στη µνήµη σύµφωνα µε τη διανυσµατική µορφή που περιγράφτηκε και χρησιµοποιείται και στο σειριακό κώδικα. Τα διανύσµατα που αντιστοιχούν σε κάθε block αποθηκεύονται σειριακά, δηλαδή µετά το τέλος του διανύσµατος του ενός block αρχίζει το διάνυσµα του επόµενου, οπότε στη µνήµη όλα τα µεγέθη που αναφέρονται σε όλο το πεδίο αποθηκεύονται µε τη µορφή του σχήµατος 6.4. Συνεπώς το κελί i,j,k (στον κανονικοποιηµένο χώρο) του τυχαίου block b αποθηκεύεται στη µνήµη στη ϑέση : ijk b = (k 1) ni b nj b + (j 1) ni b + i + offset b (6.2) όπου ni b, nj b, nk b ο αριθµός κελιών του block b στις διευθύνσεις i,j,k αντίστοιχα, συµπεριλαµβανοµένων των εικονικών κελιών. Η µετατόπιση offset b του block b στη µνήµη είναι : b 1 offset b = (ni i nj i nk i ) (6.3) όπου offset 1 = 0 (για το 1ο block οπότε η σχέση 6.2 ανάγεται στην 4.4. i=1 Σχήµα 6.4: ιαχείριση µνήµης για πολλά blocks Είναι προφανές ότι η χρήση πολυδιάστατων µητρώων ϑα αποτελούσε πιό ϕυσικό τρόπο αναφοράς στους όγκους ελέγχου απ ότι η διανυσµατική µορφή που χρησιµοποιείται εδώ Στην επίλυση πολλών blocks όµως ϑα πρέπει να δεσµευτεί µία ακόµη διάσταση που ϑα αναφέρεται στον αριθµό του block, έχοντας για τρισδιάστατο πρό- ϐληµα συνολικά 4 διαστάσεις. Η δέσµευση µνήµης ϑα πρέπει να γίνει ϐάσει των µεγαλύτερων διαστάσεων των πλεγµάτων. Αν για παράδειγµα υπάρχουν m blocks και ni b, nj b, nk b οι διαστάσεις του πλέγµατος b τότε για το µητρώο Α που ϑα περιέχει ποσότητες αναφερόµενες στα παραπάνω πλέγµατα ϑα πρέπει να δεσµευτεί µνήµη maxni b maxnj b maxnk b m.

64 Κεφάλαιο 6. ηµιουργία multi-block επιλυτή Πίνακας 6.1: 3 πλέγµατα, διαστάσεις, και αριθµός κελιών block ni nj nk cells 1 100 50 20 100000 2 200 100 40 800000 3 50 50 20 50000 Χρησιµοποιώντας τη διανυσµατική αποθήκευση όµως η δεσµευόµενη µνήµη µειώνεται αποθηκεύοτας όσα δεδοµένα ακριβώς χρειάζονται, δηλαδή m ni b nj b nk b b=1 Η σπατάλη της µνήµης χρησιµοποιώντας πολυδιάστατα µητρώα ϕαίνεται έντονα µέσα από ένα παράδειγµα χρήσης 3 πλεγµάτων του πίνακα 6.1. Χρησιµοποιώντας 4διάστατο µητρώο Α για αποθήκευση τιµών ως Α(200,100,40,3) απαιτούνται 200 100 40 3 = 2400000 ϑέσεις µνήµης 1, δηλαδή 2400000 (4bytes/float) = 9375kb. Χρησιµοποιώντας ένα διάνυσµα τοποθετώντας σειριακά τα τρία επί µέρους διανύσµατα του κάθε πλέγµατος απαιτούνται µόνο 100 50 20 + 200 100 40 + 50 50 20 = 950000 ϑέσεις µνήµης, δηλαδή 950000 4 = 3711kb. Ετσι εξοικονοµείται στην περίπτωση αυτή µνήµη γύρω στο 60%. 6.2 1η µέθοδος Κάθε block (από τα συνολικά m) αποσυντίθεται σε τόσα υποπεδία όσοι οι επεξεργαστές (Ν στο σύνολο) όπως ϕαίνεται στο σχήµα 6.5 Κάθε επεξεργαστής αναλαµβάνει να λύσει τα υποπεδία των blocks που του αντιστοιχούν. Η επίλυση των υποπεδίων αυτών γίνεται σειριακά. Ο ψευδοκώδικας επίλυσης για κάθε επεξεργαστή είναι : do i=1,n solve subblock i end do 6.2.1 ιαχείριση µνήµης Μετά τη διανοµή (distribution) των µητρώων στους επεξεργαστές η κατανοµή της µνήµης µετατρέπεται έτσι ώστε κάθε cpu να γνωρίζει µόνο τα δεδοµένα τα οποία 1 τύπου float

6.2.1. ιαχείριση µνήµης 65 Σχήµα 6.5: Μονοδιάστατη αποσύνθεση πολλών πεδίων µε την 1η µέθοδο πρόκειται να επεξεργαστεί, σύµφωνα µε το σχήµα 6.6. Σχήµα 6.6: ιανοµή µητρώων σύµφωνα µε την 1η µέθοδο Η αποθήκευση των δεδοµένων σε κάθε επεξεργαστή γίνεται µε την ίδια λογική που παρουσιάστηκε στην παράγραφο 6.1. Σε κάθε επεξεργαστή ορίζεται και πάλι η µετατόπιση του κάθε µέρους του block b myoffset b : b 1 myoffset b = myvlen b (6.4) όπου myvlen b το µήκος του διανύσµατος δηλαδή ο αριθµός κελιών του υποπεδίου b που υπολογίζει ο εκάστοτε επεξεργαστής, ενώ myoffset 1 = 0. Οπότε η ϑέση µνήµης του i,j,k του τυχαίου block b ϑα είναι : i=1 ijk b = (k 1) ni b nj b + (j 1) ni b + i + myoffset b (6.5)

66 Κεφάλαιο 6. ηµιουργία multi-block επιλυτή 6.3 2η µέθοδος Από το σύνολο των αρχικών m blocks δηµιουργούνται νέα µικρότερα m2 blocks και κατανέµονται στους διαθέσιµους επεξεργαστες κατά το σχήµα 6.7 Η δηµιουργία των νέων blocks γίνεται έτσι ώστε σε κάθε επεξεργαστή να αντιστοιχεί τουλάχιστον ένα νέο block. Σχήµα 6.7: Μονοδιάστατη αποσύνθεση πολλών πεδίων µε τη 2η µέθοδο Κάθε επεξεργαστής έχει στη µνήµη του και επιλύει τα νέα blocks που του αντιστοιχούν (myblocks). Ο ψευδοκώδικας επίλυσης για κάθε επεξεργαστή είναι : foreach i in myblocks solve newblock i end do 6.3.1 ιαχείριση µνήµης Κάθε επεξεργαστής έχει αποθηκευµένα στη µνήµη του µόνο τα blocks τα οποία πρόκειται να επεξεργαστεί. Τα δεδοµένα αποθηκεύονται πάλι σε διανυσµατική µορφή σειριακά, το ένα µετά το άλλο, σύµφωνα µε το σχήµα 6.8, όπου my_n ο αριθµός των blocks του εκάστοτε επεξεργαστή που επιλύει. Προφανώς my_n = m2, όπου m2 ο συνολικός αριθµός των νέων blocks. Τα διανύσµατα που αντιστοιχούν δηλαδή σε κάθε block συνεννώνονται σε ένα συνολικό : Η ϑέση αποθήκευσης του κελιού i,j,k του block b είναι : ijk b = (k 1) ni b nj b + (j 1) ni b + i + myoffset(b) (6.6)

6.3.2. Εύρεση περιοχών επαφής µεταξύ υποπεδίων 67 Σχήµα 6.8: Τρόπος αποθήκευσης υποπεδίων κατά τη 2η µέθοδο όπου myoffset(b) η µετατόπιση όπως ακριβώς υπολογίζεται και κατά διαχείριση της µνήµης πριν τη διανοµή όπως περιγράφτηκε στην αρχή του κεφαλαίου, µε µόνη διαφορά ότι κάθε επεξεργαστής έχει τις δικές του τιµές του myoffset(b) αφού διαχειρίζεται διαφορετικό αριθµό και διαφορετικά blocks. Στο σχήµα 6.9 απεικονίζεται ένα παράδειγµα δισδιάστατης αποσύνθεσης δύο αρχικών blocks σε 7 και στη συνέχεια διανέµονται προς επίλυση σε 4 επεξεργαστές. 6.3.2 Εύρεση περιοχών επαφής µεταξύ υποπεδίων Μετά τη δηµιουργία των νέων blocks εφαρµόζεται ένας αλγόριθµος εύρεσης των πε- ϱιοχών επαφής τους, ώστε να αυτοµατοποιηθεί η διαδικασία της επικοινωνίας µεταξύ τους. Για κάθε block γίνεται έλεγχος σε όλες τις πλευρές µε τα υπόλοιπα blocks και αναγνωρίζονται ποιά κελιά έρχονται σε επαφή µεταξύ τους. Η διαδικασία αυτή είναι χρονοβόρα αν ο αριθµός των κελιών είναι µεγάλος. Επειδή δεν υπάρχει εξάρτηση δεδοµένων η διαδικασία µπορεί να εκτελεστεί παράλληλα, σε τόσους επεξεργαστές όσα είναι τα blocks. Από την ανάπτυξη αυτής της διαδικασίας προκύπτει ένα ακόµα όφελος. Ο αλγόριθµος µπορεί να εφαρµοστεί και σε blocks που προκύπτουν κατά την αποσύνθεση µε οποιοδήποτε άλλο λογισµικό. Μετά την εκτέλεση της διαδικασίας γράφονται σε ένα αρχείο µε την παρακάτω µορφή ο τρόπος µε τον οποίο επικοινωνούν τα blocks µεταξύ τους. Στο παράδειγµα δείχνεται το block 17 που επιλύεται στον ε- πεξεργαστή 16, και επικοινωνεί µέσω των µετώπων W,E,S,S µε τα blocks 15,17,4,5 αντίστοιχα. Τα start,end δείχνουν τους αριθµούς των κελιών όπου ξεκινά και σταµατά η επαφή.

68 Κεφάλαιο 6. ηµιουργία multi-block επιλυτή Σχήµα 6.9: ισδιάστατη αποσύνθεση πολύπλοκης γεωµετρίας και ανάθεση επίλυσης σε 4 επεξεργαστές block block2 block@cpu id F block2@cpu2 start end start end start2 end2 start2 end2 17@16 1 W 16@15 1 44 1 33 1 44 1 33 17@16 1 E 18@17 1 44 1 33 1 44 1 33 17@16 1 S 4@ 4 1 22 1 33 55 76 1 33 17@16 2 S 5@ 5 23 56 1 33 1 34 1 33 Εν συνεχεία ο παράλληλος κώδικας τροφοδοτείται από αυτό το αρχείο ώστε να είναι σε ϑέση να συντονίσει την ορθή επικοινωνία µεταξύ των επεξεργαστών.

6.4. Επικοινωνία 69 6.4 Επικοινωνία Η επικοινωνία ανάµεσα στους επεξεργαστές είναι πολυπλοκότερη σε σχέση µε την απλή περίπτωση παράλληλης επίλυσης ενός block. Στις περιπτώσεις µάλιστα αποσύνθεσης σε περισσότερες διευθύνσεις πέρα από την πολυπλοκότητα αυτή αναµένεται και επιπλέον καθυστέρηση λόγω της αυξηµένης επικοινωνίας που δηµιουργείται. 6.4.1 Επικοινωνία για δισδιάστατη αποσύνθεση Η επικοινωνία εδώ είναι πολυπλοκότερη, καθώς κάθε επεξεργαστής ενδέχεται να χρειαστεί να ανταλλάξει δεδοµένα µε περισσότερους από έναν επεξεργαστές και σε διαφορετικές διευθύνσεις όπως απεικονίζεται στο σχήµα 6.10. Για τη γενική περίπτωση όπου απαιτείται επικοινωνία και στις τρείς διευθύνσεις γίνεται χρήση τριών διαφορετικών παραγόµενων τύπων δεδοµένων. Ενας τύπος για την επικοινωνία στα µέτωπα W,E, µια για S,N και µια για B,T. Για να εξασφαλιστεί η ορθή µεταφορά των δεδοµένων, χρησιµοποιείται κατά την κλήση των MPI_Send και MPI_Recv ένας αριθµός ταυτότητα (tag) για κάθε Ϲεύγος επικοινωνίας έτσι ώστε να µη σταλεί σε λάθος block η πληροφορία που του αντιστοιχεί. Κατά τον υπολογισµό δεύτερων παραγώγων προκύπτουν όροι που εξαρτώνται και από διαγώνια γειτονικά κελία. Ενδεικτικά αναφέρεται η παρακάτω σχέση υπολογισµού δεύτερης παραγώγου της ποσότητας u για τον όγκο ελέγχου i, j: ( 2 u x y ) i,j = 1 ( ui+1,j+1 u i+1,j 1 u ) i 1,j+1 u i 1,j 1 2 x 2 y 2 y (6.7) Ο υπολογισµός στον όγκο ελέγχου i, j, k απαιτεί γνώση της τιµής τους διαγώνιους όγκους (i + 1, j + 1, k), (i + 1, j 1, k), (i 1, j + 1, k), (i 1, j 1, k) συνεπώς στα όρια των υποπεριοχών ϑα πρέπει αυτή η πληροφορία να µεταφερθεί και να αποθηκευτεί στο κατάλληλο ghost cell, Η συνολική διαδικασία επικοινωνίας που πρέπει να λάβει χώρα σε µία γενική περίπτωση δισδιάστατης αποσύνθεσης απεικονίζεται στο σχήµα 6.10. Επάνω ϕαίνεται το πλέγµα µιας τυχαίας γεωµετρίας χωρισµένη σε τρία blocks, δείχνοντας µόνο τα υπολογιστικά κελιά. Κάθε block επιλύεται από διαφορετικό επεξεργαστή. Κάτω απεικονίζονται τα τρία blocks ξεχωριστά µαζί µε τα ghost-cells (γραµµοσκιασµένα κελιά), η διαδικασία επικοινωνίας στα µέτωπα των blocks και η µεταφορά τιµών για τα διαγώνια κελιά.

70 Κεφάλαιο 6. ηµιουργία multi-block επιλυτή Σχήµα 6.10: Επικοινωνία για δισδιάστατη αποσύνθεση Τα blocks 1 και 2, ανταλλάσουν τιµές µεταξύ τους στα µέτωπα E,W αντίστοιχα κατά τη διεύθυνση i. Επιπλέον επικοινωνούν µερικώς µέσω των µετώπων S µε το block 3 στο µέτωπο Ν κατά τη διεύθυνση j, Απαιτείται επίσης και η µεταφορά των τιµών των δύο γκρί κελιών του block 3 στα ghost-cells των blocks 1 και 2 οπότε ολοκληρώνεται η σωστή ενηµέρωση των τιµών µεταξύ των blocks.

Κεφάλαιο 7 Συστοιχία Υπολογιστών Για τις ανάγκες της ανάπτυξης του παράλληλου κώδικα εγκαταστάθηκε µια συστοιχία υπολογιστών αποτελούµενη αρχικά από 8 υπολογιστικές µονάδες (4 dual-cpu) ενώ στη συνέχεια επεκτάθηκε αριθµώντας σήµερα 22 υπολογιστικές µονάδες. 7.1 Υλικό Η χρησιµοποιούµενη συστοιχία αποτελείται από : 1 Xserve G5 server 2 x 2.3Ghz 4 Xserve G5 nodes 2 x 2.0Ghz 6 Xserve G5 nodes 2 x 2.3Ghz 1 Gigabit managed switch 1 UPS σύµφωνα µε τη συνδεσµολογία που ϕαίνεται στο σχήµα 7.1(ϐ ) 7.2 Λογισµικό Το λειτουργικό σύστηµα που χρησιµοποιείται είναι το MacOS X ενώ για τη µεταγλώτισση του κώδικα χρησιµοποιείται ο XL Fortran Compiler της IBM. Για την επικοινωνία µεταξύ των κόµβων χρησιµοποιήθηκε το πρωτόκολο MPI και συγκεκριµένα η υλοποίηση LAM[65]. 71

72 Κεφάλαιο 7. Συστοιχία Υπολογιστών (α ) Φωτογραφία της συστοιχίας (ϐ ) Συνδεσµολογία της συστοιχίας Σχήµα 7.1: Συστοιχία υπολογιστών ΕΜΡΣ 7.3 Λειτουργία Οι 10 κόµβοι (nodes) δεν διαθέτουν σκληρό δίσκο και εκκινούν µέσω του δικτύου (netboot). Το λειτουργικό σύστηµα και τις απαραίτητες ϱυθµίσεις τα παρέχει ο server µέσω των πρωτοκόλλων NFS 1 και DHCP 2 αντίστοιχα. Ο server διαθέτει επίσης µονάδες αποθήκευσης που χρησιµοποιούνται από κοινού από όλους τους υπόλοιπους κόµβους επίσης µέσω του πρωτοκόλου NFS. Με τον τρόπο αυτό οποιαδήποτε αλλαγή στις ϱυθµίσεις ή εγκατάσταση κάποιου λογισµικού αρκεί να γίνει µία ϕορά στον server και όχι σε κάθε κόµβο ξεχωριστά. Αυτό διευκολύνει πολύ τη διαχείριση της συστοιχίας και παρέχει οµοιογένεια όσον αφορά τη λειτουργία της. Τέλος η διαχείριση των χρηστών και των κόµβων που συµµετέχουν στη συστοιχία γίνεται µέσα από την υπηρεσία καταλόγου LDAP 3. 1 Network File System 2 Dynamic Host Configuration Protocol 3 Lightweight Directory Access Protocol

7.4. Επικοινωνία 73 7.4 Επικοινωνία Η επικοινωνία γίνεται µέσω ενός µεταγωγέα (Gigabit Switch) και επιλέχθηκε λόγω του χαµηλού κόστους. Ο δίαυλος Gigabit έχει µεγάλο χρόνο απόκρισης (latency) σε σχέση µε άλλα πχ Myrinet, Infiniband, οπότε έχει γίνει µέριµνα για αποφυγή της συχνής ανταλλαγής δεδοµένων καθώς και της ανταλλαγής µικρών µηνυµάτων. Σύγκριση επιδόσεων µεταξύ αυτών και άλλων διαύλων υπάρχει στη ϐιβλιογραφία [66]. Η όλη διάταξη ελέγχεται αποµακρυσµένα µέσω του τοπικού δικτύου χρησιµοποιώντας το πρωτόκολο SSH. Αξίζει να σηµειωθεί ότι η προσθήκη νέων κόµβων στη συστοιχία απαιτεί ελάχιστες ϱυθµίσεις στον server ενώ δεν απαιτεί καµία αλλαγή στον κώδικα που έχει αναπτυχθεί. Σε µεγάλα προβλήµατα ο όγκος των δεδοµένων που µεταφέρονται µέσω του switch είναι µεγάλος. Η αποστολή των δεδοµένων γίνεται σε «πακέτα» και όχι µε µιας. Το µέγιστο µέγεθος ενός πακέτου που µπορεί να µεταφερθεί (MTU - Maximum Transmission Unit) εξαρτάται από τις ϱυθµίσεις που έχουν γίνει στο switch και στο λειτουργικό σύστηµα. Τυπική τιµή που χρησιµοποιείται στη συντριπτική πλειοψηφία των υπολογιστών ενός τοπικού δικτύου είναι 1500bytes. Αν σταλεί ένα πακέτο µεγαλύτερο από το MTU τότε το πακέτο διασπάται πριν την αποστολή σε τµήµατα µικρότερα ή ίσα του MTU. Τα τµήµατα αυτά επανασυνδέονται πριν την λήψη και έτσι γίνεται επιτυχής µεταφορά ολόκληρου του πακέτου. Η διαδικασία αυτή εισάγει επιπλέον καθυστέ- ϱηση στη µεταφορά διότι για κάθε τµήµα προστίθεται ο χρόνος απόκρισης κατά τη µεταφορά του. Συνεπώς όταν ένα µεγάλο πακέτο διασπάται σε πολλά µικρά τµήµατα µειώνεται η ταχύτητα µεταφοράς του. Στον πίνακα 7.1 ϕαίνεται ότι η πλειοψηφία των πακέτων έχει σχετικά µεγάλο µεγεθος. Τυπικά αναφέρεται πως για ένα πλέγµα µε διαστάσεις 80x40x40 η µεταφορά 2 επιπέδων j-k απαιτεί 2 40 40 4 bytes = 12800 bytes. Το MTU είναι ένα µέγεθος το οποίο µπορεί να µεταβληθεί ανάλογα µε τις ανάγκες και τη χρήση του τοπικού δικτύου. Η αλλαγή αυτή µπορεί να γίνει µόνο εφόσον το επιτρέπει το υλικό (κάρτα δικτύου και switch) και στα όρια που αυτό καθορίζει. Στη συγκεκριµένη συστοιχία υποστηρίζονται τιµές του MTU µέχρι και 9000 (Jumbo Frames). Η ϱύθµιση αυτή γίνεται τόσο στην πλευρά του switch όσο και στις κάρτες δικτύου όλων των κόµβων. Το κέρδος που παρατηρήθηκε από αυτή την αλλαγή (από 1500 σε 9000) ήταν της τάξης του 10%.

74 Κεφάλαιο 7. Συστοιχία Υπολογιστών Πίνακας 7.1: Αριθµός πακέτων Frames (bytes) count 64 692777 65-127 1684362227 128-255 208433544 256-511 7113279 512-1023 378806256 1024-1632 4269568837 7.5 Εκτέλεση εργασιών Η εκτέλεση παράλληλου κώδικα γίνεται αποµακρυσµένα, κατόπιν συνδέσεως του χρήστη µε τον server µέσω του πρωτοκόλλου SSH. Πριν την εκτέλεση οποιουδήποτε παράλληλου κώδικα ϑα πρέπει να οριστούν οι επεξεργαστές που ϑα συµµετέχουν στην παράλληλη επίλυση. Ο ορισµός γίνεται µέσω της εντολής lamboot στην οποία δίνονται µέσω ενός αρχείου (έστω bhost) οι κόµβοι και οι αριθµοί επεξεργαστών που διαθέτουν. Η πρώτη στήλη είναι τα ονόµατα των υπολογιστών και ϑα πρέπει να αντιστοιχούν σε ένα IP µέσω του πρωτοκόλλου DNS 4 αλλιώς ϑα πρέπει να δωθούν οι διευθύνσεις IP. Στη 2η στήλη δίνονται ο αντίστοιχος αριθµός των επεξεργαστών. server node1 node2 node3 node4 node5 node6 node7 node8 node9 node10 cpu=2 cpu=2 cpu=2 cpu=2 cpu=2 cpu=2 cpu=2 cpu=2 cpu=2 cpu=2 cpu=2 Η αρχικοποίηση που απαιτείται πριν την διαδικασία παράλληλης εκτέλεσης γίνεται µε την εντολή : lamboot bhost 4 Domain Name System

7.5. Εκτέλεση εργασιών 75 Η παραπάνω αρχικοποίηση εκκινεί σε κάθε κόµβο διεργασίες της υπολοίησης LAM και χρησιµεύουν στο συντονισµό µεταξύ των κόµβων και των διεργασιών κάτι που γίνεται µέσω του πρωτοκόλου UDP 5. Η εκτέλεση των εργασιών γίνεται από τη γραµµή εντολών µε την εντολή mpirun: mpirun -v -np 22 -wd pwd -L program όπου program το εκτελέσιµο του παράλληλου κώδικα. Εναλλακτικά µπορεί να χρησιµοποιηθούν όλοι οι διαθέσιµοι επεξεργαστές που ορίζονται στο αρχείο bhost εκτελώντας απλώς : mpirun -v C -wd pwd -L program 5 User Datagram Protocol

76

Κεφάλαιο 8 Αποτελέσµατα Στο κεφάλαιο αυτό αξιολογείται η απόδοση του κώδικα, δηλαδή η επιτάχυνση που παρέχει και εξετάζεται η ικανότητα επίλυσης για διάφορους αριθµούς επεξεργαστών και η πιθανή διαφοροποίηση των λύσεων συναρτήσει των χρησιµοποιούµενων επεξεργαστών της συστοιχίας. 8.1 Απόδοση Η αξιολόγηση της απόδοσης έχει να κάνει άµεσα µε την επιτάχυνση speed-up που παρέχει ο παράλληλος κώδικας. Η επιτάχυνση αυτή ορίζεται συνήθως ως ο λόγος του χρόνου εκτέλεσης του σειριακού κώδικα (σε 1 επεξεργαστή) προς το χρόνο εκτέλεσης του παράλληλου κώδικα. Επίσης ορίζεται η απόδοτικότητα (efficiency) ως : S = T s T p (8.1) E = S n 100% (8.2) όπου n ο αριθµός των επεξεργαστών. Στην ιδανική περίπτωση ισχύει S = n, δηλαδή E = 100%. Θα πρέπει να τονιστεί ότι κατά την αποσύνθεση σε διάφορους αριθµούς υποπεδίων, η εξισορρόπηση δεν είναι ίδια, (πίνακας 8.1) οπότε η επιτάχυνση που µετράται περιλαµβάνει διαφορετικούς νεκρούς χρόνους ανάλογα µε τον χρησιµοποιούµενο α- ϱιθµό επεξεργαστών. Επίσης κατά την παράλληλη εκτέλεση σε µικρό αριθµό διεργασιών (1 ή 2) και σε περιπτώσεις πολύ πυκνών πλεγµάτων σε µεγάλα προβλήµατα στα οποία η χρησιµοποιούµενη µνήµη είναι µεγαλύτερη από τη διαθέσιµη, γίνεται 77

78 Κεφάλαιο 8. Αποτελέσµατα αναγκαστικά χρήση της εικονικής µνήµης (virtual memory) χρησιµοποιώντας χώρο στο σκληρό δίσκο. Το γεγονός αυτό επιβραδύνει πάρα πολύ τη διαδικασία επίλυσης καθώς ο χρόνος ανάγνωσης και εγγραφής της εικονικής µνήµης είναι πάρα πολύ µεγάλος, οπότε η ταχύτητα υπολογισµού δεν ανταποκρίνεται στην πραγµατικότητα. Επίσης ϑα πρέπει να τονιστεί ότι η σειριακή έκδοση του κώδικα δεν υφίσταται πλέον, και η εκτέλεση σε έναν επεξεργαστή γίνεται µέσω του παράλληλου κώδικα χρησιµοποιώντας έναν επεξεργαστή. Λόγω των επιπλέον ελέγχων που υπάρχουν στην κώδικα ο χρόνος επίλυσης είναι µεγαλύτερος από αυτόν του σειριακού επιλυτή, και για το λόγο αυτό αποφεύγεται η σύγκριση της ταχύτητας επίλυσης του παράλληλου κώδικα σε σχέση µε έναν επεξεργαστή. 8.1.1 Επίδραση της επιλογής των επεξεργαστών Η αρίθµηση των επεξεργαστών είναι σύµφωνα µε το σχήµα 8.1. Ο αριθµός των επεξεργαστών αυξάνεται προσθέτοντας επεξεργαστές «κάθετα», δηλαδή για 4 επεξεργαστές χρησιµοποιούνται οι 0,2,4,6 και όχι οι 0,1,2,3. Στην 1η περίπτωση η επιτάχυνση ήταν µέχρι και 15% µεγαλύτερη. Το ϕαινόµενο αυτό ακούγεται παράδοξο, καθότι στην 1η περίπτωση η επικοινωνία είναι πιό αργή αφού γίνεται εξ ολοκλήρου µέσω του τοπικού δικτύου, σε αντίθεση µε τη 2η περίπτωση που η ταχύτητα επικοινωνίας γίνεται µέσα από το πολύ γρηγορότερο memory bus. Αυτό µπορεί να εξηγηθεί µε το γεγονός ότι οι 2 επεξεργαστές στον ίδιο κόµβο µοιράζονται την ταχύτητα του κοινού διαύλου επικοινωνίας µε τη µνήµη. Η συµπεριφορά αυτή παρατηρήθηκε και στην περίπτωση εκτέλεσης δύο ίδιων διεργασιών στον ίδιο κόµβο. Εφόσον ο κόµβος έχει δύο επεξεργαστές ϑα έπρεπε ο χρόνος εκτέλεσης και των δύο διεργασιών να παραµείνει ίδιος (αφού κάθε επεξεργαστής αναλαµβάνει την εκτέλεση µιας διεργασίας). Ετσι παρατηρήθηκε µια µικρή αύξηση του χρόνου εκτέλεσης, κάτι που δε συµβαίνει σε συστήµατα που κάθε επεξεργαστής έχει δικό του δίαυλο επικοινωνίας µε τη µνήµη. 8.2 Επαλήθευση αποτελεσµάτων Για την επαλήθευση της ορθότητας του παράλληλου κώδικα έγινε σύγκριση των αποτελεσµάτων του µε πειραµατικές µετρήσεις από γνωστά test cases. [55, 67]. Επίσης εξετάζεται η διαφοροποίηση της λύσης µεταξύ των λύσεων σε διάφορους αριθµούς επεξεργαστών.

8.2.1. Ροή σε αγωγό µε εµπόδιο 79 Σχήµα 8.1: Αρίθµηση επεξεργαστών 8.2.1 Ροή σε αγωγό µε εµπόδιο Ενα από τα πρώτα προβλήµατα που επιλύθηκαν παράλληλα ήταν η τρισδιάστατη ϱοή αέρα µέσα σε έναν αγωγό µέσα στον οποίο υπάρχει ένα εµπόδιο µε τη σχήµα ενός κύβου. Η γεωµετρία της διάταξης απεικονίζεται στο σχήµα 8.2. Η ταχύτητα εισόδου του αέρα είναι 26.57m/s. Για λόγους εξοικονόµησης µνήµης το πρόβληµα Σχήµα 8.2: Απεικόνιση διάταξης ϱοής γύρω από κύβο λύνεται χρησιµοποιώντας συνθήκη συµµετρίας στο µέτωπο Β (επίπεδο x-y) στο µέσο το κύβου, υπολογίζοντας ουσιαστικά το µισό πεδίο ϱοής. Η επίλυση έγινε για 1-22 επεξεργαστές αποσυνθέτοντας το χώρο στη διεύθυνση k, δίνοντας µέγιστη επιτάχυνση 19.3 ϕορές σε σχέση µε 1 για εκτέλεση σε 22 επεξεργαστές. Στην περίπτωση του πυκνού πλέγµατος και για 2 επεξεργαστές παρατηρήθηκε το παράδοξο γεγονός ότι η επιτάχυνση είναι µεγαλύτερη από τη ϑεωρητική. Η συµπε- ϱιφορά αυτή εξηγείται και οφείλεται στην καλύτερη χρήση της λανθάνουσας µνήµης cache που επιτυγχάνει ο µεταγλωτιστής για τις συγκεκριµένες διαστάσεις του προ- ϐλήµατος.

80 Κεφάλαιο 8. Αποτελέσµατα (α ) Επιτάχυνση για 3 διαφορετικά πλέγµατα (ϐ ) U (γ ) W (δ ) P (ε ) Πεδίο ταχυτήτων Σχήµα 8.3: Επιτάχυνση, ισοϋψείς ταχυτήτων U, W πίεσης Π και πεδίο ταχυτήτων

8.2.1. Ροή σε αγωγό µε εµπόδιο 81 (α ) Μπροστά (ϐ ) Επάνω στον κύβο (γ ) Πίσω από τον κύβο (δ ) Πίσω από τον κύβο Σχήµα 8.4: Ροϊκές γραµµές σε διάφορες ϑέσεις

82 Κεφάλαιο 8. Αποτελέσµατα 8.2.2 Ροή σε ορθογωνικό αγωγό Το συγκεκριµένο πρόβληµα είναι τρισδιάστατη ϱοή σε ορθογωνικό αγωγό µε καµπυλότητα 90 o. Επιπλέον εφαρµόζεται οριακή συνθήκη συµµετρίας στο µέτωπο Τ (TOP). Η επίλυση έγινε χρησιµοποιώντας 16 επεξεργαστές και µονοδιάστατη αποσύνθεση στη διεύθυνση k. (α ) Γεωµετρία ορθογωνικού αγωγού (ϐ ) Γεωµετρία και αποσύνθεση (γ ) Λεπτοµέρεια πλέγµατος στην έξοδο Σχήµα 8.5: Γεωµετρία ορθογωνικού αγωγού

8.2.2. Ροή σε ορθογωνικό αγωγό 83 Σχήµα 8.6: Επιτάχυνση (α ) Ισοϋψείς ταχύτητας U στην είσοδο (ϐ ) Ισοϋψείς ταχύτητας V στην είσοδο (γ ) Ισοϋψείς ταχύτητας W στην είσοδο Σχήµα 8.7: Ισοϋψείς ταχυτήτων στην περιοχή εισόδου

84 Κεφάλαιο 8. Αποτελέσµατα (α ) U (ϐ ) U (γ ) V (δ ) V (ε ) W (ϝ ) W Σχήµα 8.8: Ισοϋψείς ταχυτήτων ακριβώς πριν (αριστερά) και µετά (δεξιά) τη γωνία

8.2.2. Ροή σε ορθογωνικό αγωγό 85 (α ) Πεδίο ταχυτήτων αµέσως µετά τη γωνία (ϐ ) Εµφάνιση ανακυκλοφορίας στις γωνίες στην έξοδο (γ ) Πεδίο ταχυτήτων στην έξοδο (δ ) Εµφάνιση ανακυκλοφορίας στις γωνίες στην έξοδο Σχήµα 8.9: Πεδία ταχυτήτων (αριστερά) και εµφάνιση δινών στις γωνίες

86 Κεφάλαιο 8. Αποτελέσµατα 8.2.3 Ροή σε πειραµατική διάταξη T3L4 Στην πειραµατική διάταξη T3L4 η ταχύτητα εισόδου είναι 5m/s ενώ το ποσοστό τύρ- ϐης είναι 2,5%. Η περίπτωση αυτή επελέγη διότι παρουσιάζει καλύτερη ευστάθεια σε σχέση µε τις υπόλοιπες διατάξεις. Το πλέγµα που χρησιµοποιήθηκε έχει διαστάσεις 560x199 µε συνολικό αριθµό υπολογιστικών κελιών 111440. Στον πίνακα 8.1 ϕαίνεται η διανοµή των κελιών σε διάφορους αριθµούς επεξεργαστών. Πίνακας 8.1: Εξισορρόπηση για διάφορους αριθµούς χρησιµοποιούµενων επεξεργαστών Αριθµός Ταυτότητα Ιδανικός Ανατιθέµενος Απόκλιση επεξεργαστών επεξεργαστή αριθµός κελιών αριθµός κελιών % 2 0,1 55720 55720 0.0 4 0,1 29804 29850 +0.155 2,3 25916 25870-0.178 8 0-1 15440 15522 +0.528 2-5 13426 13333-0.696 6-7 13426 13532 +0.785 12 0-1,10-11 10171 10149-0.217 2-5 8844 8756-1.00 6-9 8844 8955 +1.25 16 0-1,10-15 7451 7363-1.18 2-9 6479 6567 +1.36 22 0,1-10-19 5318 5373 1.04 2-9 4624 4577-1.02 20,21 5318 5174-2.7 Στα σχήµατα που ακολουθούν παρουσιάζονται ισοϋψείς ταχυτήτων και πίεσης, καθώς και διανυσµατική απεικόνιση ταχυτήτων και ϱοϊκές γραµµές του πεδίου. Στις ισοϋψείς διακρίνεται η οµοιότητα των λύσεων όπως και η αναµενόµενη συνέχεια στα σηµεία τοµής - σύνορα των υποπεδίων επίλυσης. Κατά την αποσύνθεση της αρχικής γεωµετρίας ϕαίνεται πως δεν υπάρχει ισοκατανοµή στο χώρο. Αυτό οφείλεται στο γεγονός ότι η αποσύνθεση γίνεται ϐάσει του κανονικοποιηµένου χώρου και γίνεται εξισορρόπηση ϐάσει αριθµού κελιών, οπότε προκύπτουν µικρότερες περιοχές όπου το πλέγµα είναι πυκνότερο (σχήµατα 8.13(α ) - 8.14(ε )).

8.2.3. Ροή σε πειραµατική διάταξη T3L4 87 (α ) Σύνορα υποπεδίων επίλυσης στην περιοχή α- (ϐ ) Αποτυχία σύγκλισης για εκτέλεση σε 14 επεξεργαστές για u=5m/s νακυκλοφορίας Σχήµα 8.10: Περιοχή ανακυκλοφορίας και διάγραµµα σύγκλισης για 15 επεξεργαστές Για την ταχύτητα εισόδου που επελέγη (5m/s) παρατηρήθηκε αδυναµία σύγκλισης του κώδικα κατά την εκτέλεση σε 14 και 15 επεξεργαστές. Η αδυναµία αυτή εξηγείται από τη συσσώρευση αριθµητικού σφάλµατος στην περιοχή της ανακυκλο- ϕορίας που δηµιουργείται, όπου συνορεύουν δύο υποπεδία όπως ϕαίνεται στο σχηµα 8.10(α ). Στην περιοχή αυτή δηµιουργούνται έντονες κλίσεις των ταχυτήτων, οι τιµές που γνωρίζει ο ένας επεξεργαστής από τον γειτονικό του ανήκουν στην προηγούµενη επανάληψη και έτσι η υστέρηση αυτή οδηγεί σε καθυστέρηση της σύγκλισης. Το πρόβληµα αυτό ξεπεράστηκε συνδιάζοντας δύο παραµέτρους του επιλυτή, την αύξηση των εσωτερικών επαναλήψεων του αλγορίθµου SIP για την επίλυση της διόρθωσης πίεσης στην οποία παρουσιάστηκε το πρόβληµα και την αύξηση της σταθεράς a. Ο πρώτος χειρισµός οδηγεί σε καλύτερη ακρίβεια της επίλυσης ενώ η αύξηση της στα- ϑεράς a σηµαίνει συµµετοχή περισσότερων όρων του αναπτύγµατος taylor κάτι που επιταχύνει τη σύγκλιση. Η επιλογή του αριθµού επεξεργαστών για την επίλυση του προβλήµατος ϕαίνεται να επηρεάζει και τον αριθµό των επαναλήψεων που απαιτούνται για τη σύγκλιση της επαναληπτικής διαδικασίας (σχήµα 8.12). Συγκεκριµένα οι επαναλήψεις αυτές αυξάνονται µε την αυξηση των επεξεργαστών. Οσοι περισσότεροι επεξεργαστές χρησι- µοποιούνται για την επίλυση τόσο αυξάνεται και η συνολική απαιτούµενη επικοινωνία µεταξύ τους. Ετσι το αθροιστικό σφάλµα που υφίσταται στα όρια των υποπεδίων είναι µεγαλύτερο γενογός που καθυστερεί τη σύγκλιση. Ενδέχεται λοιπόν κατά την επίλυση ο χρόνος εκτέλεσης ανά επανάληψη να είναι µικρότερος για ένα δεδοµένο αριθµό

88 Κεφάλαιο 8. Αποτελέσµατα επεξεργαστών, αλλά ο συνολικός χρόνος επίλυσης να είναι µεγαλύτερος από το χρόνο που χρειάζονται λιγότεροι επεξεργαστές σε λιγότερες όµως επαναλήψεις. Σχήµα 8.11: Χρόνος επίλυσης και επιτάχυνση συναρτήσει των χρησιµοποιούµενων επεξεργαστών Σχήµα 8.12: Αριθµός επαναλήψεων συναρτήσει των χρησιµοποιούµενων επεξεργαστών

8.2.3. Ροή σε πειραµατική διάταξη T3L4 89 (α ) 2 CPU (ϐ ) 4 CPU (γ ) 6 CPU (δ ) 8 CPU (ε ) 10 CPU (ϝ ) 12 CPU Σχήµα 8.13: Γεωµετρία και αποσύνθεση σε 2-16 επεξεργαστές

90 Κεφάλαιο 8. Αποτελέσµατα (α ) 14 CPU (ϐ ) 16 CPU (γ ) 18 CPU (δ ) 20 CPU (ε ) 22 CPU Σχήµα 8.14: Γεωµετρία και αποσύνθεση σε 18-22 επεξεργαστές

8.2.3. Ροή σε πειραµατική διάταξη T3L4 91 (α ) 1 CPU (ϐ ) 2 CPU (γ ) 4 CPU (δ ) 6 CPU (ε ) 8 CPU (ϝ ) 10 CPU (Ϲ ) 12 CPU (η ) 14 CPU Σχήµα 8.15: ιαγράµµατα σύγκλισης για εκτέλεση σε 1-14 επεξεργαστές

92 Κεφάλαιο 8. Αποτελέσµατα (α ) 16 CPU (ϐ ) 18 CPU (γ ) 20 CPU (δ ) 22 CPU Σχήµα 8.16: ιαγράµµατα σύγκλισης για εκτέλεση σε 16-22 επεξεργαστές

8.2.3. Ροή σε πειραµατική διάταξη T3L4 93 (α ) 2 CPU (ϐ ) 4 CPU (γ ) 6 CPU (δ ) 8 CPU (ε ) 10 CPU Σχήµα 8.17: Ισοϋψείς ταχύτητας U για εκτέλεση σε 2-10 επεξεργαστές

94 Κεφάλαιο 8. Αποτελέσµατα (α ) 12 CPU (ϐ ) 14 CPU (γ ) 16 CPU (δ ) 18 CPU (ε ) 20 CPU (ϝ ) 22 CPU Σχήµα 8.18: Ισοϋψείς ταχύτητας U για εκτέλεση σε 12-22 επεξεργαστές

8.2.3. Ροή σε πειραµατική διάταξη T3L4 95 (α ) 2 CPU (ϐ ) 4 CPU (γ ) 6 CPU (δ ) 8 CPU (ε ) 10 CPU Σχήµα 8.19: Ισοϋψείς ταχύτητας V για εκτέλεση σε 2-10 επεξεργαστές

96 Κεφάλαιο 8. Αποτελέσµατα (α ) 12 CPU (ϐ ) 14 CPU (γ ) 16 CPU (δ ) 18 CPU (ε ) 20 CPU (ϝ ) 22 CPU Σχήµα 8.20: Ισοϋψείς ταχύτητας V για εκτέλεση σε 12-22 επεξεργαστές

8.2.3. Ροή σε πειραµατική διάταξη T3L4 97 (α ) 2 CPU (ϐ ) 4 CPU (γ ) 6 CPU (δ ) 8 CPU (ε ) 10 CPU Σχήµα 8.21: Ισοϋψείς πίεσης P για εκτέλεση σε 2-10 επεξεργαστές

98 Κεφάλαιο 8. Αποτελέσµατα (α ) 12 CPU (ϐ ) 14 CPU (γ ) 16 CPU (δ ) 18 CPU (ε ) 20 CPU (ϝ ) 22 CPU Σχήµα 8.22: Ισοϋψείς πίεσης P για εκτέλεση σε 12-22 επεξεργαστές

8.2.3. Ροή σε πειραµατική διάταξη T3L4 99 (α ) 2 CPU (ϐ ) 4 CPU (γ ) 6 CPU (δ ) 8 CPU (ε ) 10 CPU Σχήµα 8.23: Πεδίο ταχυτήτων για εκτέλεση σε 2-10 επεξεργαστές

100 Κεφάλαιο 8. Αποτελέσµατα (α ) 12 CPU (ϐ ) 14 CPU (γ ) 16 CPU (δ ) 18 CPU (ε ) 20 CPU (ϝ ) 22 CPU Σχήµα 8.24: Πεδίο ταχυτήτων για εκτέλεση σε 14-22 επεξεργαστές

8.2.3. Ροή σε πειραµατική διάταξη T3L4 101 (α ) 2 CPU (ϐ ) 4 CPU (γ ) 6 CPU (δ ) 8 CPU (ε ) 10 CPU (ϝ ) 12 CPU Σχήµα 8.25: Ροϊκές γραµµές για εκτέλεση σε 2-12 επεξεργαστές

102 Κεφάλαιο 8. Αποτελέσµατα (α ) 14 CPU (ϐ ) 16 CPU (γ ) 18 CPU (δ ) 20 CPU (ε ) 22 CPU Σχήµα 8.26: Ροϊκές γραµµές για εκτέλεση σε 14-22 επεξεργαστές

8.2.3. Ροή σε πειραµατική διάταξη T3L4 103 Στο σχήµα 8.27 παρατίθενται συγκριτικά διαγράµµατα της ταχύτητας U σε σχέση µε πειραµατικές µετρήσεις σε 8 ϑέσεις, στα οποία διακρίνεται η άριστη συµπεριφορά του κώδικα, υπολογίζοντας µε πάρα πολύ καλή ακρίβεια την πραγµατική ϱοή. (α ) x=6mm (ϐ ) x=8mm (γ ) x=10mm (δ ) x=11mm (ε ) x=13mm (ϝ ) x=15mm (Ϲ ) x=17mm (η ) x=19mm Σχήµα 8.27: Σύγκριση αποτελεσµάτων µε πειραµατικές µετρήσεις στη διάταξη T3L4

104 Κεφάλαιο 8. Αποτελέσµατα 8.2.4 Ροή σε πειραµατική διάταξη T3L6 Στην πειραµατική διάταξη T3L6 η ταχύτητα εισόδου είναι 10m/s ενώ το ποσοστό τύρβης είναι 2,5%. Σε αυτή την περίπτωση η περιοχή ανακυκλοφορίας είναι µικρότερη, ενώ δεν υφίσταται πλέον το πρόβληµα εκτέλεσης σε 14 και 15 επεξεργαστές. Αυτό οφείλεται στον περιορισµό των διαστάσεων της ανακυκλοφορίας µε συνέπεια τη µικρότερη συσσώρευση σφάλµατος. Σχήµα 8.28: Χρόνος επίλυσης και επιτάχυνση συναρτήσει των χρησιµοποιούµενων επεξεργαστών Σχήµα 8.29: Αριθµός επαναλήψεων συναρτήσει των χρησιµοποιούµενων επεξεργαστών

8.2.4. Ροή σε πειραµατική διάταξη T3L6 105 (α ) 2 CPU (ϐ ) 4 CPU (γ ) 6 CPU (δ ) 8 CPU (ε ) 10 CPU (ϝ ) 12 CPU Σχήµα 8.30: ιαγράµµατα σύγκλισης για εκτέλεση σε 2-12 επεξεργαστές

106 Κεφάλαιο 8. Αποτελέσµατα (α ) 14 CPU (ϐ ) 16 CPU (γ ) 18 CPU (δ ) 20 CPU (ε ) 22 CPU Σχήµα 8.31: ιαγράµµατα σύγκλισης για εκτέλεση σε 14-22 επεξεργαστές

8.2.4. Ροή σε πειραµατική διάταξη T3L6 107 (α ) 2 CPU (ϐ ) 4 CPU (γ ) 6 CPU (δ ) 8 CPU (ε ) 10 CPU (ϝ ) 12 CPU Σχήµα 8.32: Ισοϋψείς ταχύτητας U για εκτέλεση σε 2-12 επεξεργαστές

108 Κεφάλαιο 8. Αποτελέσµατα (α ) 14 CPU (ϐ ) 16 CPU (γ ) 18 CPU (δ ) 20 CPU (ε ) 22 CPU Σχήµα 8.33: Ισοϋψείς ταχύτητας U για εκτέλεση σε 14-22 επεξεργαστές

8.2.4. Ροή σε πειραµατική διάταξη T3L6 109 (α ) 2 CPU (ϐ ) 4 CPU (γ ) 6 CPU (δ ) 8 CPU (ε ) 10 CPU (ϝ ) 12 CPU Σχήµα 8.34: Ισοϋψείς ταχύτητας V για εκτέλεση σε 1-12 επεξεργαστές

110 Κεφάλαιο 8. Αποτελέσµατα (α ) 14 CPU (ϐ ) 16 CPU (γ ) 18 CPU (δ ) 20 CPU (ε ) 22 CPU Σχήµα 8.35: Ισοϋψείς ταχύτητας V για εκτέλεση σε 14-22 επεξεργαστές

8.2.4. Ροή σε πειραµατική διάταξη T3L6 111 (α ) 2 CPU (ϐ ) 4 CPU (γ ) 6 CPU (δ ) 8 CPU (ε ) 10 CPU (ϝ ) 12 CPU Σχήµα 8.36: Ισοϋψείς πίεσης P για εκτέλεση σε 1-12 επεξεργαστές

112 Κεφάλαιο 8. Αποτελέσµατα (α ) 14 CPU (ϐ ) 16 CPU (γ ) 18 CPU (δ ) 20 CPU (ε ) 22 CPU Σχήµα 8.37: Ισοϋψείς πίεσης P για εκτέλεση σε 14-22 επεξεργαστές

8.2.4. Ροή σε πειραµατική διάταξη T3L6 113 (α ) 2 CPU (ϐ ) 4 CPU (γ ) 6 CPU (δ ) 8 CPU (ε ) 10 CPU (ϝ ) 12 CPU Σχήµα 8.38: Πεδίο ταχυτήτων για εκτέλεση σε 2-12 επεξεργαστές

114 Κεφάλαιο 8. Αποτελέσµατα (α ) 14 CPU (ϐ ) 16 CPU (γ ) 18 CPU (δ ) 20 CPU (ε ) 22 CPU Σχήµα 8.39: Πεδίο ταχυτήτων για εκτέλεση σε 14-22 επεξεργαστές

8.2.4. Ροή σε πειραµατική διάταξη T3L6 115 (α ) 2 CPU (ϐ ) 4 CPU (γ ) 6 CPU (δ ) 8 CPU (ε ) 10 CPU (ϝ ) 12 CPU Σχήµα 8.40: Ροϊκές γραµµές για εκτέλεση σε 2-12 επεξεργαστές

116 Κεφάλαιο 8. Αποτελέσµατα (α ) 14 CPU (ϐ ) 16 CPU (γ ) 18 CPU (δ ) 20 CPU (ε ) 22 CPU Σχήµα 8.41: Ροϊκές γραµµές για εκτέλεση σε 14-22 επεξεργαστές

8.2.4. Ροή σε πειραµατική διάταξη T3L6 117 Στο σχήµα 8.42 παρατίθενται συγκριτικά διαγράµµατα της ταχύτητας U σε σχέση µε πειραµατικές µετρήσεις σε 8 ϑέσεις, στα οποία διακρίνεται η άριστη συµπεριφορά του κώδικα, υπολογίζοντας µε πάρα πολύ καλή ακρίβεια την πραγµατική ϱοή. (α ) x=6mm (ϐ ) x=7mm (γ ) x=8mm (δ ) x=14mm (ε ) x=15mm (ϝ ) x=16mm (Ϲ ) x=20mm (η ) x=23mm Σχήµα 8.42: Σύγκριση αποτελεσµάτων µε πειραµατικές µετρήσεις στη διάταξη T3L6

118 Κεφάλαιο 8. Αποτελέσµατα 8.2.5 Ροή σε εναλλάκτη Η διάταξη αποτελείται από σειρές σωλήνων ελειπτικού σχήµατος, κάθετα στους ο- ποίους ϱέει αέρας µε ταχύτητα 7m/s. Λόγω της περιοδικότητας της γεωµετρίας η επίλυση γίνεται σε τµήµα αυτής για να εξοικονοµηθεί µνήµη και εφαρµόζονται εκατέρωθεν οριακές συνθήκες περιοδικότητας, δηλαδή στα µέτωπα B-T. Στα µέτωπα S-N εφαρµόζεται συνθήκη συµµετρίας. Η διακριτοποίηση του χώρου γίνεται µε τη χρήση δύο δοµηµένων πλεγµάτων για να εξασφαλιστεί η καλή ποιότητα του πλέγµατος. Η γεωµετρία της διάταξης ϕαίνεται στο σχήµα 8.43. Σχήµα 8.43: Γεωµετρία προβλήµατος Η επίλυση του προβλήµατος έγινε και µε τις 2 µεθόδους αποσύνθεσης. Η γεω- µετρία περιγράφεται από 2 blocks ενώ τα πλέγµατα που χρησιµοποιήθηκαν έχουν διαστάσεις 1144 x 3 x 88 µε συνολικό αριθµό κελιών 604032. Σχήµα 8.44: Γεωµετρία και ισοµερής δισδιάστατη αποσύνθεση σε 22 επεξεργαστές Σχήµα 8.45: Γεωµετρία και εξισορροπηµένη δισδιάστατη αποσύνθεση σε 22 επεξεργαστές Στην 1η περίπτωση αποσύνθεσης κατά k ο όγκος δεδοµένων που ανταλλάσουν οι επεξεργαστές είναι αυξηµένος διότι µεταφέρονται επίπεδα i j και συγκεκριµένα 2 ni nj ncpu = 4 1144 3 22 = 302016 κελιά συνολικά.

8.2.5. Ροή σε εναλλάκτη 119 Στην αποσύνθεση κατά i η επικοινωνία µειώνεται πάρα πολύ καθότι ανταλλάσσονται επίπεδα j k δηλαδή 4 3 88 22 = 23232 κελιά. Κατά την επίλυση µε τη 2η µέθοδο παρατηρήθηκε επιτάχυνση της τάξης του 250% σε σχέση µε την επίλυση µε την 1η µέθοδο και οφείλεται καθαρά στον περιορισµό του όγκου δεδοµένων που ανταλλάσσονται. Στο σχήµα 8.46 απεικονίζονται οι ισοϋψείς της ταχύτητας U σε τρία διαφορετικά σηµεία της διάταξης. Στο σχήµα αυτό ϕαίνεται µόνο το προς επίλυση πεδίο. Στα σχήµατα που ακολουθούν απεικονίζονται ισοϋψείς ταχυτήτων και διανυσµατική απεικόνιση του πεδίου ϱοής δείχνοντας εκατέρωθεν την περιοδικότητα όπου διακρίνεται η αναµενόµενη συνέχεια τόσο στα όρια των υποπεδίων όσο και στα όρια όπου εφαρµόζονται οι συνθήκες περιοδικότητας.

120 Κεφάλαιο 8. Αποτελέσµατα (α ) Είσοδος (ϐ ) Είσοδος (γ ) Μέση (δ ) Πίσω από ένα σωλήνα (ε ) Εξοδος (ϝ ) Μέση Σχήµα 8.46: Ισοϋψείς ταχύτητας U (αριστερά) και πεδίο ταχυτήτων (δεξιά)

8.2.5. Ροή σε εναλλάκτη 121 (α ) Είσοδος (ϐ ) Είσοδος (γ ) Μέση (δ ) Μέση (ε ) Εξοδος (ϝ ) Εξοδος Σχήµα 8.47: Ισοϋψείς ταχύτητας U (αριστερά) και W (δεξιά)

122 Κεφάλαιο 8. Αποτελέσµατα (α ) Είσοδος (ϐ ) Μέση (γ ) Πίσω από ένα σωλήνα (δ ) Πίσω από τον τελευταίο σωλήνα Σχήµα 8.48: Ροϊκές γραµµές σε διάφορες ϑέσεις