THMMY.gr

Μαθήματα Κύκλου Ηλεκτρονικής & Υπολογιστών => Παράλληλα και Διανεμημένα Συστήματα => Topic started by: Prison Mike on September 30, 2019, 23:32:48 pm



Title: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: Prison Mike on September 30, 2019, 23:32:48 pm
Συζήτηση για την πρώτη φετινή εργασία


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: ytsejam on October 18, 2019, 00:51:50 am
Είναι υποχρεωτικό να επιλέξουμε ομάδα για να δώσουμε εργασία?


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: alextsigilis on October 18, 2019, 17:55:09 pm
Εκφώνηση για την 1η εργασία υπάρχει ή παραδείδουμε το είναι μας :D ;


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/2
Post by: pesto80 on October 18, 2019, 18:13:39 pm
Εκφώνηση για την 1η εργασία υπάρχει ή παραδείδουμε το είναι μας :D ;

κανε κλικ στο "αναφορά" κάτω από το "οδηγίες για την υποβολή"


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: GiwrgosP- on October 20, 2019, 02:56:30 am
Οταν εμεις ξεκιναμε το προγραμμα μας με εναν πινακα που περιεχει ολα τα data (τα Points) , ολα τα Nodes που θα δημιουργηθουν πρεπει να περιεχουν σαν indexNumber τη γραμμη του αρχικου data πινακα που αποτελει το vantage point τους ή τη γραμμη του data που διαθετουν αυτα εκεινη τη στιγμη; Γιατι οσο προχωραει το πραγμα ουσιαστικα (αν το καταλαβα καλα) ο πινακας των data ειναι μικροτερος για καθε επομενο node.


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: Μπουγάτσας on October 21, 2019, 20:31:04 pm
Λογικά τη θέση τους στο αρχικό dataset, καθώς αυτή αποτελεί την ταυτότητα τους ώστε να τα αναγνωρίζεις στο τέλος.


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: pesto80 on October 21, 2019, 21:41:59 pm
Λογικά τη θέση τους στο αρχικό dataset, καθώς αυτή αποτελεί την ταυτότητα τους ώστε να τα αναγνωρίζεις στο τέλος.
+1


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: panos98 on October 22, 2019, 00:11:34 am
Για το struct με το points εχει βαση να προσπαθησω να την φτιαξω με μια  int size και εναν *ptr   και για την αρχικοποιηση ενος points  να παρω μια  void initialize(struct points a) που μεσα της θα κανει malloc τον a.ptr και θα τον γεμιζει(a.size φορες) με rand() τιμες  ;


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: alextsigilis on October 23, 2019, 03:48:59 am
Για την υποβολή υπάρχει κάποιο αυτοματοποιημένο σύστημα που ελέγχει την κώδικά και μας λέει «πώς είναι»;


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: EyeThere on October 23, 2019, 20:55:30 pm
Μήπως ο Πιτσιάνης έχει πεί πως ακριβώς θα εξετάσουν αν το δένδρο μας είναι σωστό;

Δηλαδή το σύστημα υποβολών θα βλέπει αν τα φύλλα του δένδρου μας είναι ίδια με αυτά που έχουν υπολογίσει εκείνοι ή απλά θα δίνουν κάποια τύχαια είσοδο στο δένδρο μας και θα βλέπουν αν υπολογίζει σωστά τους κοντινότερους γείτονές του (ανέξαρτητα από το πώς ειναι φτιαγμένο)


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: ytsejam on October 24, 2019, 18:10:05 pm
Μπορούμε να αλλάξουμε τους τύπους μεταβλητών στις συναρτήσεις που δίνονται? Θέλω, συγκεκριμένα, να περνάω double **X αντί για double *X στην buildvp().


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: Patui on October 24, 2019, 20:47:56 pm
Λογικά όχι γιατί διευκρινίζει ότι τα θέλει όπως ακριβώς τα έγραψε στην εκφώνηση της εργασίας γιατί θα τρέξουν κάπου για να δει λειτουργία κώδικα. Μπορείς να κάνεις ψευτο-2d  πίνακα εξάλλου χρησιμοποιώντας μόνο pointer


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: panos98 on October 26, 2019, 13:55:35 pm
Οι nodes τι θα περιεχουν αποστασεις ή τα  points απο τον n by d πινακα;


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: alekosts on October 26, 2019, 19:28:09 pm
Χαίρεται, θέλω να ρωτήσω αν σε κάθε επανάληψη πρέπει να επιλέξω νέο vantage_pont ή  επιλέγεται ένα στην αρχή και παραμένει το ίδιο;


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: dim2712 on October 26, 2019, 20:17:37 pm
καινούργιο κάθε φορά


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: kostas145 on October 29, 2019, 14:46:23 pm
Να ρωτησω, η buildvp είναι συνάρτηση που επιστρέφει struct?


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: Patui on October 29, 2019, 21:26:05 pm
Ναι , επιστρεφει struct τυπου vptree


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: pesto80 on October 29, 2019, 21:55:39 pm
Χαίρεται, θέλω να ρωτήσω αν σε κάθε επανάληψη πρέπει να επιλέξω νέο vantage_pont ή  επιλέγεται ένα στην αρχή και παραμένει το ίδιο;

καθε φορα το τελευταιο σημειο της λιστας σου ειναι το vantage point


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: karelisp on October 30, 2019, 23:06:57 pm
Το πρόγραμμα για να τεστάρουμε αν είναι σωστές οι υλοποιήσεις μας, τοπικά, που το βρίσκουμε;


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: Florence on October 30, 2019, 23:42:00 pm
Το πρόγραμμα για να τεστάρουμε αν είναι σωστές οι υλοποιήσεις μας, τοπικά, που το βρίσκουμε;

Elearning-> Εργασια 1 (ελεγχος ορθοτητας) -> Κατεβαζεις τα αρχεια Μakefile και tester.c

Στη συνεχεια ακολουθεις τις οδηγιες για να τεσταρεις τον κωδικα σου


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: pesto80 on October 30, 2019, 23:42:47 pm
Για να χρησιμοποιησω το Cilk χρειαζεται να εχω intel επεξεργαστη στον υπολογιστη μου;


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: thanosthehuge on October 31, 2019, 01:38:02 am
Για να χρησιμοποιησω το Cilk χρειαζεται να εχω intel επεξεργαστη στον υπολογιστη μου;

