THMMY.gr

Μαθήματα Κύκλου Ηλεκτρονικής & Υπολογιστών => Παράλληλα και Διανεμημένα Συστήματα => Topic started by: Exomag on January 04, 2015, 14:42:14 pm



Title: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 3
Post by: Exomag on January 04, 2015, 14:42:14 pm
Topic που αφορά την 3η εργασία του μαθήματος. Stay on topic!


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 3
Post by: vlad on January 06, 2015, 23:39:49 pm
Απο που διαβαζομεν CUDA;Απ'οπου βρουμε;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 3
Post by: Cr0ne on January 06, 2015, 23:47:22 pm
Απο που διαβαζομεν CUDA;Απ'οπου βρουμε;

Πέρυσι θυμάμαι διάβαζα αρκετά από εδώ

http://docs.nvidia.com/cuda/#axzz3O4nZWd7D (http://docs.nvidia.com/cuda/#axzz3O4nZWd7D)

και κυρίως το Programming Guide


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 3
Post by: vlad on January 06, 2015, 23:50:54 pm
Αχα,θενξ.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 3
Post by: sof_s on January 13, 2015, 21:13:48 pm
Έχει καταλάβει κάποιος ποιοι ακριβώς είναι οι γείτονες ενός κελιού; Δηλαδή, αν έχω το κελί (0,0) και βρίσκεται πάνω αριστερά στο grid, τότε, όπως το βλέπω, δεν έχει γείτονα αριστερά και πάνω. Έχει μόνο 3 κελιά τριγύρω του. Ποιον θα θεωρήσω ως γείτονα; Μήπως παίζει κάτι με το n-1; Του έστειλα mail που ρωτούσα αυτό και το πως σχετίζεται με τις οριακές συνθήκες και μου απάντησε "πάντα υπάρχει γείτονας modN".  :???:


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 3
Post by: jimPster on January 13, 2015, 21:53:06 pm
Ειναι τα ακριανα οπως ειπες δηλ σε πινακα Ν*Ν για το (0,0) ειναι τα (0,Ν-1), (Ν-1,0) (Ν-1,Ν-1) κτλ

ο πινακας ειναι τορος δες wiki και εικονα τορου για να καταλαβεις. Ετσι τουλαχιστον εχω καταλαβει


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 3
Post by: sof_s on January 13, 2015, 22:16:11 pm
Ειναι τα ακριανα οπως ειπες δηλ σε πινακα Ν*Ν για το (0,0) ειναι τα (0,Ν-1), (Ν-1,0) (Ν-1,Ν-1) κτλ

ο πινακας ειναι τορος δες wiki και εικονα τορου για να καταλαβεις. Ετσι τουλαχιστον εχω καταλαβει

Ευχαριστώ! Και γω κάτι τέτοιο φανταζόμουν αλλά το mail δεν με διαφώτισε ιδιαίτερα.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 3
Post by: Exomag on January 14, 2015, 00:32:32 am
Ισχύει αυτό που λέει ο jimPster.

Πρόκειται για τις κυκλικές οριακές συνθήκες, που αναφέρει ξεκάθαρα η εκφώνηση.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 3
Post by: chrimour on January 14, 2015, 02:33:16 am
Να ρωτησω και γω κατι. Μπορει με τον ιδιο αρχικο πινακα να βγαινει διαφορετικο αποτελεσμα καθε φορα; πχ αν τρεξω 2 φορες για t=10 με τον ίδιο αρχικο πίνακα υπαρχει πιθανοτητα ο τελικος της πρωτης φορας να είναι διαφορετικος απο της δευτερης η το αποτελεσμα ειναι standard βασει των ιδιων αρχικων συνθηκων; Επειδη εμενα μου βγαινει διαφορετικο αποτελεσμα καθε φορα.



Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 3
Post by: Exomag on January 14, 2015, 02:37:55 am
Να ρωτησω και γω κατι. Μπορει με τον ιδιο αρχικο πινακα να βγαινει διαφορετικο αποτελεσμα καθε φορα; πχ αν τρεξω 2 φορες για t=10 με τον ίδιο αρχικο πίνακα υπαρχει πιθανοτητα ο τελικος της πρωτης φορας να είναι διαφορετικος απο της δευτερης η το αποτελεσμα ειναι standard βασει των ιδιων αρχικων συνθηκων; Επειδη εμενα μου βγαινει διαφορετικο αποτελεσμα καθε φορα.

