Η παρούσα διπλωματική έγκειται στο ευρύτερο πεδίο των Παράλληλων Συστημάτων και εστιάζει στη μελέτη των χαρακτηριστικών των παράλληλων περιοχών και την χρησιμότητά τους σε μια στατική ανάλυση, η οποία σε συνδυασμό με πληροφορία χρόνου εκτέλεσης, μπορεί να προσφέρει μια μικρού κόστους πρόβλεψη της κλιμάκωσης της παράλληλης περιοχής, δεδομένων περισσότερων υπολογιστικών πυρήνων, με σκοπό την αποδοτικότερη χρονοδρομολόγηση των παράλληλων προγραμμάτων, δρομολογώντας παράλληλες περιοχές ξεχωριστά, παρά ολόκληρα παράλληλα προγράμματα. Εστιάζουμε σε προγράμματα που έχουν παραλληλοποιηθεί με την προγραμματιστική διεπαφή OpenMP και σε κανονικές δομές, συγκεκριμένα σε δομές parallel-for.
Αρχικά, υποστηρίζουμε την ιδέα της χρονοδρομολόγησης και κατανομής πόρων σε επίπεδο παράλληλων περιοχών κι όχι σε επίπεδο προγραμμάτων, πετυχαίνοντας έτσι επιτάχυνση (όπου αυτό είναι εφικτό) και κάνοντας καλύτερη χρήση των πόρων. Προς αυτή την κατεύθυνση, παρουσιάζουμε πειραματικά αποτελέσματα που αναδεικνύουν τις διαφορές που μπορούν να έχουν παράλληλες περιοχές του ίδιου προγράμματος.
Κατόπιν, μελετούμε τα χαρακτηριστικά απλών παράλληλων περιοχών αποσκοπώντας στην εύρεση εκείνων που μπορούν να χρησιμοποιηθούν για να προβλέψουμε τη συμπεριφορά της παράλληλης περιοχής και παραθέτουμε τους περιορισμούς μιας τέτοιας ανάλυσης. Παρουσιάζουμε ένα μοντέλο, το οποίο λαμβάνει υπόψιν το λόγο των υπολογισμών προς τις προσβάσεις μνήμης, χρησιμοποιώντας μια στατική ανάλυση του πηγαίου κώδικα του προγράμματος, σε συνδυασμό με πληροφορία κατά το χρόνο εκτέλεσης του προγράμματος.
Επιπλέον, παρουσιάζουμε ένα απλό μοντέλο μνήμης, που χρησιμοποιείται για να εκφράσει την επίδραση που έχει η μνήμη στην κλιμάκωση ενός παράλληλου προγράμματος, το οποίο σε συνδυασμό με την προηγούμενη στατική ανάλυση μπορεί να παράξει μια ελαφριά και συνεπή πρόβλεψη για τη δυνατότητα επιτάχυνσης της παράλληλης περιοχής, ως μια "συμβουλή" προς το χρονοδρομολογητή.
Τέλος, παρουσιάζουμε μια αρχική υλοποίηση που χρησιμοποιεί το μοντέλο αυτό και επιδεικνύουμε την αποτελεσματικότητα της παρούσας ανάλυσης, εφαρμόζοντάς την σε παράλληλες περιοχές από τις σουίτες προγραμμάτων NAS Parallel Benchmark Suite (NPB) και Polyhedral Benchmark Suite (PolyBench), συγκρίνοντας την προβλεπόμενη συμπεριφορά με πειραματικά αποτελέσματα από έναν 8-πύρηνο κόμβο της οικογενείας Clovertown και έναν 24-πύρηνο κόμβο της οικογενείας Dunnington.
This diploma thesis lies in the general area of Parallel Systems and copes with the study of parallel region characteristics and their use in a static analysis, which combined with runtime information can provide a lightweight prediction of the region scalability when the number of available processors increases, with the aim of a more efficient scheduling of parallel applications, by scheduling parallel regions, rather than parallel applications. We mainly focus on programs parallelized using the OpenMP API and regular parallel constructs, namely parallel-for constructs.
Initially, we support the idea of resource allocation and scheduling on a per-parallel-region basis, rather than on a per-program, thus achieving speedup (where possible) and better resource utilization. To that end, we present experimental results which highlight the different behavior that parallel regions of the same program can have.
Subsequently, we study the characteristics of simple parallel regions, opting to find those that can be used to predict the behavior of the parallel region and present the limitations of such an analysis. We also present a model, which takes into account the computation-to-memory ratio, by means of a static analysis of the program source code, as well as runtime information of the program.
Moreover, we present a simple memory model, used to express the effect memory can have to parallel speedup, which along with the aforementioned static analysis, can be used for a lightweight and consistent prediction of the speedup potential of the parallel region, as a “hint” to the scheduler.
Finally, we present a first implementation that uses this model and showcase the effectiveness of this analysis by applying it to parallel regions from the NAS Parallel Benchmark Suite (NPB) and Polyhedral Benchmark Suite (PolyBench) benchmark suites, comparing the predictions with experimental results from an 8-core Clovertown-based and a 24-core Dunnington-based multicore node.