Μπα εγω μολις το ετρεξα σε AMD και ετρεξε καλα (νομιζω  8)) )


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: Patui on October 31, 2019, 01:44:07 am
Μπορει καποιος να βοηθησει με το makefile που πρεπει να κανουμε για να δημιουργηθουν τα .a κτλ κτλ ?


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/2
Post by: pesto80 on October 31, 2019, 11:26:02 am
Μπορει καποιος να βοηθησει με το makefile που πρεπει να κανουμε για να δημιουργηθουν τα .a κτλ κτλ ?

Μέσα σε έναν φάκελο vptree που έχει αυτήν την μορφή:
vptree
    |-----lib
    |-----inc
1. Compileαρεις τα .c σου με την εντολη gcc -c arheio1.c arheio2.c κλπ (θα παραχθούν κάποια .o αρχεία)
2. Εκτελείς την εντολή ar rcs vptree.a arheio1.o arheio2.o κλπ για να δημιουργήσει το .a
3. Βάζεις το vptree.a σου στον φάκελο lib
4. Βάζεις τους accessors σου (το .h αρχείο) στον φάκελο inc
5. Βάζεις το Makefile και το tester.c του Φλώρου στον ίδιο φάκελο που είναι και το vptree (από δίπλα του δλδ)
6. Εκτελείς στον φάκελο στον οποίον ανήκουν τα vptree, Makefile, tester.c την εντολή make

*Πρόσεξε να έχεις αφαιρέσει την εντολή από το makefile του Φλώρου που σχετίζεται με το tar αρχείο. Αυτή είναι για όταν τα ανεβάσεις elearning
**Πρόσεξε να έχεις βάλει στο Makefile πάνω πάνω την σωστή version του gcc-7,6,5... σου κλπ (για να την βρεις τράβα ένα gcc --version στο terminal θα σου βγάλει κάτι του τύπου Χ.Υ.Ζ. Το Χ είναι η version σου)
***Πρόσεξε εννοείται να έχεις κρατήσει από το makefile του φλώρου μόνο το/τα κομμάτι/κομμάτια τα οποία σε ενδιαφέρουν να ελέγξεις (test_sequential, test_pthreads, test_openmp κλπ)


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/2
Post by: pesto80 on October 31, 2019, 11:29:37 am
Θυμάται κανείς στην τάξη χθες τι είπε για την περίπτωση των optimization flags? Είχε κάνει ένα παιδί μια ερώτηση νομίζω ότι με τα optimization flags του βγαίνει πιο γρήγορα το sequential από το pthread (??? νομιζω). Ο Πιτσιάνης ωστόσο είχε πει ότι είναι φυσιολογικό ??? Ξέρει κανείς τι σχέση πρέπει να έχουν οι χρόνοι του παράλληλου προγράμματος και του σειριακού όταν compilάρονται και τα 2 με -O3?

plz μην πειτε οτι το pthread πρεπει να ειναι πιο γρηγορο  :-X


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/2
Post by: Xplicit on October 31, 2019, 12:05:20 pm
Θυμάται κανείς στην τάξη χθες τι είπε για την περίπτωση των optimization flags? Είχε κάνει ένα παιδί μια ερώτηση νομίζω ότι με τα optimization flags του βγαίνει πιο γρήγορα το sequential από το pthread (??? νομιζω). Ο Πιτσιάνης ωστόσο είχε πει ότι είναι φυσιολογικό ??? Ξέρει κανείς τι σχέση πρέπει να έχουν οι χρόνοι του παράλληλου προγράμματος και του σειριακού όταν compilάρονται και τα 2 με -O3?

plz μην πειτε οτι το pthread πρεπει να ειναι πιο γρηγορο  :-X

Αν κάνεις compile με optimization flag το σειριακό και χωρίς το παράλληλο, υπάρχει περίπτωση να είναι πιο γρήγορο το πρώτο. Αλλα προφανώς και τα δύο πρέπει να γίνουν με τα ίδια flags. Και το παράλληλο πρέπει να είναι πιο γρήγορο, αλλιως απλά θα τα κάναμε όλα compile με -O3  και δεν θα υπήρχαν pthreads:P

Disclaimer: Δεν ξέρω τι είπε ο Πιτσιάνης στο μάθημα, πέρυσι το παρακολούθησα εγώ


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/2
Post by: pesto80 on October 31, 2019, 12:14:42 pm
...αλλιως απλά θα τα κάναμε όλα compile με -O3  και δεν θα υπήρχαν pthreads:P...

Ναι και εγω αυτο σκεφτηκα απλα δεν ηθελα να το πω :Ρ. Ωραια...Δυστυχως χωρις optimization το pthread νικαει ενω με optimization χανει κατα πολύ μάλιστα... :'(


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: Xplicit on October 31, 2019, 12:41:05 pm
Πόσα θρέντς φτιάχνεις? Στάνταρ νούμερο ή είναι αναδρομική η δημιουργία?


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: pesto80 on October 31, 2019, 13:07:24 pm
Πόσα θρέντς φτιάχνεις? Στάνταρ νούμερο ή είναι αναδρομική η δημιουργία?

Παραλληλοποιουμε 2 κομματια του κωδικα:
α) Στο ενα που ειναι ενας απλος γραμμικος υπολογισμος ενος απλου πινακα εχω βαλει threshold στα 10 000 και κατω, να σταματαει το multithreading και να μπαινω σε sequential mode. (το προβλημα που ανεφερα ηταν σε αυτην την υλοποιηση)
β) Στο δευτερο ειναι η αναδρομικη κατασκευη ενός binary δενδρου οποτε εκει εχω ανω threshold στον αριθμο των threads αυτη τη φορα. Οποτε οταν φτασει στα 8 threads αρχιζει να υπολογιζει τα υπολοιπα φυλλα του δενδρου sequential. Αν τελειωσουν τη δουλεια τους καποια threads, σηκωνω καινουργια προκειμενου να παραμενω στα 8. (δεν ειμαι καθολου σιγουρος για αυτην την υλοποιηση αλλα για καποιο λογο εδω πετυχαινω τα threads να ειναι πιο γρηγορα απο το sequential)



Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: Xplicit on October 31, 2019, 13:18:41 pm
Στο πρώτο κομμάτι που έχεις και θέμα, πόσα θρέντ φτιάχνεις? 8 θεωρώ ότι είναι σχετικά λίγα αλλα εξαρτάται και απο τον επεξεργαστή σου. Σε εξαπύρηνο θυμάμαι ότι τη βέλτιστη απόδοση την είχα για 32 ή 64 θρέντς. Το threshold είναι σωστή λογική, την κατάλληλη τιμή θα τη βρείς με tuning.


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: legen___dary on October 31, 2019, 14:24:02 pm
Αν τυχόν διαβάζει κάποιος απ' τα παιδιά που συζητούσαν με τον Πιτσιάνη χθες στο τέλος του μαθήματος για μία και μοναδική malloc για τα nodes, μήπως μπορεί  να εξηγήσει ακριβώς τι εννοούσε; Ο Πιτσιάνης ανέφερε πως θα βοηθήσει πολύ στην ταχύτητα του προγράμματος.


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/2
Post by: pesto80 on October 31, 2019, 15:13:24 pm
Στο πρώτο κομμάτι που έχεις και θέμα, πόσα θρέντ φτιάχνεις? 8 θεωρώ ότι είναι σχετικά λίγα αλλα εξαρτάται και απο τον επεξεργαστή σου. Σε εξαπύρηνο θυμάμαι ότι τη βέλτιστη απόδοση την είχα για 32 ή 64 θρέντς. Το threshold είναι σωστή λογική, την κατάλληλη τιμή θα τη βρείς με tuning.