Δεν υπάρχει περίπτωση να βγει διαφορετικό αποτέλεσμα στο Game of Life για ίδιο αρχικό grid και συγκεκριμένο αριθμό γενιών. Κάτι κάνεις λάθος.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 3
Post by: et3rn1ty on January 15, 2015, 21:26:25 pm
Να ρωτησω και γω κατι. Μπορει με τον ιδιο αρχικο πινακα να βγαινει διαφορετικο αποτελεσμα καθε φορα; πχ αν τρεξω 2 φορες για t=10 με τον ίδιο αρχικο πίνακα υπαρχει πιθανοτητα ο τελικος της πρωτης φορας να είναι διαφορετικος απο της δευτερης η το αποτελεσμα ειναι standard βασει των ιδιων αρχικων συνθηκων; Επειδη εμενα μου βγαινει διαφορετικο αποτελεσμα καθε φορα.



Έχε υπ'όψιν σου ότι αν γράφεις σε αρχείο το output, μπορεί να παίρνεις ως input το output της πρώτης σου εκτέλεσης (αν χρησιμοποιείς τις read_from_file και write_to_file τις δικές του πχ, γράφουν στο ίδιο file)


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 3
Post by: pikachu93 on January 16, 2015, 21:14:02 pm
Παιδιά αν δεν έχουμε CUDA capable GPU μπορούμε απλά να γράψουμε το πρόγραμμα να το υποβάλλουμε στο diades χωρίς να χρειάζεται να κατεβάσουμε το CUDA Development Kit κτλ?


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 3
Post by: vlad on January 16, 2015, 21:17:02 pm
Παιδιά αν δεν έχουμε CUDA capable GPU μπορούμε απλά να γράψουμε το πρόγραμμα να το υποβάλλουμε στο diades χωρίς να χρειάζεται να κατεβάσουμε το CUDA Development Kit κτλ?
Ναι ο διαδης υποστηριζει ΚΟΥΝΤΑ


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 3
Post by: Σα τανυστής on January 17, 2015, 15:33:44 pm
Καλησπερα,

αρχιζω τωρα με την εργασια και δεν εχω νιωσει πως χωριζουμε προβληματα , οταν το N δεν ειναι πολλαπλασιο του warpsize (32) .

Για παραδειγμα αν κανω threadsperblock(8,8), δε μπορω να ορισω αριθμο blocks με καποιο τροπο ωστε να διαιρει ακριβως το Ν (για table500x500 πχ)

Αν δεν διαιρειται ακριβως υπαρχει προβλημα ή θα το διαχειριστει η CUDA ?


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 3
Post by: Exomag on January 17, 2015, 16:10:16 pm
Καλησπερα,

αρχιζω τωρα με την εργασια και δεν εχω νιωσει πως χωριζουμε προβληματα , οταν το N δεν ειναι πολλαπλασιο του warpsize (32) .

Για παραδειγμα αν κανω threadsperblock(8,8), δε μπορω να ορισω αριθμο blocks με καποιο τροπο ωστε να διαιρει ακριβως το Ν (για table500x500 πχ)

Αν δεν διαιρειται ακριβως υπαρχει προβλημα ή θα το διαχειριστει η CUDA ?

Θα πρέπει ο αριθμός των blocks να είναι αρκετός έτσι ώστε να καλύπτεται όλος ο πίνακας. Δεν είναι ανάγκη να διαιρείται ακριβώς.

Για παράδειγμα, με τα νούμεα που έδωσες, μπορείς να ορίσεις πχ ένα grid από blocks 63x63. Κάποια από τα 254016 συνολικά threads δε θα χρειαστούν βέβαια, μιας και ο αρχικός πίνακας έχει 250000 cells. Οπότε, σε αυτήν την περίπτωση, θα πρέπει να φροντίσεις έτσι ώστε τα περισσευούμενα threads να μην κάνουν κάποια δουλειά.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 3
Post by: chrimour on January 17, 2015, 17:30:14 pm
Για τον kernel με τα πολλαπλα κελια ανα thread με χρηση της shared memory εχει καποιος να προτεινει πως να γινει; Τουλαχιστον την λογικη. Επειδη εχω ψιλομπερδευτει.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 3
Post by: Exomag on January 17, 2015, 17:49:46 pm
Για τον kernel με τα πολλαπλα κελια ανα thread με χρηση της shared memory εχει καποιος να προτεινει πως να γινει; Τουλαχιστον την λογικη. Επειδη εχω ψιλομπερδευτει.

