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

Σχετικά έγγραφα
Προγραμματισμός Συστημάτων Υψηλών Επιδόσεων (ΗΥ421) Εργασία Εξαμήνου

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

Προγραμματισμός Συστημάτων Υψηλών Επιδόσεων (ΗΥ421) 3η Εργαστηριακή Άσκηση

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

Αριθµητικές Μέθοδοι Collocation. Απεικόνιση σε Σύγχρονες Υπολογιστικές Αρχιτεκτονικές

Παρουσίαση συλλογών υποπρογραμμάτων για γραμμική άλγεβρα: blas lapack

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

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

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

GPU DD Double-Double 3 4 BLAS Basic Linear Algebra Subprograms [3] 2

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

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

Παρουσίαση 2 ης Άσκησης:

Θέματα Μεταγλωττιστών

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

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

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

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

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

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

ΠΕΡΙΕΧΟΜΕΝΑ 1 ΚΕΦΑΛΑΙΟ ΟΙ ΥΠΟΛΟΓΙΣΤΕΣ ΑΠΟ ΤΗΝ ΑΡΧΑΙΟΤΗΤΑ ΜΕΧΡΙ ΣΗΜΕΡΑ Ιστορική αναδρομή Υπολογιστικές μηχανές

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

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

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

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

επιφάνεια πυριτίου Αναφορά στο Εκπαιδευτικό Υλικό : 5. Αναφορά στο Εργαστήριο :

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

215 Μηχανικών Η/Υ και Πληροφορικής Πάτρας

Μελέτη και υλοποίηση αλγορίθμων για την αριθμητική επίλυση γραμμικών συστημάτων. Study and implementation of linear systems solvers

Παρουσίαση 1 ης Άσκησης:

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

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

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

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

ΓΡΑΜΜΙΚΟΣ & ΔΙΚΤΥΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Το «κλειστό» σύστημα. Ανοικτές επικοινωνίες... Εισαγωγή στην Τεχνολογία της Πληροφορικής. Εισαγωγή στην τεχνολογία της πληροφορικής

HY-486 Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο

3 ο ΦΥΛΛΑΔΙΟ ΑΣΚΗΣΕΩΝ

Επιστημονικοί Υπολογισμοί (ή Υπολογιστική Επιστήμη)

Βασίλειος Μαχαιράς Πολιτικός Μηχανικός Ph.D.

Αυτοματισμοί και Συστήματα Αυτομάτου Ελέγχου. Ενότητα 2

ΓΡΑΜΜΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ με το EXCEL

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

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

Το εσωτερικό ενός PC. Τεχνολογία Η/Υ & Πληροφοριών - 05 Κεντρική μονάδα Χουρδάκης Μανόλης

Εύρεση & ιαχείριση Πληροφορίας στον Παγκόσµιο Ιστό

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

Εύρεση & ιαχείριση Πληροφορίας στον Παγκόσµιο Ιστό. Ζητήµατα Μεγάλης-Κλίµακας Υλοποίησης του PageRank. Αρχιτεκτονική Μηχανής Αναζήτησης

Μορφές αποδείξεων. Μαθηματικά Πληροφορικής 2ο Μάθημα. Μορφές αποδείξεων (συνέχεια)

lab13grades Άσκηση 2 -Σωστά απελευθερώνετε ολόκληρη τη λίστα και την κεφαλή

Δομές Δεδομένων και Αλγόριθμοι. Λουκάς Γεωργιάδης

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

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

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

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

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

Εισαγωγή στους Αλγόριθμους. Παύλος Εφραιμίδης, Λέκτορας

Πληροφορική 2. Δομές δεδομένων και αρχείων

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

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

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

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

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

ΓΡΑΜΜΙΚΟΣ & ΔΙΚΤΥΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

$./jms console -w <jms in> -r <jms out> -o <operations file> namedpipe. (standard input).