Εξαρταται απο τον επεξεργαστη (4πυρηνος) εξαρταται και απο την υλοποιηση. Δυστυχως οταν συνδυαστουν οι 2 υλοποιησεις σε ενα full παραλληλο προγραμμα (και υπολογισμος πινακα / και χτισιμο δεντρου παραλληλα) πρεπει να περιορισω τα thread που θα σηκωθουν γιατι καθε μια απο τις 2 υλοποιησεις σηκωνει επιπλεον τα δικα της πανω στην αλλη. Εχω και ελαχιστη RAM(4 GB) οποτε δυστυχως τα threads παραμενουν χαμηλα: 4 για τον πινακα + 4 για το χτισιμο του δεντρου. Θεωρω οτι θα μπορουσαν σε μια καλυτερη υλοποιηση να ειναι περισσοτερα ωστοσο*

*
. Αυτο που εννοω καλυτερη υλοποιηση για αυτους που δεν βρισκονταν χθες στην ταξη: Πιτσιανης και Φλωρος απαντωντας σε μια ερωτηση τονισαν οτι ειναι παρα παρα πολυ καλη πρακτικη στην κατασκευη τον Τinner Τouter να σηκωνουμε, ενα thread τη φορα (πχ για το Tinner μονο) και να αφηνουμε το master thread να συνεχιζει στον υπολογισμο του Touter. Ετσι γλυτωνεις τρομερο χρονο απο την δημιουργια περιττων threads.


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/2
Post by: pesto80 on October 31, 2019, 15:57:15 pm
Την cilk (icpc) πρεπει να την κατεβασουμε η μπορουμε να την τρεξουμε και μεσω του gcc? Αν μπορουμε, τοτε πως;


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: kalopana on October 31, 2019, 18:41:11 pm
Αν έχεις έκδοση gcc πριν την 8.3(ιδανικά πριν την 8 γενικά γιατι εγώ έχω 8.3 και έβαλα απευθείας 7.4 για να κάνω τη δουλειά μου δε ξέρω αν 8.1 ή 8.2 υποστηρίζουν)  (grapse gcc --version sto cmd) tote vazeis to extra flag -fcilkplus , (px   gcc main.c -fcilkplus) Αν τωρα έχεις την έκδοση 8.3 δεν το υποστηρίζει αλλά μπορείς να εγκαταστήσεις παλαιότερη και να κάνεις τη δουλειά σου.


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: char on October 31, 2019, 20:23:46 pm
εκει που κανουμε ελεγχο ορθοτητας ποιες εντολες επακριβως πρεπει να γράψουμε ? Ξερει κανεις?


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: thanosthehuge on October 31, 2019, 20:58:42 pm
Στο Makefile του Φλώρου (αυτό που ελέγχει δηλαδή τον κώδικα μας στο elearning) λείπουν από τις γραμμές που γίνεται το compile ( $(CC) κλπ κλπ) οι κατάλληλες σημαίες για τις βιβλιοθήκες των pthreads, openmp και cilk και γι'αυτό βγάζει σφάλμα στον έλεγχο... Μπορούμε κάπως να το κάνουμε εμείς να δουλέψει ή κάνουμε τον σταυρό μας ότι ο Φλώρος θα το πάρει πρέφα και θα το αλλάξει?


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: Patui on October 31, 2019, 23:00:19 pm
Πρέπει να του στείλουμε email για να είμαστε σίγουροι


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: xaotikos on October 31, 2019, 23:02:11 pm
Προβλέπεται παράταση η το σπινταρουμε ανελέητα μέχρι την Κυριακή;


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: Judas Priest saved me on October 31, 2019, 23:23:00 pm
Προβλέπεται παράταση η το σπινταρουμε ανελέητα μέχρι την Κυριακή;
Δεν υπάρχει καμία παράταση δυστηχώς είπε στο μάθημα.

Όταν καταλήξω να έχω σε ένα node 2 σημεία τι κάνω ? Βάζω το vp στο inner και το άλλο στο outer ?


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: xaotikos on October 31, 2019, 23:35:56 pm
Δεν υπάρχει καμία παράταση δυστηχώς είπε στο μάθημα.

Όταν καταλήξω να έχω σε ένα node 2 σημεία τι κάνω ? Βάζω το vp στο inner και το άλλο στο outer ?