Αντί να τα threads ενός block όλες τις τιμές που χρειάζονται για να προσδιορίσουν την επόμενη τους κατάστασης από την global memory, θα πρέπει πρώτα να γεμίσεις τον πίνακα της shared memory με αυτές τις τιμές και έπειτα τα threads του κάθε block να διαβάζουν από εκεί τις τιμές που χρειάζονται.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 3
Post by: chrimour on January 17, 2015, 18:10:01 pm
Αυτο που με μπερδευει ομως ειναι οτι αφου θα αντιγραφω στον καθε πινακα της shared memory του καθε block απο την global, τους γειτονες στις ακρες των πινακων πως θα τους βρισκω; Αφου ενα thread δεν μπορει να "δει" τιμες σε αλλο block.

π.χ
block 1         block 2
111001        001010
001010        100101
100101        100110
100101        100110
100110        100110

Πως ας πουμε θα βρουμε τον γειτονα του τελευταιου της δευτερης γραμμης στο block 1 αφου το thread δεν μπορει να δει στο block 2;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 3
Post by: jimPster on January 17, 2015, 18:34:25 pm
Χωρις να εχω ασχοληθει με την εργασια,  καθε thread ανεξαρτητου block εχει προσβαση σε ολη την global memory. H shared memory εχει block scope.Δηλ στην shared memory φορτωνεις οτι θελεις
απο global memory, αν κτλβα ποιος ειναι ο προβληματισμος σου


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 3
Post by: Exomag on January 17, 2015, 18:59:32 pm
Χωρις να εχω ασχοληθει με την εργασια,  καθε thread ανεξαρτητου block εχει προσβαση σε ολη την global memory. H shared memory εχει block scope.Δηλ στην shared memory φορτωνεις οτι θελεις
απο global memory, αν κτλβα ποιος ειναι ο προβληματισμος σου

Αυτό βασικά. Επίσης, η shared memory του κάθε block μπορεί να είναι και μεγαλύτερη από το αντίστοιχο κομμάτι του πίνακα με το οποίο θα ασχοληθεί το block.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 3
Post by: chrimour on January 17, 2015, 19:07:28 pm
οχι οχι. αυτο που λεω ειναι εχουμε ενα πινακα 250000 στοιχεια ο οποιος σιγουρα δεν χωραει στην shared memory. Το παιχνιδι game of life ειναι βασισμενο αποκλειστικα στο τι γινεται με τους γειτονες σε καθε γενια. Αρα αφου η λογικη λεει για να δουλεψω μεσω της shared memory πρεπει να αντιγραψω σε καθε shared memory του καθε block ενα κομματι απο τον μεγαλο πινακα και μετα να βρισκω τους ζωντανους και νεκρους γειτονες μεσω του καθε shared πινακα. Αυτο που ρωτω εγω ειναι αφου  ενα thread στο block 1 δεν γινεται να βλεπει τον πινακα στο block 2 οπως στο παραδειγμα μου πως ας πουμε θα δει τους γειτονες των ακρινων στοιχειων αφου αυτοι βρισκονται στο block 2; Η δεν εχω καταλαβει καλα την shared memory;

Αυτο που λες νομιζω ειναι για το συνολικο πινακα με τις κυκλικες οριακες συνθηκες. Εγω μιλαω για τις ακρες των μικροτερων πινακων που αποθηκευονται στην shared memory. Σε αυτους δεν μπορουμε να πουμε οτι ισχυουν κυκλικες οριακες συνθηκες αφου οι γειτονες τους ειναι πραγματι διπλα τους και οχι στην αλλη πλευρα του πινακα ας πουμε.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 3
Post by: Exomag on January 17, 2015, 19:54:55 pm
οχι οχι. αυτο που λεω ειναι εχουμε ενα πινακα 250000 στοιχεια ο οποιος σιγουρα δεν χωραει στην shared memory. Το παιχνιδι game of life ειναι βασισμενο αποκλειστικα στο τι γινεται με τους γειτονες σε καθε γενια. Αρα αφου η λογικη λεει για να δουλεψω μεσω της shared memory πρεπει να αντιγραψω σε καθε shared memory του καθε block ενα κομματι απο τον μεγαλο πινακα και μετα να βρισκω τους ζωντανους και νεκρους γειτονες μεσω του καθε shared πινακα. Αυτο που ρωτω εγω ειναι αφου  ενα thread στο block 1 δεν γινεται να βλεπει τον πινακα στο block 2 οπως στο παραδειγμα μου πως ας πουμε θα δει τους γειτονες των ακρινων στοιχειων αφου αυτοι βρισκονται στο block 2; Η δεν εχω καταλαβει καλα την shared memory;

Αυτο που λες νομιζω ειναι για το συνολικο πινακα με τις κυκλικες οριακες συνθηκες. Εγω μιλαω για τις ακρες των μικροτερων πινακων που αποθηκευονται στην shared memory. Σε αυτους δεν μπορουμε να πουμε οτι ισχυουν κυκλικες οριακες συνθηκες αφου οι γειτονες τους ειναι πραγματι διπλα τους και οχι στην αλλη πλευρα του πινακα ας πουμε.

