Διερεύνηση της απόδοσης κωδίκων υπολογιστικής ρευστοδυναμικής σε υπολογιστικά συστήματα με διαφορετικές κάρτες γραφικών
Investigation of the performance of computational fluid dynamics codes in computer systems with different graphics cards
Keywords
CFD ; Εξισώσεις Navier-Stokes ; Μέθοδος διακριτοποίησης ; Δομημένο πλέγμα ; Παράλληλος προγραμματισμός ; Μοντέλο CUDA ; Γλώσσα προγραμματισμού Julia ; JuliaGPU ; Υπολογιστική ρευστοδυναμικήAbstract
Σκοπός της διπλωματικής εργασίας αποτελεί η διεύρυνση της τεχνογνωσίας πάνω στο τομέα της υπολογιστικής ρευστοδυναμικής. Η ανάπτυξη της υπολογιστικής ισχύς προσδίδει ιδιαίτερο πλεονέκτημα στην σημερινή εποχή. Εφαρμογές με άπειρα δεδομένα και δύσκολες μεθόδους επίλυσης στοχεύουν επαναστατικές εξελίξεις. Αντικείμενο της παρούσας διατριβής αποτελεί η εκτέλεση υπολογιστικών προσομοιώσεων ρευστοδυναμικής σε σύγχρονα αναπτυγμένα υπερυπολογιστικά συστήματα υψηλών αποδόσεων. Κατ’ αυτόν τον τρόπο, η ερευνητική κοινότητα κατορθώνει να έχει γρήγορα και ακριβή αποτελέσματα που βελτιώνουν τις ατέλειες μιας κατασκευής. Στην παρούσα διπλωματική, προσομοιώθηκε στη γλώσσα προγραμματισμού Julia, η ροή αέρα γύρω από ένα κυκλικό σώμα, όπου εξάχθηκαν αποτελέσματα για διάφορα φυσικά μεγέθη, καθώς επίσης συγκρίθηκαν οι χρόνοι εκτέλεσης των προσομοιώσεων σε πολλαπλά υπολογιστικά συστήματα. Στην αρχή της διατριβής, διατυπώνονται τα κεφάλαια της ρευστομηχανικής. Αναγκαίο καλό είναι το θεωρητικό υπόβαθρο που βοηθά τον αναγνώστη να κατανοήσει καλύτερα το πρόβλημα.
Περιγράφεται ο ρόλος της ρευστομηχανικής και συγχρόνως οι πολλαπλές δυνατότητες που μπορεί η υπολογιστική ρευστοδυναμική να προσφέρει στις καθημερινές εφαρμογές. Στα επόμενα κεφάλαια διατυπώνονται τα βήματα μιας CFD λύσης που χρειάζεται για υλοποίηση ολοκληρωμένων αποτελεσμάτων. Αμέσως μετά, αναλύεται ο τρόπος εκτέλεσης του κώδικα του προβλήματος από τον
παράλληλο προγραμματισμό. Συγχρόνως, παρατίθεται η αρχιτεκτονική του υπολογιστή, ο τρόπος διάταξης της μνήμης και τα βασικά εξαρτήματα που υλοποιείται η μελέτη περίπτωσης, δηλαδή οι κάρτες γραφικών GPU. Συνεχίζοντας, αναπτύσσονται τα μοντέλα του παράλληλου προγραμματισμού, ώστε να επιλεγεί το πιο αξιόλογο μοντέλο για την επίλυση του κώδικα πάνω σε μια κάρτα γραφικών σύμφωνα με τη γλώσσα προγραμματισμού Julia που θα χρησιμοποιηθεί. Ταυτόχρονα, περιγράφονται οι βασικές εξισώσεις και τα μεγέθη που θα βοηθήσουν στην σύνταξη και τη λογική του υπό μελέτη κώδικα. Τέλος, αξιολογούνται τα τελικά αποτελέσματα των προσομοιώσεων καθώς και ο χρόνος εκτέλεσης των προσομοιώσεων για κάθε διαφορετική περίπτωση που μελετάται.
Abstract
The aim of the thesis is to expand the know-how in the field of Computational Fluid Dynamics. The development of computing power confers a particular advantage in today's world. Applications with infinite data and difficult solution methods target revolutionary developments. The subject of this thesis is the execution of Computational Fluid Dynamics Simulations in
contemporary, high-performance, supercomputing systems. In this way, the research community manages to get fast and accurate results that improve the imperfections of a particular construction. In this thesis, the airflow around a circular body was simulated in the Julia programming language, where results for various physical sizes were extracted, as well as the execution times of simulations in multiple computer systems were compared. At the beginning of the thesis, the chapters of fluid mechanics are formulated. The theoretical background is a necessity that helps the reader to better understand the problem. The role of fluid
mechanics, and at the same time, the multiple possibilities that computational fluid dynamics can offer in everyday applications are described. The following chapters outline the steps of a CFD solution that is needed to implement comprehensive results. Immediately afterwards, the way the problem code is executed by parallel programming is analyzed. At the same time, the architecture of the computer, the way the memory is arranged and the basic components that the case study is implemented, i.e. the GPU graphics cards, are listed. Furthermore, the models of parallel programming are developed in order to select the most valuable model for solving the code on a graphics card according to the Julia programming language to be used. At the same time, the basic equations and magnitudes are described, which will help to compile the code under study logically. Finally, the final results of the simulations are evaluated as well as the execution time of the simulations for each different case studied.