ΡΟΜΠΟΤΙΚΗ ΟΡΑΣΗ. Όταν ένα ρομπότ κινείται σε άγνωστο χώρο ή σε χώρο που μπορεί να αλλάξει η διάταξή του τότε εμφανίζεται η ανάγκη της όρασης μηχανής.

Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές. 5 ο Μάθημα. Λεωνίδας Αλεξόπουλος Λέκτορας ΕΜΠ. url:

Υπολογιστές Ι. Άδειες Χρήσης. Εισαγωγή. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

Οι πράξεις της συνένωσης. Μ.Χατζόπουλος 1

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

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

Binary32 (a hi ) 8 bits 23 bits Binary32 (a lo ) 8 bits 23 bits Double-Float (a=a hi +a lo, a lo 0.5ulp(a hi ) ) 8 bits 46 bits Binary64 11 bits sign

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

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

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

Με τον όρο μνήμη αναφερόμαστε στα μέσα που χρησιμοποιούνται για την αποθήκευση προγραμμάτων και δεδομένων σε έναν υπολογιστή ή άλλη ψηφιακή

Εισαγωγή στον Προγραμματισμό

Ποσοτικές Μέθοδοι στη Διοίκηση Επιχειρήσεων ΙΙ Σύνολο- Περιεχόμενο Μαθήματος

Αποθήκευση εδομένων. ομή ενός Σ Β. Εισαγωγή Το «εσωτερικό» ενός ΜΕΡΟΣ Β : Η (εσωτερική) αρχιτεκτονική ενός Σ Β είναι σε επίπεδα

Σχολή Μηχανολόγων Μηχανικών ΕΜΠ 4 ο Εξάμηνο ΑΡΙΘΜΗΤΙΚΗ ΑΝΑΛΥΣΗ. Πρώτη Ενότητα Αριθμητική Επίλυση Μη-Γραμμικών Εξισώσεων

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

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

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

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

MATLAB. Εισαγωγή στο SIMULINK. Μονάδα Αυτόματης Ρύθμισης και Πληροφορικής

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

Αριθμητικές Μέθοδοι σε Προγραμματιστικό Περιβάλλον