Κατάλαβα ακριβώς τι λες και ποιό είναι το πρόβλημα σου. Το θέμα είναι ότι εσύ σκέφτεσαι πως η shared memory πρέπει να είναι ένας πίνακας που να περιέχει μόνο τα cells των thread του block, στο οποίο ανήκει. Γιατί, όμως, να μην αυξήσεις τον πίνακας στη shared memory λίγο για να αποθηκεύσεις και τις γειτονικές τιμές που θα χρειαστεί το κάθε block;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 3
Post by: Σα τανυστής on January 17, 2015, 19:56:50 pm
Hi it's me again,

Για το global memory..

Στο game of life για να υλοποιησεις τις αλλαγες θελεις 2 πινακες, εναν που ταιζεις στην συναρτηση του παιχνιδιου σου και εναν με τις νεες καταστασεις για να τις αντιγραψεις ολες μαζι στο τελος. Στο σειριακο ολα μια χαρα.

Στο kernel μεσα αυτη η αντιγραφη κανει οτι να ναι, προφανως. Εχετε βρει καποιον κομψο τροπο να αντιγραφετε αυτους τους 2 πινακες μεσα στο kernel? Το κανω στo host μου και μου φαινεται πολυ hack γι αυτο ρωταω..


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 3
Post by: Exomag on January 17, 2015, 20:12:33 pm
Hi it's me again,

Για το global memory..

Στο game of life για να υλοποιησεις τις αλλαγες θελεις 2 πινακες, εναν που ταιζεις στην συναρτηση του παιχνιδιου σου και εναν με τις νεες καταστασεις για να τις αντιγραψεις ολες μαζι στο τελος. Στο σειριακο ολα μια χαρα.

Στο kernel μεσα αυτη η αντιγραφη κανει οτι να ναι, προφανως. Εχετε βρει καποιον κομψο τροπο να αντιγραφετε αυτους τους 2 πινακες μεσα στο kernel? Το κανω στo host μου και μου φαινεται πολυ hack γι αυτο ρωταω..

Η κλήση μιας συνάρτηση της Cuda θα υλοποιεί ένα generation του Game of Life, και θα καλείς αυτή τη συνάρτηση πολλές φορές. Οπότε δε θα χρειαστεί να κάνεις κάποια αντιγραφή δεδομένων μέσα στη συνάρτηση.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 3
Post by: Σα τανυστής on January 18, 2015, 20:55:08 pm
Για την υλοποιηση πολλα κελια/νημα vs ενα κελι/νημα , ενω περιμενα διαφορα στους χρονους δεν ειδα σχεδον τιποτα.

Το εχετε και εσεις αυτο?

Σε ενα blog της nvidia διαβασα οτι με strides εχεις ιδιο instruction cost οταν εχεις ενα grid-stride loop και ενα απλο if, απλα δε μου καθεται καλα και ειπα να επιβεβαιωσω..


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 3
Post by: Exomag on January 18, 2015, 20:59:46 pm
Για την υλοποιηση πολλα κελια/νημα vs ενα κελι/νημα , ενω περιμενα διαφορα στους χρονους δεν ειδα σχεδον τιποτα.

Το εχετε και εσεις αυτο?

Σε ενα blog της nvidia διαβασα οτι με strides εχεις ιδιο instruction cost οταν εχεις ενα grid-stride loop και ενα απλο if, απλα δε μου καθεται καλα και ειπα να επιβεβαιωσω..

Εξαρτάται και από τα πόσα κελιά ανά νήμα χρησιμοποιείς. Τα strides επίσης κοστίζουν σε χρόνο, ισχύει αυτό. Τα ifs επίσης κοστίζουν σε χρόνο.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 3
Post by: Σα τανυστής on January 18, 2015, 21:17:20 pm
Για την υλοποιηση πολλα κελια/νημα vs ενα κελι/νημα , ενω περιμενα διαφορα στους χρονους δεν ειδα σχεδον τιποτα.

Το εχετε και εσεις αυτο?

Σε ενα blog της nvidia διαβασα οτι με strides εχεις ιδιο instruction cost οταν εχεις ενα grid-stride loop και ενα απλο if, απλα δε μου καθεται καλα και ειπα να επιβεβαιωσω..

Εξαρτάται και από τα πόσα κελιά ανά νήμα χρησιμοποιείς. Τα strides επίσης κοστίζουν σε χρόνο, ισχύει αυτό. Τα ifs επίσης κοστίζουν σε χρόνο.