Το VP πετιέται νομίζω. Και μενεις στο inner με το άλλο σημείο και στο outer τίποτα.


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: dim2712 on November 01, 2019, 02:19:22 am
Αν τυχόν διαβάζει κάποιος απ' τα παιδιά που συζητούσαν με τον Πιτσιάνη χθες στο τέλος του μαθήματος για μία και μοναδική malloc για τα nodes, μήπως μπορεί  να εξηγήσει ακριβώς τι εννοούσε; Ο Πιτσιάνης ανέφερε πως θα βοηθήσει πολύ στην ταχύτητα του προγράμματος.
Ουσιαστικά (σύμφωνα με πιτσιάνη) η malloc καθυστερεί αρκετά το πρόγραμμα κάθε φορά που τρέχει οπότε είναι καλύτερο όσες malloc μπορούν να βγουν εκτός αναδρομής, threads κλπ να βγούν. Ας πούμε εγώ για τον πίνακα αποστάσεων κάνω μια φορά allocate πριν την αναδρομή και μετά χρησιμοποιώ αυτή τη μνήμη κάνοντας override σε κάθε κλήση. Προφανώς και λόγω διαχείρισης και αποδέσμευσης μνήμης από τη c, γλύτωσα στα 1000000 σημεία πχ κάπου 100-150 mb μνήμης ram αλλά και κέρδισα ταχύτητα. Τώρα για το άλλο που συζητήθηκε (preallocate memory για τα nodes του δέντρου) εκτός του ότι σε threads γίνεται πονοκέφαλος μια τέτοια διαχείριση μνήμης, επειδή αναγκαστικά δημιουργούνται μεγάλα άλματα στη μνήμη τελικά με καθυστερούσε περισσότερο απο malloc οπότε εκεί το άφησα ως είχε. Ας πει και κανείς άλλος την εμπειρία του!


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: legen___dary on November 01, 2019, 03:08:28 am
Ουσιαστικά (σύμφωνα με πιτσιάνη) η malloc καθυστερεί αρκετά το πρόγραμμα κάθε φορά που τρέχει οπότε είναι καλύτερο όσες malloc μπορούν να βγουν εκτός αναδρομής, threads κλπ να βγούν. Ας πούμε εγώ για τον πίνακα αποστάσεων κάνω μια φορά allocate πριν την αναδρομή και μετά χρησιμοποιώ αυτή τη μνήμη κάνοντας override σε κάθε κλήση. Προφανώς και λόγω διαχείρισης και αποδέσμευσης μνήμης από τη c, γλύτωσα στα 1000000 σημεία πχ κάπου 100-150 mb μνήμης ram αλλά και κέρδισα ταχύτητα. Τώρα για το άλλο που συζητήθηκε (preallocate memory για τα nodes του δέντρου) εκτός του ότι σε threads γίνεται πονοκέφαλος μια τέτοια διαχείριση μνήμης, επειδή αναγκαστικά δημιουργούνται μεγάλα άλματα στη μνήμη τελικά με καθυστερούσε περισσότερο απο malloc οπότε εκεί το άφησα ως είχε. Ας πει και κανείς άλλος την εμπειρία του!
Μάλιστα,ευχαριστώ!


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: pesto80 on November 01, 2019, 11:41:45 am
Όταν καταλήξω να έχω σε ένα node 2 σημεία τι κάνω ? Βάζω το vp στο inner και το άλλο στο outer ?

. Διαλεγεις το τελευταιο ως vp
. Το αλλο σημειο ανηκει στο inner set ενω το outer set εχει μηκος 0
. Καλεις ξανα την αναδρομη σου για Τinner / Touter
                        - Τinner (εχεις 1 σημειο)
                              . Το οριζεις ως vantage point -> του δινεις συντεταγμενες και global index
                              . To κανεις return
                         - Touter (εχεις 0 σημεια)
                              . Φτιαχνεις ενα vptree *T = NULL
                              . Το κανεις return


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: pesto80 on November 01, 2019, 11:45:49 am
Δεν υπάρχει καμία παράταση δυστηχώς είπε στο μάθημα.

Ο λογος που δεν θελουν να δωσουν παραταση ειναι επειδη ανοιγει καπακι η 2η. Το θεμα ειναι οτι μεχρι Κυριακη ειναι τρελο ζορι να διεκπεραιωθει η εργασια  πληρως για αρκετους απο οτι καταλαβαινω (σε συνδυασμο με αναφορες, tuning, tests). Εγω ήδη ειπα στον Φλωρο να το σπρωξει οσο μπορει, εστω και ενα 3-4ημερο, δεν γινεται ο tester να ανεβηκε Τεταρτη και εμεις να πρεπει να παραδοσουμε Κυριακη. Ας στειλει και καποιος αλλος mail να ρωτησει για διορια μπας και το αφησει λιγο.


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: pesto80 on November 01, 2019, 11:47:45 am
Αν έχεις έκδοση gcc πριν την 8.3(ιδανικά πριν την 8 γενικά γιατι εγώ έχω 8.3 και έβαλα απευθείας 7.4 για να κάνω τη δουλειά μου δε ξέρω αν 8.1 ή 8.2 υποστηρίζουν)  (grapse gcc --version sto cmd) tote vazeis to extra flag -fcilkplus , (px   gcc main.c -fcilkplus) Αν τωρα έχεις την έκδοση 8.3 δεν το υποστηρίζει αλλά μπορείς να εγκαταστήσεις παλαιότερη και να κάνεις τη δουλειά σου.

gcc-5 κουβαλαω: δεν το εχω δει πολυ αναλυτικα ακομα αλλα ακομα και να βαλω αυτο το flag, υπαρχει περιπτωσει να μου λειπουν τα header files (γιατι δυστυχως τετοια errors παιρνω)? Αν ναι, τι κανω σε αυτην την περιπτωση; (θυμαμαι ενα παιδι ειχε το ιδιο θεμα μεσα στην ταξη)


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: Judas Priest saved me on November 01, 2019, 18:30:52 pm
. Διαλεγεις το τελευταιο ως vp
. Το αλλο σημειο ανηκει στο inner set ενω το outer set εχει μηκος 0
. Καλεις ξανα την αναδρομη σου για Τinner / Touter
                        - Τinner (εχεις 1 σημειο)
                              . Το οριζεις ως vantage point -> του δινεις συντεταγμενες και global index
                              . To κανεις return
                         - Touter (εχεις 0 σημεια)
                              . Φτιαχνεις ενα vptree *T = NULL
                              . Το κανεις return

Κατάλαβα ευχαριστώ. Δηλαδή γενικά το vp δε το βάζουμε σε κάποιο δέντρο ? Εγώ το έβαζα στο inner.


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: pesto80 on November 01, 2019, 18:36:58 pm
Κατάλαβα ευχαριστώ. Δηλαδή γενικά το vp δε το βάζουμε σε κάποιο δέντρο ? Εγώ το έβαζα στο inner.

καλο ειναι μεσα σε καθε αναδρομη να φτιαχνεις και να επιστρεφεις μια δομη τυπου vptree * και να της δινεις τα χαρακτηριστικα index, vp[d], inner, outer


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: Judas Priest saved me on November 01, 2019, 18:58:45 pm
Το κάνω αυτό. Άλλο ρωτάω. Το vantage point επειδή είναι εντός ακτίνας (έχει αποσταση 0 απο τον εαυτό του) το βάζω στα σημεία του inner υποδέντρου. Είναι λάθος αυτό ?


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: pesto80 on November 01, 2019, 19:02:07 pm
Το κάνω αυτό. Άλλο ρωτάω. Το vantage point επειδή είναι εντός ακτίνας (έχει αποσταση 0 απο τον εαυτό του) το βάζω στα σημεία του inner υποδέντρου. Είναι λάθος αυτό ?

