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

Εργαστηριακή Άσκηση Εαρινού Εξαμήνου 2008

 
ΔΙΑΜΑΝΤΟΠΟΥΛΟΣ ΔΙΟΝΥΣΗΣ (2841) - Αγγελόπουλος Γιώργος (3020) - Κωστοπούλου Γιώτα (3018)
 
 

 

Μέθοδος Υλοποίησης :

 

 

 



 

 
ΥΛΟΠΟΙΗΣΗ ΜΕ OpenMP

.

  • H υλοποίηση με το πρότυπο OpenMP , ένα ήταν πιο εύκολη σε σχέση με την υλοποίηση με threads. Κι αυτό διότι δεν χρειάστηκε να δίνω συγκεκριμένα ορίσματα στα threads για τις περιοχές επεξεργασίας τους, αλλά να προσδιορίζω τα παράλληλα τμήματα μέσω κατάλληλων ντιρεκτίβων και οδηγιών προς τον προ-επεξεργαστή-μεταφραστή.
  • Συγκεκριμένα όρισα μια παράλληλη περιοχή (parallel region) μέσω της οδηγίας.....: #pragma omp parallel shared(dimension,u,uhelp,diff_array) private(i,j) μέσα στον βρόχο των επαναλήψεων (while loop) . Στην συνέχεια δημιουργώ δύο παράλληλα loop μέσω της οδηγίας #pragma omp for schedule(SHEDULE) τα οποία αντιστοιχούν στα δύο for loop επεξεργασίας.
  • Για την συνθήκη επεξεργασίας πάλι όπως στα threads έχω δημιουργήσει έναν πίνακα ο οποίος θα κρατάει τιμές για το πόσες φορές κάποιο thread έχει συγλίνει στο τμήμα του πίνακα που επεξεργάζεται. Η εξέταση για το αν όλα τα thread έχουν συγκλίνει γίνεται κάθε φορά από ένα thread ωστέ να αποκλείσω περιπτώσεις deadlock , το οποίο είναι και το master thread .
  • H εικόνα αποτελέσματος είναι κοινή μετά από 15131 επαναλήψεις έως την σύγκλιση.

Εικόνα σε format .ppm

 

Εικόνα εξόδου από gnuplot από format εξόδου .txt

  • Παραθέτω μια εικόνα που δείχνει τα αποτελέσματα των χρόνων εκτέλεσης του project στον server eteocles@ceid.upatras.gr . Tα αποτελέματα είναι εκπληκτικά πιο γρήγορα σε σχέση με την εκτέλεση τόσο στο σταθερό pc μου (~240 seconds - 4 threads) , (AMD 4200+ (2 cores @ 2,2GHz - 2Mb L2 cache) , 2Gb Ram@400MHz , OpenSuse 10.2 x86-64 ) όσο και στο laptop (~180 seconds - 4 threads) (Intel core 2 Duo , 2Gb Ram @ 667<Mhz ,Fedora Core 9 ), γι'αυτό προτίμησα να δείξω τα αποτελέσματα από την εκτέλεση στον server.

 

 

Designed by diamantopoulos