thanks για καποιο λογο ειχα στο μυαλο μου οτι πολλα κελια/thread = grid strides αποκλειστικα. Καλη φαση που το αφηνει ανοιχτο στην εκφωνηση.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 3
Post by: Exomag on January 18, 2015, 21:29:02 pm
Για την υλοποιηση πολλα κελια/νημα vs ενα κελι/νημα , ενω περιμενα διαφορα στους χρονους δεν ειδα σχεδον τιποτα.

Το εχετε και εσεις αυτο?

Σε ενα blog της nvidia διαβασα οτι με strides εχεις ιδιο instruction cost οταν εχεις ενα grid-stride loop και ενα απλο if, απλα δε μου καθεται καλα και ειπα να επιβεβαιωσω..

Εξαρτάται και από τα πόσα κελιά ανά νήμα χρησιμοποιείς. Τα strides επίσης κοστίζουν σε χρόνο, ισχύει αυτό. Τα ifs επίσης κοστίζουν σε χρόνο.

thanks για καποιο λογο ειχα στο μυαλο μου οτι πολλα κελια/thread = grid strides αποκλειστικα. Καλη φαση που το αφηνει ανοιχτο στην εκφωνηση.

Ε ναι, δεν σου λέει η εκφώνηση πως ακριβώς να το υλοποιήσεις. Οπότε η λογική είναι ότι θα δοκιμάσεις διάφορα να δεις τι είναι γρηγορότερο/καλύτερο.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 3
Post by: spira mirabilis on January 19, 2015, 01:58:10 am
Να ρωτήσω κάτι κι εγώ:
Όταν πάω να μετρήσω την επιτάχυνσή μου πρέπει να συνυπολογήσω και τον χρόνο που χρειάζεται η μεταφορά των δεδομένων από την CPU στην GPU? Δεν έχω τεστάρει πολύ το πρόγραμμά μου  και δεν είμαι σίγουρη για τα νούμερα, αλλά σε αυτήν την φάση παρατήρησα τα ακόλουθα: τρέχοντας την παράλληλη εκδοχή μου στον διάδη για τον πίνακα 500x500  χρειάζομαι 0.67 secs για την εντολή Memcpy() και οι υπολογισμοί που γίνονται στην GPU διαρκούν ελάχιστα . Το σειριακό πρόγραμμα για 10 γενιές θέλει 0.09 secs,για 100 0.9 και για 1000 9 , οπότε μόνο από εκεί και πέρα παρατηρώ σοβαρή επιτάχυνση.
Το λογικό είναι να συνυπολογίσω και τον χρόνο της μεταφοράς, αλλά αν θέλω να πετύχω επιτάχυνση σε αυτήν την περίπτωση, πρέπει να στέλνω ένα μικρό κομμάτι του πίνακα και να επικαλύπτω την μεταφορά του επόμενου με υπολογισμούς στην Gpu , αντί να στέλνω με την μία τα 250000 στοιχεία...
Μήπως η επιτάχυνση που ζητείται δεν αφορά τον συνολικό χρόνο, αλλά κάποιον δείκτη της μορφής evaluated cells/second? Θα με βόλευε πολύ  :D


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 3
Post by: Exomag on January 19, 2015, 03:12:11 am
Να ρωτήσω κάτι κι εγώ:
Όταν πάω να μετρήσω την επιτάχυνσή μου πρέπει να συνυπολογήσω και τον χρόνο που χρειάζεται η μεταφορά των δεδομένων από την CPU στην GPU? Δεν έχω τεστάρει πολύ το πρόγραμμά μου  και δεν είμαι σίγουρη για τα νούμερα, αλλά σε αυτήν την φάση παρατήρησα τα ακόλουθα: τρέχοντας την παράλληλη εκδοχή μου στον διάδη για τον πίνακα 500x500  χρειάζομαι 0.67 secs για την εντολή Memcpy() και οι υπολογισμοί που γίνονται στην GPU διαρκούν ελάχιστα . Το σειριακό πρόγραμμα για 10 γενιές θέλει 0.09 secs,για 100 0.9 και για 1000 9 , οπότε μόνο από εκεί και πέρα παρατηρώ σοβαρή επιτάχυνση.
Το λογικό είναι να συνυπολογίσω και τον χρόνο της μεταφοράς, αλλά αν θέλω να πετύχω επιτάχυνση σε αυτήν την περίπτωση, πρέπει να στέλνω ένα μικρό κομμάτι του πίνακα και να επικαλύπτω την μεταφορά του επόμενου με υπολογισμούς στην Gpu , αντί να στέλνω με την μία τα 250000 στοιχεία...
Μήπως η επιτάχυνση που ζητείται δεν αφορά τον συνολικό χρόνο, αλλά κάποιον δείκτη της μορφής evaluated cells/second? Θα με βόλευε πολύ  :D