δεν θα τελειωσεις ποτε ετσι. οταν μεινεις με 1 vp τοτε θα τρεχεις για παντα το inner αυτου. ακομα και αν φροντισεις να μην πεσει σε ατερμων βρογχο με καποια if , ειναι λαθος να βαζεις το vp μεσα στο inner set. το χει πει και ο πιτσιανης


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: kalopana on November 01, 2019, 19:02:41 pm
Μπορείς να εγκαταστήσεις και να έχεις πολλές εκδόσεις του gcc και να ενεργοποιείς κάθε φορά αυτή που θέλεις. https://gist.github.com/SunnyRaj/788ca494db609a404c9dc4c88d47e775  αυτό το λινκ με βοήθησε να βάλω τον 7.4 και να τον σεταρω ως default. Αν θες βάλε τον κι εσύ και πιστεύω δεν θα έχεις προβλήματα. (Δώσε βάση στα gcc και μόνο την 7.4 έκδοση για εγκατάσταση δηλαδή κάτι τέτοιο:

sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
sudo apt update
sudo update-alternatives --remove-all gcc
sudo apt-get install -y gcc-7.4
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 10
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7.4 20

sudo update-alternatives --set cc /usr/bin/gcc
sudo update-alternatives --config gcc



Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: Judas Priest saved me on November 01, 2019, 19:03:50 pm
δεν θα τελειωσεις ποτε ετσι. οταν μεινεις με 1 vp τοτε θα τρεχεις για παντα το inner αυτου. ακομα και αν φροντισεις να μην πεσει σε ατερμων βρογχο με καποια if , ειναι λαθος να βαζεις το vp μεσα στο inner set. το χει πει και ο πιτσιανης

Οκ κομπλέ. Ο πιτσιάνης καλά θα ταν να το έγραφε και στην εκφώνηση της εργασίας γτχτ.


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: kalopana on November 01, 2019, 19:12:37 pm
gcc-5 κουβαλαω: δεν το εχω δει πολυ αναλυτικα ακομα αλλα ακομα και να βαλω αυτο το flag, υπαρχει περιπτωσει να μου λειπουν τα header files (γιατι δυστυχως τετοια errors παιρνω)? Αν ναι, τι κανω σε αυτην την περιπτωση; (θυμαμαι ενα παιδι ειχε το ιδιο θεμα μεσα στην ταξη)
Βέβαια απ'ότι διαβάζω θεωρητικά ο 5 υποστηρίζει cilk. Δοκίμασε να βάλεις KAI αυτό το flag :   -lcilkrts


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: dim2712 on November 01, 2019, 20:26:53 pm
Έχει βρει κανείς κάποιον αποτελεσματικό τρόπο να διαχειρίζεται τον αριθμό από active threads στο open mp? Γιατί το implementation του gnu φαίνεται να αγνοεί το set_num_threads και ακολουθεί μόνο το num_threads στο parallel section κάνοντας δικιά του διαχείριση του pool του από threads.


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: alekosts on November 01, 2019, 20:34:35 pm
Περίπου πόσες φορές πιο γρήγορα πρέπει να εκτελείται ο αλγόριθμος με παραλληλοποίηση του υπολογισμού των  αποστάσεων και πόσο με παραλληλοποίηση στον υπολογισμό inner-outer και πόσο και με τα δύο μαζί;


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: Judas Priest saved me on November 01, 2019, 20:57:47 pm
Περίπου πόσες φορές πιο γρήγορα πρέπει να εκτελείται ο αλγόριθμος με παραλληλοποίηση του υπολογισμού των  αποστάσεων και πόσο με παραλληλοποίηση στον υπολογισμό inner-outer και πόσο και με τα δύο μαζί;

Από ότι θυμάμαι ο Πιτσιάνης είπε στο μάθημα οτι αν είναι 2.5 φορές πιο γρήγορος είναι αρκετά καλά (νομίζω εννοούσε μόνο με παραλληλοποίηση των δεντρων).


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/2
Post by: pesto80 on November 01, 2019, 21:42:24 pm
Έχει βρει κανείς κάποιον αποτελεσματικό τρόπο να διαχειρίζεται τον αριθμό από active threads στο open mp? Γιατί το implementation του gnu φαίνεται να αγνοεί το set_num_threads και ακολουθεί μόνο το num_threads στο parallel section κάνοντας δικιά του διαχείριση του pool του από threads.

να αγιασει το στομα σου! αρα οι global ειναι μονοδρομος( ; ). αναγκαστικα με if πανω σε global μεταβλητες δηλαδη. τα λεω με επιφυλαξη.

Επισης σχολιο πανω στην openmp: το οτι τεμαχιζουμε τον πινακα στα pthreads χειροκινητα και τον εκτελουμε δεν μπορω να καταλαβω πως θα το κανει καλυτερα η openmp. δεν θεωρω οτι μπορει να βελτιστοποιησει σε αυτο το κομματι η openmp τον χρονο περισσοτερο απο τα threads. Δυστυχως εγω μαλιστα σε αυτο μονο το κομματι ολη μερα σημερα παιρνω συνεχως χειροτερο χρονο αν το παραλληλοποιησω με openmp παρα αν το αφησω sequential!!! Η openmp με βοηθησε μονο στις αναδρομες (αρκετα). Και μιλαμε για μια απλη for... δεν ξερω τι τρεχει απο πισω αλλα αν βρει καποιος ενα καλο directive για την for ας το μοιραστει. Χωρις να λαβουμε υποψιν το reduction (δηλ. για μικρα dimensions ακομα).


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: dim2712 on November 01, 2019, 21:51:29 pm
μετά και απο απάντηση του φλώρου και ψάξιμο κατέληξα στα δύο παρακάτω για thread managment: https://www.ibm.com/support/knowledgecenter/en/SSLTBW_2.1.0/com.ibm.zos.v2r1.cbcux01/ruomprun.htm
https://stackoverflow.com/questions/22813923/difference-between-num-threads-vs-omp-set-num-threads-vs-omp-num-threads/22816325#22816325
Αχταρμάς δηλαδή αλλά τουλάχιστον ξεκάθαρα το τι κάνει το κάθε τι.
Όσον αφορά τα for loop δοκίμασε με guided scheduling ισως να κάνεις το σπάσιμο.
Όταν λες if clause τι ακριβώς ελέγχεις για να σταματήσεις περαιτέρω nested parallelism?


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/2
Post by: pesto80 on November 01, 2019, 21:54:27 pm
Από ότι θυμάμαι ο Πιτσιάνης είπε στο μάθημα οτι αν είναι 2.5 φορές πιο γρήγορος είναι αρκετά καλά (νομίζω εννοούσε μόνο με παραλληλοποίηση των δεντρων).

