ΠΑΡΑΛΛΗΛΟΙ ΥΠΟΛΟΓΙΣΜΟΙ (PARALLEL COMPUTING) GAME OF LIFE ΠΑΟΥΕΡ ΑΛΒΕΡΤΟΣ – ΙΩΑΝΝΗΣ ΚΑΛΑΝΤΖΗΣ ΕΥΘΥΜΙΟΣ ΣΩΤΗΡΙΟΥ ΚΩΝΣΤΑΝΤΙΝΟΣ
GAME OF LIFE Προσομοίωση της ζωής σε θεωρητικά άπειρο δισδιάστατο πίνακα κελιών. Κάθε κελί χωράει έναν οργανισμό και έχει οχτώ γειτονικούς. Ανήκει στην κατηγορία ΚΥΤΤΑΡΙΚΑ ΑΥΤΟΜΑΤΑ (CELLULAR AUTOMATA) Eπινοήθηκε από τον John Horton Conway το 1970
Κανόνες Ένα κύτταρο μπορεί να είναι ζωντανό ή νεκρό. Ένα νεκρό κελί με ακριβώς τρείς ζωντανούς γείτονες γίνεται ένα ζωντανό κύτταρο (γέννηση). Ένα ζωντανό κύτταρο με δύο ή τρείς ζώντανούς γείτονες παραμένει ζωντανό (επιβίωση). Σε όλες τις άλλες περιπτώσεις, ένα κύτταρο πεθαίνει ή παραμένει νεκρό .
Χαρακτηριστικές Απεικονίσεις Περιοδικές Σταθερές
Σειριακός Αλγόριθμος Εισαγωγή αρχικών τιμών στο grid. Αρχή επαναληπτικού loop γενεών. Υπολογισμός του αθροίσματος των ζωντανών γειτόνων του κάθε οργανισμού (έλεγχος ακραίων περιπτώσεων). Εφαρμογή των κανόνων και αποθήκευση τιμών σε βοηθητικό πίνακα. Σύνθεση του τελικού grid.
1D Decomposition Εισαγωγή αρχικών τιμών στο grid. Δημιουργία υποπίνακα στον κάθε επεξεργαστή και λήψη των αντίστοιχων στοιχείων. Αρχή επαναληπτικού loop. Αποστολή και λήψη βοηθητικών γραμμών με τους γειτονικούς επεξεργαστές. Υπολογισμός του αθροίσματος των ζωντανών γειτόνων (έλεγχος ακραίων περιπτώσεων). Εφαρμογή των κανόνων και αποθήκευση των τιμών σε βοηθητικό υποπίνακα. Αποστολή όλων των υποπινάκων στον κεντρικό επεξεργαστή και σύνθεση του τελικού grid.
2D Decomposition Εισαγωγή αρχικών τιμών στο grid. Δημιουργία καρτεσιανής τοπολογίας. int MPI_Cart_create (MPI_Comm comm_old, int ndims, int *dims, int*periods, int reorder, MPI_Comm *comm_cart) int MPI_Cart_rank (MPI_Comm comm, int *coords, int *rank) int MPI_Cart_shift (MPI_Comm comm, int direction, int disp, int *rank_source, int *rank_dest) MPI_Proc_null (-1)
2D Decomposition Δημιουργία υποπίνακα στον κάθε επεξεργαστή και λήψη των αντίστοιχων στοιχείων. Δημιουργία Derived Datatypes Vector για την αποστολή στηλών. MPI_Type_vector (count,blocklength,stride,oldtype,&newtype) MPI_Type_commit(&newtype) MPI_Type_free(&newtype) Αρχή επαναληπτικού loop. Αποστολή και λήψη βοηθητικών στηλών και γραμμών Υπολογισμός του αθροίσματος των ζωντανών γειτόνων (έλεγχος ακραίων περιπτώσεων). Εφαρμογή των κανόνων και αποθήκευση των τιμών σε βοηθητικό υποπίνακα. Αποστολή όλων των υποπινάκων στον κεντρικό επεξεργαστή και σύνθεση του τελικού grid.
Έλεγχος Περιοδικότητας και Στασιμότητας Το for loop αντικαθίσταται με while Ανά βήμα αποστολή όλων των δεδομένων στον κεντρικό επεξεργαστή. Ανά βήμα έλεγχος αν η παρούσα εικόνα του grid είναι ίδια με την προηγούμενη (στάσιμο). Ανά βήμα έλεγχος αν η παρούσα εικόνα του grid είναι ίδια με την αρχική (περιοδικό). Η ανανέωση της αρχικής εικόνας γίνεται ανά 15 επαναλήψεις.
Πίνακες και Διαγράμματα
Πίνακες και Διαγράμματα
Πίνακες και Διαγράμματα
GAME TIME FOR FUN ! ! !