Πρέπει να συμπεριλάβεις και τον χρόνο που κάνει το Memcpy στον συνολικό χρόνο, από τον οποίο θα υπολογίσεις την επιτάχυνση. Λογικό είναι άλλωστε, αν σκεφτείς ότι για να λύσεις το πρόβλημα σου τα Memcpy είναι απαραίτητα steps, και το να υπολογίσεις απλά τον χρόνο που κάνει για να τρέξει ο κώδικας στη GPU δεν χρησιμεύευει σε κάτι πρακτικό.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 3
Post by: jthois on January 22, 2015, 15:41:12 pm
Μπορεί κάποιος να εξηγήσει αυτό:
Quote
(α)Ένα κελί ανά νήμα, χωρίς τη χρήση shared memory.
(β) Πολλαπλά κελιά ανά νήμα, χωρίς τη χρήση shared memory.
(γ) Πολλαπλά κελιά ανά νήμα με χρήση της shared memory.
Στο (α) το κάθε thread θα έχει ένα μόνο κελί ή και τα γειτονικά που χρειάζονται;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 3
Post by: Exomag on January 22, 2015, 15:44:02 pm
Μπορεί κάποιος να εξηγήσει αυτό:
Quote
(α)Ένα κελί ανά νήμα, χωρίς τη χρήση shared memory.
(β) Πολλαπλά κελιά ανά νήμα, χωρίς τη χρήση shared memory.
(γ) Πολλαπλά κελιά ανά νήμα με χρήση της shared memory.
Στο (α) το κάθε thread θα έχει ένα μόνο κελί ή και τα γειτονικά που χρειάζονται;

Τι εννοείς με το "έχει"; Στο (α), το κάθε thread θα αναθέσει τιμή μόνο σε ένα cell του νέου πίνακα.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 3
Post by: jthois on January 22, 2015, 16:29:30 pm
Βασικά με μπέρδεψε πολύ. Άρα για το (α) κάθε thread έχει πρόσβαση σε όλα τα κελιά και αλλάζει την κατάσταση μόνο ενός; και στο (β) αλλάζει την κατάσταση περισσότερων;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 3
Post by: Exomag on January 22, 2015, 16:32:28 pm
Βασικά με μπέρδεψε πολύ. Άρα για το (α) κάθε thread έχει πρόσβαση σε όλα τα κελιά και αλλάζει την κατάσταση μόνο ενός; και στο (β) αλλάζει την κατάσταση περισσότερων;