Εχει καταφερει κανεις τετοιες αποδοσεις; Εγω συνολο για n= 1.000.000 d=2 παιρνω 3.46 seq 2.34 pthreads δλδ ενα +40% (μιαμιση φορα πιο γρηγορο)

(και αυτο για n=1.000.000 ξαναλεω. οχι 100 000)


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: dim2712 on November 01, 2019, 22:03:13 pm
με 1000000 και d=20 εβγαλα(μαζι με το generation για τα σημεια) sequential 9,1 και threaded 2.8 χωρις optimization flags
δοκίμασε να βγάλεις τη malloc για τους υπολογισμούς των αποστάσεων εκτός αναδρομής και μετά δούλεψε με την preallocated memory.
και βέβαια μετά παίζει και το fine tuning.
Επίσης νομίζω οτι d=2 είναι αρκετά μικρό για σύγκριση, δεν κερδίζεις και πολλά στον υπολογισμό αποστάσεων.


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: pesto80 on November 01, 2019, 22:12:12 pm
με 1000000 και d=20 εβγαλα(μαζι με το generation για τα σημεια) sequential 9,1 και threaded 2.8 χωρις optimization flags
δοκίμασε να βγάλεις τη malloc για τους υπολογισμούς των αποστάσεων εκτός αναδρομής και μετά δούλεψε με την preallocated memory.
και βέβαια μετά παίζει και το fine tuning.
Επίσης νομίζω οτι d=2 είναι αρκετά μικρό για σύγκριση, δεν κερδίζεις και πολλά στον υπολογισμό αποστάσεων.

Οντως και γω αν παω το d=20 παω στα x2.5. Βρηκα τι παραμετρους θα βαλω για την αναφορα ;ρ. Εσυ καθολου ακραιος: μονο 3.5 φορες πιο γρηγορος  ;D ωραιος. Οσο για τα if, ελεγα να κρατουσες μια global active_threads και να εκτελουσες τις συναρτησεις που εχουν μεσα openmp directives μονο οταν τα active σου ειναι κατω απο ενα οριο. (Δηλαδη στην ουσια κρατας 2 αντιτυπα για καθε συναρτηση. Ενα με και ενα χωρις directives [τσαπατσουλια ξερω])


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: alekosts on November 01, 2019, 22:18:51 pm
Εγώ που δεν πιάνω τέτοια βελτιστοπoίηση και δεν φταίει το pre-allocation θα ρωτήσω  ;D 2,5 και 3,5 φορές πιο γρήγορο και με τις δυο παραλληλοποιήσεις;


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/2
Post by: pesto80 on November 01, 2019, 22:26:28 pm
Εγώ που δεν πιάνω τέτοια βελτιστοπoίηση και δεν φταίει το pre-allocation θα ρωτήσω  ;D 2,5 και 3,5 φορές πιο γρήγορο και με τις δυο παραλληλοποιήσεις;

ναι. γενικα πρωτα εννοειται τις τσεκαρεις ξεχωριστα. αν η καθε μια σου εισαγει εστω και λιγη ταχυτητα τοτε εισαι οκ (αρκει να μη σου εισαγει καθυστερηση). αλλιως πρεπει να αλλαξεις αυτην που σε καθυστερει.