Λογικός Σχεδιασµός και Σχεδιασµός Η/Υ. ΗΜΥ-210: Εαρινό Εξάµηνο Σκοπός του µαθήµατος. Ψηφιακά Συστήµατα. Περίληψη. Εύρος Τάσης (Voltage(

ΠΕΡΙΕΧΟΜΕΝΑ ΜΕΡΟΣ Α : ΘΕΜΑΤΑ ΒΑΣΗΣ 1. ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ...30

Εισαγωγή στην Πληροφορική Προγραμματισμός-Λειτουργικά

All Pairs Shortest Path

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

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΑΡΑΛΛΗΛΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΜΕ OpenMP

Πληροφορική. Ενότητα 1: Α. Οργάνωση μαθήματος. Β. Στοιχεία Προγραμματισμού -Προγραμματιστικές Δομές, Πρόγραμμα, Γλώσσες.

Mέσα στερεάς κατάστασης

Μελέτη και έλεγχος της διατήρησης της μηχανικής ενέργειας στην ελεύθερη πτώση σώματος. (Ανάλυση video μέσω του Σ.Σ.Λ.Α, LoggerPro της Vernier)

Ψηφιακά Συστήματα. 3. Λογικές Πράξεις & Λογικές Πύλες

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

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

QuakeTM: Parallelizing a Complex Sequential Application Using Transactional Memory (Gajinov et al., 2009)

Transcript:

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

Εισαγωγή Η παρούσα εργασία ασχολείται με την υλοποίηση των επαναληπτικών μεθόδων Conjugate Gradient (CG) και Biconjugate Gradient (BiCG), σε παράλληλες πλατφόρμες. Οι μέθοδοι αυτοί χρησιμοποιούνται για την επίλυση του γραμμικού συστήματος, που δημιουργείται κατά την προσομοίωση ενός γραμμικού κυκλώματος. Ένα παράδειγμα γραμμικού κυκλώματος είναι ένα Power Grid, δηλαδή το RLC κύκλωμα μέσω του οποίου τροφοδοτείται ένα ψηφιακό κύκλωμα. Η προσομοίωση τέτοιων κυκλωμάτων είναι χρονοβόρα, καθώς μπορεί να διαρκέσει από μερικά λεπτά έως αρκετές μέρες, για μεγάλης τάξης κυκλώματα, λόγω του τεράστιου όγκου υπολογισμών που απαιτούνται. Συνεπώς η βελτιστοποίηση των προαναφερθέντων μεθόδων είναι σημαντική. Γενικά για τις υλοποιήσεις Η σειριακή υλοποίηση των μεθόδων έγινε στα πλαίσια του προπτυχιακού μαθήματος Προσομοίωση Κυκλωμάτων κατά το εαρινό εξάμηνο του ακαδημαϊκού έτους 2011-2012. Πέρα από την υλοποίηση των μεθόδων ο κώδικας περιελάμβανε και έναν parser για την ανάγνωση του κυκλώματος, όπως επίσης και μεθόδους για την δημιουργία του γραμμικού συστήματος καθώς και για την επιστροφή των αποτελεσμάτων. Λεπτομερής περιγραφή της υλοποίησης των μεθόδων καθώς και του λοιπού κώδικα περιλαμβάνονται στις αντίστοιχες αναφορές που παραδόθηκαν κατά τη διάρκεια του εξαμήνου. Πάνω στην αρχική υλοποίηση έγιναν διάφορες βελτιστοποιήσεις πέραν από αυτές των μεθόδων CG και BiCG, με σκοπό την βελτίωση του συνολικού χρόνου εκτέλεσης. Ένα τέτοιο παράδειγμα είναι η χρήση hash table για την αντιστοίχηση των αλφαριθμητικών ονομάτων των κόμβων σε ακέραιες τιμές, καθώς και η εύρεση μιας ικανοποιητικής hash funstion. Τέτοιες βελτιστοποιήσεις δεν αναφέρονται λεπτομερώς στο παρούσα αναφορά, καθώς δεν συνεισφέρουν στη βελτίωση του χρόνου εκτέλεσης του solver. Για την παραλληλοποίηση των μεθόδων έγιναν δύο υλοποιήσεις. Η μια έγινε με χρήση της Intel Math Kernel Library (MKL) για χρήση σε multicore συστήματα και η άλλη έγινε σε CUDA για χρήση σε GPUs. Ο παραλληλισμός που εκμεταλλεύονται και οι δύο αυτές υλοποιήσεις περιορίζεται στο επίπεδο των γραμμικών πράξεων μεταξύ των πινάκων, διανυσμάτων και γραμμωτών που συμμετέχουν στο γραμμικό σύστημα. Η παραλληλοποίηση των επαναλήψεων των μεθόδων είναι ανέφικτη λόγω των εξαρτήσεων που υπάρχουν μεταξύ των αποτελεσμάτων μιας επανάληψης με την επόμενη. Οι παράλληλες υλοποιήσεις μας, υποστηρίζουν μόνο πίνακες αποθηκευμένους σε αραιή μορφή (CSC). Πίνακες αποθηκευμένοι σε κανονική μορφή, χρησιμοποιούνται μόνο για προσομοίωση κυκλωμάτων μικρού μεγέθους (τάξης λίγων χιλιάδων πυλών), τα οποία θα ήταν ανούσιο να προσομοιώσουμε παράλληλα μιας και ο χρόνος προσομοίωσής τους δεν ξεπερνά τα λίγα δευτερόλεπτα. Για την αποθήκευση σε Compressed Sparse Column (CSC) μορφή, χρησιμοποιήθηκε η βιβλιοθήκη csparse. Στις υλοποιήσεις μας, οι μέθοδοι CG και BiCG χρησιμοποιούνται για την εκτέλεση DC και Transient ανάλυσης. Για την Transient ανάλυση χρησιμοποιείται η μέθοδος Backward Euler για τον υπολογισμό του γραμμικού συστήματος. Λεπτομέρειες σχετικές με τις υλοποιήσεις, οδηγίες για την εγκατάσταση, πληροφορίες για την παραμετροποίηση των υλοποιήσεων, καθώς και οδηγίες για τον έλεγχο των αποτελεσμάτων παρέχονται στο αρχείο README που συνοδεύει τον πηγαίο κώδικα. Υλοποίηση σε MKL Η MKL παρέχει, μεταξύ άλλων, συναρτήσεις των πακέτων BLAS και LAPACK, που εκτελούν πράξεις γραμμικής άλγεβρας, υλοποιημένες για multicore συστήματα και βελτιστοποιημένες σε μεγάλο βαθμό. Ο παραλληλισμός της MKL βασίζεται σε OpenMP. Το μοντέλο της OpenMP επιβάλει τη δημιουργία κάποιων threads κατά την πρώτη εμφάνιση παραλληλισμού στον κώδικα (default: 4 threads) και αναθέτει δουλειές στα threads αυτά χωρίς να τα τερματίζει, παρά μόνο όταν ολοκληρωθεί η εκτέλεση και του τελευταίου -2-

τμήματος παράλληλου κώδικα. Η υλοποίησή μας χρησιμοποιεί τις παρακάτω BLAS συναρτήσεις της MKL: dcscmv (Double, Compressed Sparse Column, Matrix * Vector) ddot (Double, Dot product) dcopy (Double, vector elements Copy) dror (Double, vector Rotation) daxpy (Double, A * x Plus y) Σε περιπτώσεις όπου έχουμε πράξεις μεταξύ διανυσμάτων οι οποίες δεν ανήκουν στα πακέτα BLAS ή LAPACK (όπως, για παράδειγμα, πολλαπλασιασμός δύο διανυσμάτων στοιχείο προς στοιχείο για την παραγωγή τρίτου διανύσματος), χρησιμοποιούμε OpenMP, μιας και το κόστος παραλληλοποίησης είναι σχεδόν μηδενικό αφού τα OpenMP threads έχουν ήδη δημιουργηθεί από το περιβάλλον της MKL και είναι ενεργά. Επίσης, η συνάρτηση dnrm2 (δεύτερη νόρμα διανύσματος) της MKL δεν έχει χρησιμοποιηθεί, παρόλο που απαιτείται ο υπολογισμός νόρμας από τις μεθόδους CG και BiCG. Ο λόγος είναι οτι η MKL υλοποίησή της δεν είναι παράλληλη, το οποίο έχει ως αποτέλεσμα χειρότερο χρόνο εκτέλεσης σε σχέση με την δική μας υλοποίησης της dnrm2. Υλοποίηση σε CUDA Στην υλοποίηση της CUDA χρησιμοποιήθηκαν οι ίδιες συναρτήσεις με αυτές της MKL, από τα πακέτα CUBLAS και CUSPARSE. Οι πράξεις μεταξύ διανυσμάτων που δεν υποστηρίζονται από τα πακέτα αυτά, υλοποιήθηκαν με τη μορφή kernels ώστε να μπορούν να εκτελούνται στην GPU χωρίς να γίνονται περιττές μεταφορές δεδομένων από και προς την GPU. Η χρήση της GPU για εκτέλεση υπολογισμών απαιτεί και την μεταφορά δεδομένων στη συσκευή. Για λόγους βελτιστοποίησης, οι μεταφορές δεδομένων προς την GPU γίνονται μια φορά, κατά την έναρξη της εκτέλεσης της μεθόδου. Μετά το τέλος όλων των επαναλήψεων της μεθόδου, τα αποτελέσματα επιστρέφονται πίσω στη CPU. Κατά την Transient ανάλυση, τα αποτελέσματα μεταφέρονται πίσω στην CPU μετά από κάθε ολοκληρωμένη προσομοίωση για μια χρονική στιγμή, με σκοπό να γραφούν στο αρχείο αποτελεσμάτων. -3-

Μετρήσεις Για την μέτρηση των επιδόσεων των υλοποιήσεών μας, χρησιμοποιήθηκαν τα Power Grid s της IBM. Τα κυκλώματα αυτά είναι της τάξης των 50Κ 3600Κ στοιχείων. Στον παρακάτω πίνακα παρατίθενται, για κάθε κύκλωμα, ο χρόνος εκτέλεσης του solver, το συνολικό speedup σε σχέση με τον σειριακό χρόνο και το μέσο speedup για μια επανάληψη, με χρήση της μεθόδου BiCG κατά την εκτέλεση DC ανάλυσης. Οι χρόνοι είναι σε sec: Bi-CG solver timings Speedup Bi-CG solver iterations Average iteration speedup Serial MKL CUDA MKL CUDA Serial MKL CUDA MKL CUDA ibmpg1 36,64 21,12 16,68 1,73 2,20 10246 10241 10939 1,73 2,35 ibmpg2 9 6,36 3,72 1,42 2,42 717 717 717 1,42 2,42 ibmpg3 - - 4999,7 - - - - - - - ibmpg4 98,49 82,4 33,17 1,20 2,97 903 903 903 1,20 2,97 ibmpg5 1065,92 1010,21 334,98 1,06 3,18 7018 7013 6989 1,05 3,17 ibmpg6 4950,75 4845,86 1584,71 1,02 3,12 21204 21188 20816 1,02 3,07 ibmpgnew1 3732 3296,5 1143,23 1,13 3,26 15827 15573 15535 1,11 3,20 ibmpgnew2 - - - - - - - - - - * Οι προσομοιώσεις του ibmpg3 με χρήση των Serial και MKL υλοποιήσεων, δεν είχαν ολοκληρωθεί μετά από περίοδο μιας ημέρας. ** Η προσομοίωση του ibmpgnew2 απέτυχε λόγω μηδενικού omega. *** Το πλήθος τον επαναλήψεων ποικίλει από υλοποίηση σε υλοποίηση και από εκτέλεση σε εκτέλεση λόγω του διαφορετικού αριθμητικού σφάλματος που παράγεται από την εκτέλεση floating point operations με διαφορετική σειρά κάθε φορά. Οι παραπάνω χρόνοι φαίνονται και στο ακόλουθο γράφημα: 10000 BiCG solver timings 1000 Time in sec 100 Serial MKL CUDA 10 1 ibmpg1 ibmpg2 ibmpg3 ibmpg4 ibmpg5 ibmpg6 ibmpgnew1 ibmpgnew2 Η υλοποίηση σε CUDA είναι η ταχύτερη για όλα τα κυκλώματα. Η MKL υλοποίηση είναι λίγο ταχύτερη από την σειριακή. Το speedup που λαμβάνουμε κυμαίνεται από ~1x μέχρι ~1.7x για την MKL και από ~2.2x μέχρι ~3.3x για την CUDA. -4-

Το πλήθος των επαναλήψεων είναι αρκετά μεγάλο. Αυτό οφείλεται στην πολύ απλή μορφή του preconditioner πίνακα που χρησιμοποιούμε, ο οποίος ουσιαστικά είναι ένας διαγώνιος πίνακας, που περιέχει τα στοιχεία της διαγωνίου του πίνακα A του γραμμικού συστήματος. Άλλες μέθοδοι για preconditioning πιθανώς θα μείωναν σημαντικά το πλήθος των επαναλήψεων. Για την προσομοίωση με χρήση της μεθόδου CG, απαιτείται ο πίνακας του γραμμικού συστήματος που δημιουργείται να είναι Συμμετρικός και Θετικά Ορισμένος (SPD). Για να ισχύει αυτό θα πρέπει το κύκλωμα να μην περιέχει πηγές τάσης. Για να μπορέσουμε να προσομοιώσουμε τα κυκλώματα της IBM (τα οποία περιέχουν πηγές τάσης VDD=1.8V) με την μέθοδο CG, προσθέσαμε στις υλοποιήσεις μας την επιλογή για αγνόησή των πηγών τάσης. Το αποτέλεσμα της προσομοίωσης δεν θα είναι πια η ακριβής τάση στους κόμβους, αλλά η πτώση τάσης σε σχέση με την τάση τροφοδοσίας. Τα αποτελέσματα της προσομοίωσης με χρήση της μεθόδου CG κατά την εκτέλεση DC ανάλυσης, φαίνονται στον παρακάτω πίνακα και στο αντίστοιχο γράφημα. Οι χρόνοι είναι σε sec: CG solver timings Speedup CG solver iterations Average iteration speedup Serial MKL CUDA MKL CUDA Serial MKL CUDA MKL CUDA ibmpg1 19,54 11,09 9,3 1,76 2,10 11163 11063 11048 1,75 2,08 ibmpg2 5,2 4,65 2,22 1,12 2,34 823 823 823 1,12 2,34 ibmpg3 3088,61 3052,75 1083,34 1,01 2,85 59469 59324 59966 1,01 2,87 ibmpg4 62,51 62,4 19,91 1,00 3,14 1063 1063 1063 1,00 3,14 ibmpg5 766,61 877,58 226,19 0,87 3,39 9205 9234 9218 0,88 3,39 ibmpg6 3701,95 4391,8 1122,01 0,84 3,30 28937 29048 28870 0,85 3,29 ibmpgnew1 3071,49 3530,65 883,12 0,87 3,48 23599 23712 23509 0,87 3,46 ibmpgnew2 6630,65 6409,58 2027,64 1,03 3,27 72797 71156 71490 1,01 3,21 10000 CG solver timings 1000 Time in sec 100 10 Serial MKL CUDA 1 ibmpg1 ibmpg2 ibmpg3 ibmpg4 ibmpg5 ibmpg6 ibmpgnew2 ibmpgnew1 Παρατηρούμε πως η υλοποίηση σε CUDA είναι η ταχύτερη. Παραδόξως η MKL υλοποίηση είναι πιο αργή και από την σειριακή υλοποίηση, για κάποια κυκλώματα. Αυτό πιθανώς οφείλεται στο ότι το κόστος του παραλληλισμού είναι μεγαλύτερο από το όφελος. -5-

Συγκρίνοντας τις δύο μεθόδους, βλέπουμε πως η CG είναι ταχύτερη από την BiCG. Αυτό οφείλεται στο ότι πλήθος των υπολογισμών που εκτελεί η CG είναι σημαντικά μικρότερο. Πιο συγκεκριμένα η CG είναι κατά 32,7% ταχύτερη από την BiCG για την σειριακή υλοποίηση, 19% για την MKL υλοποίηση και 34,8% για την CUDA υλοποίηση. Συνεπώς ο ταχύτερος τρόπος για να προσομοιώσουμε ένα κύκλωμα με το εργαλείο που υλοποιήσαμε, είναι με χρήση της μεθόδου CG σε υλοποίηση CUDA. Στο παρακάτω γράφημα φαίνεται το speedup των κυκλωμάτων της IBM, όταν αυτά είναι ταξινομημένα κατά αύξουσα πολυπλοκότητας (ως πολυπλοκότητα θεωρούμε την διάσταση του πίνακα Α η οποία φαίνεται μέσα σε παρένθεση στον άξονα των x): 4 3,5 3 Speedup x Speedup 2,5 2 1,5 1 0,5 0 Ibmpg2 (127565) Ibmpg4 (954542) Ibmpg5 (1618394) Ibmpg6 (2506730) Ibmpg1 (4494) Ibmpg3 (852536) Ibmpgnew2 (1461993) Ibmpgnew1 (2391254) BiCG MKL BiCG CUDA CG MKL CG CUDA Παρατηρούμε πως το καλύτερο speedup λαμβάνεται με της χρήση της CG μεθόδου σε CUDA, στην οποία περίπτωση, όσο μεγαλύτερης πολυπλοκότητας είναι το κύκλωμα, τόσο μεγαλύτερο είναι το speedup. Το γεγονός οτι η υλοποίηση της CG σε CUDA δείχνει πως κλιμακώνει, υπόσχεται πως σε μεγαλύτερα κυκλώματα της τάξης των δεκάδων εκατομμυρίων στοιχείων, το speedup που θα λάβουμε θα είναι ακόμα μεγαλύτερο. Αντίθετα οι MKL υλοποιήσεις δείχνουν να μην κλιμακώνουν καθώς για κυκλώματα με περισσότερα από ~1Μ στοιχεία, ο χρόνος εκτέλεσης είναι πολύ κοντά ή χειρότερος από τον σειριακό. Για Transient ανάλυση χρησιμοποιήθηκε μόνο η μέθοδος CG, καθώς η μέθοδος BiCG αποτυγχάνει για όλα τα transient κυκλώματα της IBM, σε κάποια χρονική στιγμή. Τα αποτελέσματα φαίνονται στον παρακάτω πίνακα και το αντίστοιχο γράφημα: CG solver timings Speedup Serial MKL CUDA MKL CUDA ibmpg1t 6849,52 4453,67 2915,41 1,54 2,35 ibmpg2t 2277,24 1839,43 866,63 1,24 2,63 * Η transient ανάλυση έγινε σε 1000 χρονικά σημεία -6-

8000 CG solver timings for transient analysis Time in sec 7000 6000 5000 4000 3000 2000 1000 Serial MKL CUDA 0 ibmpg1t ibmpg2t Τα αποτελέσματα συμβαδίζουν με αυτά της DC ανάλυσης, αφού η υλοποίηση σε CUDA είναι πάλι η ταχύτερη. Αυτό είναι λογικό μιας και η transient ανάλυση εκτελεί ουσιαστικά πολλαπλές DC αναλύσεις, κάθε φορά σε διαφορετική χρονική στιγμή. Παρατηρήσεις Στις παραπάνω μετρήσεις για την υλοποίηση σε CUDA, δεν περιλαμβάνεται: ο χρόνος αρχικοποιήσεων στη GPU που είναι της τάξης των 5-10 sec, ο χρόνος δέσμευσης και αποδέσμευσης μνήμης που είναι της τάξης των λίγων msec, ο χρόνος μεταφοράς δεδομένων, που κυμαίνεται από 10ms έως 700ms για DC ανάλυση και από 1s έως 4s για Transient ανάλυση (δηλαδή <0.1% του συνολικού χρόνου). Τα αποτελέσματα όλων των εκτελέσεων ελέγχθηκαν με το εργαλείο ελέγχου που υλοποιήσαμε. Η μέγιστη απόκλιση σχέση με τα αποτελέσματα της IBM είναι της τάξης του 0.9% (δηλαδή 0.02V για VDD=1.8V). Η μέση απόκλιση είναι περίπου 100 φορές μικρότερη από την μέγιστη. Οι μετρήσεις έγιναν στον υπολογιστή inf-hercules, ο οποίος είναι εξοπλισμένος με τα παρακάτω: CPU: Intel i7 x64 με 4 cores στα 2.5MHz και 8GB RAM GPU: GeForce GTX 560 Ti με 384 cores στα 1.76MHz και 1GB global memory -7-