Yeah, obviously.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 3
Post by: spira mirabilis on January 23, 2015, 17:33:13 pm
Ο διάδης σέρνεται λίγο ή είναι ιδέα μου; Όταν λέω λίγο εννοώ απελπιστικά πολύ  >:(


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 3
Post by: nikitas350 on January 23, 2015, 17:50:26 pm
Ο διάδης σέρνεται λίγο ή είναι ιδέα μου; Όταν λέω λίγο εννοώ απελπιστικά πολύ  >:(

Για να μην βγάζεις πολύ αργά αποτελέσματα μπορείς να τρέξεις την εντολή top που δείχνει συνέχεια τι διεργασίες τρέχουν στο σύστημα. Έτσι μπορείς να διαλέξεις, για benchmark του προγράμματός σου, μία στιγμή που δεν είναι απασχολημένος ο διάδης.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 3
Post by: spira mirabilis on January 23, 2015, 18:11:31 pm
Ο διάδης σέρνεται λίγο ή είναι ιδέα μου; Όταν λέω λίγο εννοώ απελπιστικά πολύ  >:(

Για να μην βγάζεις πολύ αργά αποτελέσματα μπορείς να τρέξεις την εντολή top που δείχνει συνέχεια τι διεργασίες τρέχουν στο σύστημα. Έτσι μπορείς να διαλέξεις, για benchmark του προγράμματός σου, μία στιγμή που δεν είναι απασχολημένος ο διάδης.
Ευχαριστώ, δεν την ήξερα την εντολή  :) Από ότι κατάλαβα κάποιος χρησιμοποιoύσε 100 %  της CPU  :o


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 3
Post by: prodrom on January 23, 2015, 19:38:27 pm
Καποιος που εχει παρει νουμερα μπορει να γραψει που κυμαινονται οι χρονοι του; Εχω την αισθηση οτι η υλοποιηση μου σενεται λιγο  :-\


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 3
Post by: et3rn1ty on January 23, 2015, 20:34:38 pm
Καποιος που εχει παρει νουμερα μπορει να γραψει που κυμαινονται οι χρονοι του; Εχω την αισθηση οτι η υλοποιηση μου σενεται λιγο  :-\

Εξαρτάται πάρα πολύ από το πόσος κόσμος είναι μέσα και τι κάνει. Πριν καμιά βδομάδα που ο server ήταν άδειος, για το sequential με είσοδο 4000x4000 πήρα περίπου 1.5 δευτερόλεπτα/γενιά, και για το παράλληλο στο (β) -πολλαπλά κελιά ανά νήμα- ο καλύτερος χρόνος μου ήταν 0.006 δευτερόλεπτα/γενιά.
Με shared δεν έχω κάνει ακόμη.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 3
Post by: Exomag on January 24, 2015, 01:37:32 am
Καποιος που εχει παρει νουμερα μπορει να γραψει που κυμαινονται οι χρονοι του; Εχω την αισθηση οτι η υλοποιηση μου σενεται λιγο  :-\

Εξαρτάται πάρα πολύ από το πόσος κόσμος είναι μέσα και τι κάνει. Πριν καμιά βδομάδα που ο server ήταν άδειος, για το sequential με είσοδο 4000x4000 πήρα περίπου 1.5 δευτερόλεπτα/γενιά, και για το παράλληλο στο (β) -πολλαπλά κελιά ανά νήμα- ο καλύτερος χρόνος μου ήταν 0.006 δευτερόλεπτα/γενιά.
Με shared δεν έχω κάνει ακόμη.

Επίσης να σημειωθεί πως εξαρτάται πάρα πολύ και από την υλοποίηση/κώδικα του καθενός. Οπότε συγκρίσεις μεταξύ ατόμων δεν έχουν και τεράστιο νόημα.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 3
Post by: Σα τανυστής on January 24, 2015, 19:19:39 pm
Καποιος γλενταει τον Διαδη και τρεχει game_of_life για  843 mins. Τι φαση? :D


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 3
Post by: jthois on January 24, 2015, 19:23:30 pm
Ναι. Μπορεί κάποιος sudoer να κάνει το σεκιουριτά;
Code:
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                           
13389 k*****  25   0 20.1g  34m  16m R 99.8  0.4 889:30.90 game_of_life                  


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 3
Post by: Antipunishment on January 24, 2015, 21:44:49 pm
Για το θεό ithoidis!!!!!!!!!!!!!!!!!!!!!!!!!!!!! >:( >:( >:( >:( >:( >:( >:( >:( >:( >:( >:( >:( >:( >:( >:( >:( >:( >:(


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 3
Post by: c0ndemn3d on January 24, 2015, 21:48:16 pm
hahaha σας τρολλάρει μάλλον


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 3
Post by: jthois on January 24, 2015, 22:09:43 pm
sorry παίδες :-[ :-[ :-[ :-[ από το πρωί περίμενα :'( :'(
Δώστε ελεύθερα τώρα

500sec μου πήρε το σειριακό


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 3
Post by: Exomag on January 24, 2015, 22:12:35 pm
Σαν να περιμένουν όλοι για τουαλέτα :D :D


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 3
Post by: Antipunishment on January 24, 2015, 22:21:59 pm
Καποιος που εχει παρει νουμερα μπορει να γραψει που κυμαινονται οι χρονοι του; Εχω την αισθηση οτι η υλοποιηση μου σενεται λιγο  :-\

Εξαρτάται πάρα πολύ από το πόσος κόσμος είναι μέσα και τι κάνει. Πριν καμιά βδομάδα που ο server ήταν άδειος, για το sequential με είσοδο 4000x4000 πήρα περίπου 1.5 δευτερόλεπτα/γενιά, και για το παράλληλο στο (β) -πολλαπλά κελιά ανά νήμα- ο καλύτερος χρόνος μου ήταν 0.006 δευτερόλεπτα/γενιά.
Με shared δεν έχω κάνει ακόμη.

Επίσης να σημειωθεί πως εξαρτάται πάρα πολύ και από την υλοποίηση/κώδικα του καθενός. Οπότε συγκρίσεις μεταξύ ατόμων δεν έχουν και τεράστιο νόημα.


Ο χρόνος σου μετράει και τα copy  των πινάκων?


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 3
Post by: Exomag on January 24, 2015, 22:24:00 pm
Καποιος που εχει παρει νουμερα μπορει να γραψει που κυμαινονται οι χρονοι του; Εχω την αισθηση οτι η υλοποιηση μου σενεται λιγο  :-\

Εξαρτάται πάρα πολύ από το πόσος κόσμος είναι μέσα και τι κάνει. Πριν καμιά βδομάδα που ο server ήταν άδειος, για το sequential με είσοδο 4000x4000 πήρα περίπου 1.5 δευτερόλεπτα/γενιά, και για το παράλληλο στο (β) -πολλαπλά κελιά ανά νήμα- ο καλύτερος χρόνος μου ήταν 0.006 δευτερόλεπτα/γενιά.
Με shared δεν έχω κάνει ακόμη.

Επίσης να σημειωθεί πως εξαρτάται πάρα πολύ και από την υλοποίηση/κώδικα του καθενός. Οπότε συγκρίσεις μεταξύ ατόμων δεν έχουν και τεράστιο νόημα.


Ο χρόνος σου μετράει και τα copy  των πινάκων?

Έτσι είναι πιο σωστό, ναι.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 3
Post by: Antipunishment on January 24, 2015, 22:25:06 pm
Ναι, το ξέρω, η ερώτηση πήγαινε στον αποπάνω που έκανε 0.006   :D :D


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 3
Post by: spira mirabilis on January 24, 2015, 22:29:42 pm
Σαν να περιμένουν όλοι για τουαλέτα :D :D
Αυτός με τα 900 λεπτά είχε γερό πρόβλημα  :P  :D


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 3
Post by: et3rn1ty on January 25, 2015, 00:48:22 am
Ναι, το ξέρω, η ερώτηση πήγαινε στον αποπάνω που έκανε 0.006   :D :D

Όχι, μόνο τον χρόνο του kernel εννοώ 0.006. Το copy - paste γίνεται μια φορά στην αρχή και μια στο τέλος, οπότε δεν επιβαρύνει πολύ τον χρόνο άμα τρέχεις πάνω από 10-15 runs


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 3
Post by: TrueForce on August 01, 2015, 14:17:25 pm
Να ρωτήσω κάτι και γω ρε παιδιά,

1)όταν λέει πως θέλει πολλαπλά κελιά ανά νήμα, επιλέγουμε εμείς έναν αριθμό(π.χ. 4 κελιά ανά νήμα) και προσαρμόζουμε τον κώδικά μας για αυτόν τον αριθμό;
ή πρέπει να το κάνουμε έτσι ώστε ο χρήστης να δίνει τον αριθμό κελιών ανά νήμα, δλδ να προσαρμόσουμε τον αλγόριθμό μας για κάθε περίπτωση

2)Σε όσα παιδιά τους έχει διορθώσει την 3η εργασία και τους λέει:
"Δυστυχώς  έχετε  την  ανάποδη  εικόνα.  Εσείς  πρέπει  να  προγραμματίζετε
το  μέγιστο  αριθμό  νημάτων  στον  ελάχιστο  αριθμό  κόμβων  που  κάνουν  τη
βέλτιστη  χρήση  του  υλικού."
καταλάβατε τι λάθος έχουν; Ρωτάω σε περίπτωση που έχω κάνει και γω κάτι τέτοιο και δεν το έχω πάρει χαμπάρι. :Ρ


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 3
Post by: jthois on August 01, 2015, 14:33:57 pm
Εγώ αυτό που έκανα είναι να προσαρμόσω τον αριθμό των κελιών ανά νήμα στον αριθμό των νημάτων! Δηλαδή, βλέπω ποσά νήματα έχω διαθέσιμα από το hardware, και μοιράζω όσα κελιά μπορώ σε αυτά. Έτσι εζω μέγιστο αριθμό νημάτων, και ελάχιστο αριθμό κελιών στο καθένα. Νομιζω είναι αποδοτικός τρόπος. Αυτό μαλλον εννοεί και ο πιτσιανης στο 2. Ελπίζω να βοηθησα.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 3
Post by: TrueForce on August 01, 2015, 14:46:04 pm
δλδ; εγώ για το πρώτο κομμάτι απλά έβαλα 500 νήματα σε καθε μπλοκ...
για το δεύτερο σκέτηκα να έχω 125 νηματα ανα μπλοκ, δινοντας στο καθε νημα 4 κελια....
ειναι λαθος η λογικη;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 3
Post by: jthois on August 01, 2015, 18:30:00 pm
Λάθος δεν είναι, αλλά πιστεύω ότι θα φέρει καλύτερα αποτελέσματα αν δεν είναι στατικοι οι αριθμοί των κελιών και των νηματων, μόνο των block. Πχ αν ο πίνακας εχει Ν κελια και το υλικό μπορεί να σου δώσει M threads, κάθε thread αναλαμβάνει (int) N/M κελιά. (Αυτό πάντα σε δισδιάστατο πίνακα). Έτσι θα χαρεί περισσότερο ο Πίτσι!