*εννοειται η ευρεση αποστασεων ειναι ψιλοξεφτιλα και δεν θα σου δωσει πολυ push στο παραλληλο. η αναδρομη απο την αλλη περιμενουμε να σε κουβαλησει αρκετα.


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: dim2712 on November 01, 2019, 23:22:18 pm
Οντως και γω αν παω το d=20 παω στα x2.5. Βρηκα τι παραμετρους θα βαλω για την αναφορα ;ρ. Εσυ καθολου ακραιος: μονο 3.5 φορες πιο γρηγορος  ;D ωραιος. Οσο για τα if, ελεγα να κρατουσες μια global active_threads και να εκτελουσες τις συναρτησεις που εχουν μεσα openmp directives μονο οταν τα active σου ειναι κατω απο ενα οριο. (Δηλαδη στην ουσια κρατας 2 αντιτυπα για καθε συναρτηση. Ενα με και ενα χωρις directives [τσαπατσουλια ξερω])
"τσαπατσουλια"..σε νιώθω...εμ αφού ο πιτσιάνης θέλει το header να έχει μόνο τις συναρτήσεις που λέει για το tester και δε μπορουμε να βάλουμε τις duplicate σε άλλο source file!!


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: alekosts on November 02, 2019, 18:23:04 pm
Να ρωτήσω ρε παίδες για την παραλληλοποίηση του υπολογισμου των αποστάσεων με pthreads, απλά δίνεται σε κάθε thread διαφορετικούς δείκτες για τον πίνακα των στοιχείων και εκτελείται ο ίδιος αλγόριθμος(παρόμοιος με τον σειρακό σε void) για κάθε thread ετσι; Προσπαθώ να το κάνω έτσι αλλά έχω τεράστια καθυστέρηση  >:( ΠΛΖ ΧΕΛΠ


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: Μπουγάτσας on November 02, 2019, 19:17:19 pm
Να ρωτήσω ρε παίδες για την παραλληλοποίηση του υπολογισμου των αποστάσεων με pthreads, απλά δίνεται σε κάθε thread διαφορετικούς δείκτες για τον πίνακα των στοιχείων και εκτελείται ο ίδιος αλγόριθμος(παρόμοιος με τον σειρακό σε void) για κάθε thread ετσι; Προσπαθώ να το κάνω έτσι αλλά έχω τεράστια καθυστέρηση  >:( ΠΛΖ ΧΕΛΠ
Ετσι όπως λες το κανω και εγω. Απλά έχω μια συνθήκη όταν ο αριθμός των αποστάσεων που πρέπει να υπολογίσω είναι κάτω απο κάποιο όριο, να υπολογίζονται σειριακά και όχι με pthreads, καθώς μετά από κάποιο σημείο είναι πιο χρονοβόρο να δημιουργείς threads για να υπολογίσεις ας πουμε 10-20 αποστάσεις.


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: alekosts on November 02, 2019, 19:38:51 pm
Ετσι όπως λες το κανω και εγω. Απλά έχω μια συνθήκη όταν ο αριθμός των αποστάσεων που πρέπει να υπολογίσω είναι κάτω απο κάποιο όριο, να υπολογίζονται σειριακά και όχι με pthreads, καθώς μετά από κάποιο σημείο είναι πιο χρονοβόρο να δημιουργείς threads για να υπολογίσεις ας πουμε 10-20 αποστάσεις.
Σε ευχαριστώ πολύ θα το προσπαθήσω έτσι μπας και.


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: dim2712 on November 02, 2019, 20:02:41 pm
Έχεις κανεις προβλήματα με το cilk και τα workers?
Φαίνεται να σκάει όταν πάει να κάνει κλίση σε cilk_spawn.
Ετρεξα το παράδειγμα και όλα κομπλέ αλλά στο μέγεθος το προβήματος με τα σημεία σκάει όταν πάει να ξεκινήσεις το cilk_spawn.
Δοκίμασα να κάνω και set τα number of workers αλλα και πάλι τα ίδια.
Καμία ιδέα κανείς; :(


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: Μπουγάτσας on November 02, 2019, 21:18:40 pm
Έχει βρει κανείς κάποιον αποτελεσματικό τρόπο να διαχειρίζεται τον αριθμό από active threads στο open mp? Γιατί το implementation του gnu φαίνεται να αγνοεί το set_num_threads και ακολουθεί μόνο το num_threads στο parallel section κάνοντας δικιά του διαχείριση του pool του από threads.
Έβγαλες καποια άκρη με αυτο; Εγω ειλικρινά δεν μπορώ να καταλαβω τη συμπεριφορά της openmp. Στον υπολογισμό των αποστάσεων αν το D δεν ειναι πολυ μεγάλο νομίζω πως εισάγεται καθυστέρηση. Στα αναδρομικά threads που δημιουργεί η openmp όταν μετά απο κάποιες επαναλήψεις ο αριθμός των σημείων (n) έχει μειωθεί αρκετά γυρίζω στην κλασσική αναδρομή(δηλαδή κλήση του "εαυτού" του και οχι δημιουργία άλλου/άλλων thread) και εισάγεται καθυστέρηση ενώ λογικά θα έπρεπε να συμβαίνει το αντίθετο.


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: dim2712 on November 02, 2019, 23:36:54 pm
χρησιμοποιησα το omp_get_active_level() για να σταματαω τη δημιουργία των threads σε ενα χ επίπεδο στο δέντρο.
Όσο γαι την επιστροφή σε sequential όταν την κάνω όντως κερδίζω χρόνο από τα overhead τοu openmp.


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: mano_lee on November 03, 2019, 00:29:01 am
Έχεις κανεις προβλήματα με το cilk και τα workers?
Φαίνεται να σκάει όταν πάει να κάνει κλίση σε cilk_spawn.
Ετρεξα το παράδειγμα και όλα κομπλέ αλλά στο μέγεθος το προβήματος με τα σημεία σκάει όταν πάει να ξεκινήσεις το cilk_spawn.
Δοκίμασα να κάνω και set τα number of workers αλλα και πάλι τα ίδια.
Καμία ιδέα κανείς; :(

Τι εννοείς σκάει; cilk_sync βάζεις κάποια στιγμή;


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: dim2712 on November 03, 2019, 00:45:14 am
Τι εννοείς σκάει; cilk_sync βάζεις κάποια στιγμή;

ναι κανονικά. Στον debugger φαίνεται να καταρρέουν τα threads μόλις κάνει step στον δεύτερο thread που γίνεται spawn.
Επίσης έχω καταφέρει το πρόγραμμα να βγάλει αποτελέσματα για λίγα σημεία, μόλις παίρνει πολλά φαίνεται να κρασσάρει ο scheduler!


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: mano_lee on November 03, 2019, 15:22:13 pm
ναι κανονικά. Στον debugger φαίνεται να καταρρέουν τα threads μόλις κάνει step στον δεύτερο thread που γίνεται spawn.
Επίσης έχω καταφέρει το πρόγραμμα να βγάλει αποτελέσματα για λίγα σημεία, μόλις παίρνει πολλά φαίνεται να κρασσάρει ο scheduler!

Δοκίμασε τα 2 cilk_spawn να είναι το ένα κάτω απ το άλλο. Και ακριβώς μετά από τα 2 να βάζεις το cilk_sync (αν δεν το έχεις ήδη έτσι). 


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: Μπουγάτσας on November 03, 2019, 16:27:55 pm
OpenMP Κατάφερε κανείς να βελτιώσει τον χρόνο απο τον υπολογισμό των αποστάσεων ; Σε δοκιμές που κάνω ο υπολογισμός των αποστάσεων με #pragma omp for εισάγει καθυστέρηση. Επίσης, εφόσον η συνάρτηση υπολογισμού των αποστάσεων καλείται απο threads που έχουν δημιουργηθεί απο τα #pragma omp task , το αν έχουμε κάνει omp_set_nested 0 ή 1, δεν επηρεάζει το αν οι αποστάσεις θα υπολογιστούν όντως απο πολλά threads ή μονο απο ένα ; Καθώς το omp_set_nested καθορίζει το αν τα threads που έχουν δημιουργηθεί θα μπορούν με τη σειρά τους να δημιουργήσουν παραπάνω απο ενα thread (αν είμαι λάθος ας με διορθώσει/εξηγήσει κάποιος).


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: dim2712 on November 03, 2019, 18:56:17 pm
Δοκίμασε τα 2 cilk_spawn να είναι το ένα κάτω απ το άλλο. Και ακριβώς μετά από τα 2 να βάζεις το cilk_sync (αν δεν το έχεις ήδη έτσι). 
been there...done that


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: dim2712 on November 03, 2019, 18:57:55 pm
OpenMP Κατάφερε κανείς να βελτιώσει τον χρόνο απο τον υπολογισμό των αποστάσεων ; Σε δοκιμές που κάνω ο υπολογισμός των αποστάσεων με #pragma omp for εισάγει καθυστέρηση. Επίσης, εφόσον η συνάρτηση υπολογισμού των αποστάσεων καλείται απο threads που έχουν δημιουργηθεί απο τα #pragma omp task , το αν έχουμε κάνει omp_set_nested 0 ή 1, δεν επηρεάζει το αν οι αποστάσεις θα υπολογιστούν όντως απο πολλά threads ή μονο απο ένα ; Καθώς το omp_set_nested καθορίζει το αν τα threads που έχουν δημιουργηθεί θα μπορούν με τη σειρά τους να δημιουργήσουν παραπάνω απο ενα thread (αν είμαι λάθος ας με διορθώσει/εξηγήσει κάποιος).
Όντως εισάγει καθυστέρηση, εγώ ελέγχω και με ένα if ώστε να αποφύγω το pragma στην φορ αν χρειαστεί. Omp nested στο 1 βαλτο όπως και να χει.


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: mano_lee on November 03, 2019, 20:22:41 pm
Στο Makefile του Φλώρου (αυτό που ελέγχει δηλαδή τον κώδικα μας στο elearning) λείπουν από τις γραμμές που γίνεται το compile ( $(CC) κλπ κλπ) οι κατάλληλες σημαίες για τις βιβλιοθήκες των pthreads, openmp και cilk και γι'αυτό βγάζει σφάλμα στον έλεγχο... Μπορούμε κάπως να το κάνουμε εμείς να δουλέψει ή κάνουμε τον σταυρό μας ότι ο Φλώρος θα το πάρει πρέφα και θα το αλλάξει?

Το δοκίμασα μόλις. Στον έλεγχο που κάνει τα βάζει τα απαραίτητα flags. Οπότε δουλεύει μια χαρά.


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: xaotikos on November 03, 2019, 22:39:37 pm
Πήγε για αύριο η υποβολή σύμφωνα με το elearning


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: thanosthehuge on November 04, 2019, 00:12:37 am
Το δοκίμασα μόλις. Στον έλεγχο που κάνει τα βάζει τα απαραίτητα flags. Οπότε δουλεύει μια χαρά.

Ναι του έστειλα εμαιλ και μου απάντησε ότι το διόρθωσε οπότε τώρα λειτουργεί κομπλέ  :) :)


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: legen___dary on November 05, 2019, 14:49:28 pm
Καλό θα ήταν στην αξιολόγηση ,αν κάποιος τρέξει τον κώδικα του άλλου στον υπολογιστή του ,στον tester του Φλώρου αντί για rand()%100 να βάλει rand()/RAND_MAX ώστε να βγάζει πραγματικούς double αριθμούς και όχι integer σε μορφή double. Ο Φλώρος σε mail είχε πει πως θα το αλλάξει αλλά επειδή μάλλον δεν το έκανε ακόμα έιναι κρίμα να αξιολογηθεί κάποιος λάθος λόγω αυτού.


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: alekosts on November 05, 2019, 17:19:12 pm
Καλό θα ήταν στην αξιολόγηση ,αν κάποιος τρέξει τον κώδικα του άλλου στον υπολογιστή του ,στον tester του Φλώρου αντί για rand()%100 να βάλει rand()/RAND_MAX ώστε να βγάζει πραγματικούς double αριθμούς και όχι integer σε μορφή double. Ο Φλώρος σε mail είχε πει πως θα το αλλάξει αλλά επειδή μάλλον δεν το έκανε ακόμα έιναι κρίμα να αξιολογηθεί κάποιος λάθος λόγω αυτού.
+1 γιατι και σε εμένα είχε θέμα  ;D
Επίσης με την δεύτερη εργασία τι φάση, 19 μέρες και δεν έχει βγεί η εκφώνηση ακόμα;


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: pesto80 on November 05, 2019, 18:20:42 pm
Επίσης με την δεύτερη εργασία τι φάση, 19 μέρες και δεν έχει βγεί η εκφώνηση ακόμα;

true


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: athanasps on November 05, 2019, 20:09:30 pm
Μόλις ανακάλυψα ότι ο tester δεν έχει πολλή μνήμη και αν πχ έχεις βάλει μεγάλο αριθμό maxthreads πετάει error: "double free or corrupt (out)" ή "segmentation fault" στο Pthreads. Στο δικό μου απλά μείωσα τα maxthreads σε 4 και δούλεψε. Οπότε αν κάποιος έχει αυτο το θέμα και προσπαθεί να το φτιάξει όπως εγώ ελπίζω να πρόλαβα να τον σώσω. :D


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: Μπουγάτσας on November 05, 2019, 20:19:27 pm
Έχει δώσει ο Πιτσιάνης καμία συμβουλή για τον τρόπο με τον οποίο θα αξιολογήσουμε τις εργασίες των συμφοιτητών μας ; Π.χ ορθότητα δέντρου, ποιότητα κώδικα, σχολιασμός, αναφορά, δοκιμές που έγιναν κλπ ;


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: Florence on November 05, 2019, 22:16:54 pm
Επίσης έχει ειπωθεί κάτι σχετικά με το πώς μετράει η αξιολόγηση που κάνουμε? Επηρεάζει το βαθμό μας το πώς θα βαθμολογήσουμε τους άλλους ή το πώς θα μας βαθμολογήσουν οι άλλοι?


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: pesto80 on November 06, 2019, 19:30:08 pm
Επίσης με την δεύτερη εργασία τι φάση, 19 μέρες και δεν έχει βγεί η εκφώνηση ακόμα;

ανεβηκε


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: mano_lee on November 06, 2019, 20:18:20 pm
Όσον αφορά την αξιολόγηση

Λόγια του Πιτσιάνη:

  • Η αξιολόγηση που κάνουμε είναι για να βαθμολογήσει ο Πιτσιάνης εμάς (περίπου το 20% του βαθμού μας θα είναι η αξιολόγηση που κάναμε).
  • Η αξιολόγηση που κάνουμε δεν θα επηρεάσει τον βαθμό αυτού που αξιολογούμε. Είναι ουσιαστικά για να "πετύχουμε" τον βαθμό θα του βάλει ο Πιτσιάνης.
  • Αν θέλουμε να κάνουμε μικροαλλαγες για τυχόν σφάλματα που βλέπουμε μετα την υποβολή μπορούμε. Όμως να δείξουμε ότι το κάναμε φανερά και να γράψουμε κάποιο σχόλιο (π.χ. με ένα git commit). Φαντάζομαι βέβαια απ την στιγμή που θα μπορούμε να δούμε τις αξιολογήσεις που μας έκαναν και μετά δεν πρέπει να κάνουμε αλλαγές
  • Όταν τελειώσουν οι αξιολογήσεις, μπορούμε να δούμε την αξιολόγηση που μας έκαναν, και ποιοι την έκαναν.  ^innocent^


Title: Re: [Παράλληλα και Διανεμημένα Συστήματα] Εργασία 1 - 2019/20
Post by: mano_lee on November 07, 2019, 13:43:55 pm
Επίσης όσον αφορά το format της αναφοράς

Ο Φλώρος είπε ότι γενικά δεν χρειάζεται να κάνουμε μεγάλη ανάλυση του κώδικά μας. Ουσιαστικά απλα να περιγράφουμε την ιδέα (κυρίως για το πώς έγινε η παραλληλοποίηση), και μετά να γράφουμε αποτελέσματα από testings και παρατηρήσεις.

Παρ' όλα αυτά αν κάποιος αφιέρωσε πολύ μεγάλο μέρος της αναφοράς σε επεξήγηση του κώδικα δεν πειράζει. Αρκεί να καλύπτονται και τα υπόλοιπα επαρκώς (testings κ.λ.π.)