THMMY.gr

Μαθήματα Κύκλου Ηλεκτρονικής & Υπολογιστών => Παράλληλα και Διανεμημένα Συστήματα => Topic started by: Vlassis on October 24, 2016, 22:18:58 pm



Title: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Vlassis on October 24, 2016, 22:18:58 pm
Topic που αφορά την 1η εργασία του μαθήματος. Stay on topic!

Η  1η  εργασία  έχει  ανακοινωθεί  στο  Περιεχόμενα/Ασκήσεις.
εκφώνηση: http://alexander.ee.auth.gr:8083/eTHMMY/archive/173/downloadFile/6542/oct-trees.pdf (http://alexander.ee.auth.gr:8083/eTHMMY/archive/173/downloadFile/6542/oct-trees.pdf)


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Eilex on October 24, 2016, 23:34:15 pm
Κατάλαβε κανείς τι παίζει με αυτό?

inline uint64_t splitBy3(unsigned int a){
    uint64_t x = a & 0x1fffff; // we only look at the first 21 bits
    x = (x | x << 32) & 0x1f00000000ffff;  // shift left 32 bits, OR with self, and 0001111100000000000000000000000000000000111111111 1111111
    x = (x | x << 16) & 0x1f0000ff0000ff;  // shift left 32 bits, OR with self, and 0001111100000000000000001111111100000000000000001 1111111
    x = (x | x << 8) & 0x100f00f00f00f00f; // shift left 32 bits, OR with self, and 0001000000001111000000001111000000001111000000001 111000000000000
    x = (x | x << 4) & 0x10c30c30c30c30c3; // shift left 32 bits, OR with self, and 0001000011000011000011000011000011000011000011000 011000100000000
    x = (x | x << 2) & 0x1249249249249249;
    return x;
}


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: orestisf on October 25, 2016, 01:46:21 am
http://www.forceflow.be/2013/10/07/morton-encodingdecoding-through-bit-interleaving-implementations/

το εξηγεί στο “Magic Bits” method.

Δες και τα links που εχει:
https://fgiesen.wordpress.com/2009/12/13/decoding-morton-codes/
http://webcache.googleusercontent.com/search?q=cache:http://www-graphics.stanford.edu/~seander/bithacks.html#InterleaveBMN
http://stackoverflow.com/questions/18529057/produce-interleaving-bit-patterns-morton-keys-for-32-bit-64-bit-and-128bit


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Eilex on October 26, 2016, 00:40:01 am
http://www.forceflow.be/2013/10/07/morton-encodingdecoding-through-bit-interleaving-implementations/

το εξηγεί στο “Magic Bits” method.

Δες και τα links που εχει:
https://fgiesen.wordpress.com/2009/12/13/decoding-morton-codes/
http://webcache.googleusercontent.com/search?q=cache:http://www-graphics.stanford.edu/~seander/bithacks.html#InterleaveBMN
http://stackoverflow.com/questions/18529057/produce-interleaving-bit-patterns-morton-keys-for-32-bit-64-bit-and-128bit
Εξηγεί ότι πρόκειται ουσιαστικά για μία μάσκα αλλά ήθελα να καταλάβω άμα μας νοιάζει αποκλειστικά αυτό -> Interleaving the bits results in: 010001000111 = 1095 th cell along the Z-curve, ότι δηλαδή το κοιτάμε σαν ένα μαύρο κουτί και μπορεί να παραλληλοποιηθεί μονάχα στο x,y,z και ότι δηλαδή μπορούμε να το τρέξουμε ανεξάρτητα ή άμα μπορούμε να παραλληλοποιήσουμε και την ίδια την μάσκα.Ευχαριστώ πάντως για την γρήγορη απάντηση.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: lodi on October 27, 2016, 18:52:37 pm
τι προτείνει η κοινότητα του thmmy για debug tools σε παράλληλο προγραμματισμό (για Ubuntu) ?

κ κάτι ακόμα . Χρειάζεται και matlab η άσκηση ;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: orestisf on October 27, 2016, 21:44:40 pm
valgrind και gdb σιγουρα χρησιμα.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Επικο Burger on October 30, 2016, 00:40:55 am
Εξηγεί ότι πρόκειται ουσιαστικά για μία μάσκα αλλά ήθελα να καταλάβω άμα μας νοιάζει αποκλειστικά αυτό -> Interleaving the bits results in: 010001000111 = 1095 th cell along the Z-curve, ότι δηλαδή το κοιτάμε σαν ένα μαύρο κουτί και μπορεί να παραλληλοποιηθεί μονάχα στο x,y,z και ότι δηλαδή μπορούμε να το τρέξουμε ανεξάρτητα ή άμα μπορούμε να παραλληλοποιήσουμε και την ίδια την μάσκα.Ευχαριστώ πάντως για την γρήγορη απάντηση.

Από το λίγο που έχουμε δει την εργασία, παίζει το μόνο κομμάτι που παραλληλοποιούμε να είναι ο Radix Sort.

Παίζει να έχουμε καταλάβει καλά ή χαζομάρες? :p


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Eilex on October 30, 2016, 02:14:16 am
Από το λίγο που έχουμε δει την εργασία, παίζει το μόνο κομμάτι που παραλληλοποιούμε να είναι ο Radix Sort.

Παίζει να έχουμε καταλάβει καλά ή χαζομάρες? :p
το δεύτερο  :D


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: elefmylo on November 03, 2016, 01:36:48 am
Από το λίγο που έχουμε δει την εργασία, παίζει το μόνο κομμάτι που παραλληλοποιούμε να είναι ο Radix Sort.

Παίζει να έχουμε καταλάβει καλά ή χαζομάρες? :p

Μπορείς να παραλληλοποιήσεις τις συναρτήσεις φαντάζομαι:
Code:
Time to compute the hash codes            : 0.008600s
Time to compute the morton encoding       : 0.011531s
Time for the truncated radix sort         : 0.027455s
Time to rearrange the particles in memory : 0.018445s

Γενικά όπου έχεις for σίγουρα!
Ας με διορθώσει κάποιος να κάνω λάθος....


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Giwrgos P. on November 03, 2016, 12:57:10 pm
Μπορείς να παραλληλοποιήσεις τις συναρτήσεις φαντάζομαι:
Code:
Time to compute the hash codes            : 0.008600s
Time to compute the morton encoding       : 0.011531s
Time for the truncated radix sort         : 0.027455s
Time to rearrange the particles in memory : 0.018445s

Γενικά όπου έχεις for σίγουρα!
Ας με διορθώσει κάποιος να κάνω λάθος....

Πρέπει να τις παραλληλοποιήσεις όλες. Αλλά η radix τους ενδιαφέρει πιο πολύ που είναι και η πιο δύσκολη. Είναι ίδια εργασία με πριν από 2 χρόνια


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: kaspas on November 03, 2016, 15:20:12 pm
το link για το cilk
https://software.intel.com/en-us/qualify-for-free-software


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Dealan on November 03, 2016, 18:22:59 pm
Πρέπει να τις παραλληλοποιήσεις όλες. Αλλά η radix τους ενδιαφέρει πιο πολύ που είναι και η πιο δύσκολη. Είναι ίδια εργασία με πριν από 2 χρόνια

Γενικώς να εφαρμόσεις pthreads σε κάτι πέρα από την radix sort είναι πολύ κόπος για το τίποτα σχεδόν και δεν αξίζει. OpenMP είναι απλά 2 γραμμές σε κάθε αρχείο οπότε κλάιν, εκεί το κάνεις.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Exomag on November 03, 2016, 18:41:46 pm
Γενικώς να εφαρμόσεις pthreads σε κάτι πέρα από την radix sort είναι πολύ κόπος για το τίποτα σχεδόν και δεν αξίζει. OpenMP είναι απλά 2 γραμμές σε κάθε αρχείο οπότε κλάιν, εκεί το κάνεις.

Στην εργασία τη συγκεκριμένη πάντως θυμάμαι υπήρχε βελτίωση στο χρόνο εκτέλεσης και με την παραλληλοποίηση των άλλων αρχείων με pthreads.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: elefmylo on November 04, 2016, 19:19:54 pm
Γενικώς σε τι χρόνους σταματάμε? Γιατί για radix sort έβαλα μόνο μια    #pragma omp parallel for και πήγε από
0.020445s -> 0.014656s
Αρκεί?



Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: fanaks on November 05, 2016, 00:43:13 am
Γενικά στην radix δεν νομίζω οτι μπορείς να κάνεις και πολλά(τουλάχιστον με openMp) γιατι τα loop που έχει πρέπει να γράφουν σε κάθε επανάληψη και τα critical που πρέπει να χρησιμοποιήσεις την καθυστερούν πάρα πολύ.Εγω προσωπικά μετά απο 3 μέρες προσπάθεια δεν κατάφερα να σκεφτώ κατι πρακτικά αποτελεσπατικό πέρα απο την παραλληλοποιηση της τελευταιας for και γενικα αυτο που θέλω να πω οτι μην τρώτε πολυ χρόνο γιατι εχει πολύ δουλειά
και δεν αξιζει.Κάντε μια βασική υπολοποιήση και στα 3 προτυπα και στο τέλος προσπαθήστε για βελτιστοποίηση αν εχετε χρόνο.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Ancient on November 05, 2016, 17:31:15 pm
Σε όσους από εσάς κόβονται κάποια από τα τελευταία δεκαδικά ψηφία στους χρόνους, μπορείτε αντί της gettimeofday να χρησιμοποιήσετε την clock_gettime που είναι ακριβέστερη.

Code:

struct timespec requestStart, requestEnd;

clock_gettime(CLOCK_MONOTONIC, &requestStart);
 
// function here

clock_gettime(CLOCK_MONOTONIC, &requestEnd);

double t = ( requestEnd.tv_sec - requestStart.tv_sec )+ ( requestEnd.tv_nsec - requestStart.tv_nsec )/1e9;
   


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: kaspas on November 05, 2016, 17:55:10 pm
Έχει κανείς καμιά ιδέα πως παραλληλοποιειται η radix;


Code:
==6863== 684 errors in context 9 of 20:
==6863== Invalid write of size 4
==6863==    at 0x401775: quantize (in /home/panagiotis/Desktop/pthread-octree-code-0.04/test_octree)
==6863==    by 0x4E40709: start_thread (pthread_create.c:333)
==6863==  Address 0x7f2a040 is 0 bytes after a block of size 12,582,912 alloc'd
==6863==    at 0x4C2DBB6: malloc (vg_replace_malloc.c:299)
==6863==    by 0x400C74: main (in /home/panagiotis/Desktop/pthread-octree-code-0.04/test_octree)
==6863==

Συμβαίνει όταν βάζω πολλά threads(2048) δεν ξέρω τι να κάνω :(


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: fibonacci on November 05, 2016, 19:23:29 pm
μια βοήθεια παιδιά... μπορεί να δώσει κανένας ένα tip για να κάνω compile και να τρέξω το test_octree.c  με εντολές στο terminal Linux ; δεν αναγνωρίζει την αναφορά στις συναρτήσεις που περιέχονται στο utils.h .....   

Ευχαριστώ


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: lodi on November 05, 2016, 19:42:43 pm
μια βοήθεια παιδιά... μπορεί να δώσει κανένας ένα tip για να κάνω compile και να τρέξω το test_octree.c  με εντολές στο terminal Linux ; δεν αναγνωρίζει την αναφορά στις συναρτήσεις που περιέχονται στο utils.h .....   

Ευχαριστώ


μπήκες στο directory που πρέπει και πάτησες make για να δράσει το makefile και να σου κάνει εκτελέσιμο ;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: fibonacci on November 05, 2016, 20:48:22 pm
Όχι δεν το είχα κάνει , δεν ήξερα ότι τόσο απλό και προσπαθούσα άλλες τεχνικές ... Ευχαριστώ πολύ ..

Και κάτι ακόμα. Μήπως γνωρίζεις τι είναι ο diades να μου πεις; το είδα σε παλαιότερες συζητήσεις όπου αναφέρεται συχνά


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: lodi on November 05, 2016, 21:05:07 pm
Όχι δεν το είχα κάνει , δεν ήξερα ότι τόσο απλό και προσπαθούσα άλλες τεχνικές ... Ευχαριστώ πολύ ..

Και κάτι ακόμα. Μήπως γνωρίζεις τι είναι ο diades να μου πεις; το είδα σε παλαιότερες συζητήσεις όπου αναφέρεται συχνά

Diades ? Προσωπικά, δεν μου λέει κάτι :/ :)


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: mtzikara on November 05, 2016, 23:10:48 pm
ειναι ο σερβερ του πανεπιστημιου στον οποιο θα μπεις για να τρεξεις τον κωδικα, ωστε να εχεις αποτελεσματα απο εναν υπερυπολογιστη, αυτα αν θυμαμαι καλα...


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: TrueForce on November 05, 2016, 23:41:15 pm
ειναι ο σερβερ του πανεπιστημιου στον οποιο θα μπεις για να τρεξεις τον κωδικα, ωστε να εχεις αποτελεσματα απο εναν υπερυπολογιστη, αυτα αν θυμαμαι καλα...
;D ;D ;D ;D
υπερυπολογιστή λέει
 ;D ;D ;D ;D


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Terzos on November 06, 2016, 19:01:00 pm
Γενικά με μια πρώτη ματιά στην εργασία καταλαβαίνω ότι παραλληλοποίηση γίνεται να γίνει σε διάφορα επίπεδα.
π.χ. για την compute_hash_codes μπορούμε να σπάσουμε την X σε ίσα κομμάτια και να καλείται η compute_hash_codes για αυτά τα κομμάτια από διαφορετικά threads.
Επίσης γίνεται να την σπάσουμε μέσα στην compute_hash_codes πριν κληθεί η quantize.
Τέλος γίνεται και στο επίπεδο της quantize.
Προτιμάμαι κάτι από τα παραπάνω ή είναι θέμα γούστου;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: fibonacci on November 07, 2016, 21:40:34 pm
 for(i=0; i<N; i++){
    for(j=0; j<DIM; j++){
   
      codes[i*DIM + j] = compute_code(X[i*DIM + j], low[j], step);
    }
  }

Η εντολή μέσα στο  loop θεωρείται critical section ; Κάθε thread δεν γράφει σε διαφορετική θέση μνήμης κάθε φορά ; Η μεταβλητή codes θα πρέπει να δηλωθεί shared ή private ?


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: lodi on November 07, 2016, 23:35:21 pm
for(i=0; i<N; i++){
    for(j=0; j<DIM; j++){
   
      codes[i*DIM + j] = compute_code(X[i*DIM + j], low[j], step);
    }
  }

Η εντολή μέσα στο  loop θεωρείται critical section ; Κάθε thread δεν γράφει σε διαφορετική θέση μνήμης κάθε φορά ; Η μεταβλητή codes θα πρέπει να δηλωθεί shared ή private ?

όπως το βλέπω δε μου μοιάζει με critical αφού κάθε επανάληψη είναι ανεξάρτητη. άρα για openMP την δηλώνεις shared.
Η μόνη περίπτωση να είναι critical είναι η compute_code() να εξαρτάται από την codes .


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Ancient on November 07, 2016, 23:51:39 pm
Οι μεταβλητές δεν είναι shared by default? Δε νομίζω να χρειάζεται να το δηλώσεις, από τη στιγμή που οι επαναλήψεις τροποποιούν διαφορετικές θέσεις μνήμης.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: lodi on November 08, 2016, 00:17:32 am
Οι μεταβλητές δεν είναι shared by default? Δε νομίζω να χρειάζεται να το δηλώσεις, από τη στιγμή που οι επαναλήψεις τροποποιούν διαφορετικές θέσεις μνήμης.

ναι! shared by default, απλά το επισήμανα


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: gkouziik on November 08, 2016, 00:25:47 am
Τα διαγράμματα που θα κάνουμε τι πρέπει να απεικονίζουν ; 
Ματλαμπ θα χρειαστεί μόνο για τον σχεδιασμό διαγραμμάτων στο τέλος?


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: svart on November 08, 2016, 20:43:48 pm
αρχείου ~/.bash_profile


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: nikoscha on November 08, 2016, 21:04:50 pm
Έχουμε το δικαίωμα να αλλάξουμε κομμάτια του κώδικα ή απλά πρέπει να προσθαίσουμε τις εντολές για παραλληλοποίηση ;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: orestisf on November 08, 2016, 22:01:09 pm
εχεις


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: elefmylo on November 08, 2016, 22:19:30 pm
εχεις

Κάτσε κάνε εργασία ΤΗΧ ρε και άστα αυτά!


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Delaney on November 08, 2016, 22:32:06 pm
Mετά το πρώτο compile που θα γίνει με την εντολή make, τρέχουμε το ./test_octree.. Δίπλα στο εκτελέσιμο πρέπει να περάσουμε 5 παραμέτρους. Οι παράμετροι αυτοί είναι ο αριθμός των σωματιδίων Ν, ο distribution code, το όριο του πληθυσμού, οι επαναλήψεις και τέλος το μέγιστο βάθος. Τι παραμέτρους δώσατε? Το όριο του πληθυσμού και το μέγιστο βάθος δίνονται από την εκφώνηση, οκ,  αλλά για τα άλλα 3 τι βάλατε?


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: nikoscha on November 08, 2016, 23:08:31 pm
Mετά το πρώτο compile που θα γίνει με την εντολή make, τρέχουμε το ./test_octree.. Δίπλα στο εκτελέσιμο πρέπει να περάσουμε 5 παραμέτρους. Οι παράμετροι αυτοί είναι ο αριθμός των σωματιδίων Ν, ο distribution code, το όριο του πληθυσμού, οι επαναλήψεις και τέλος το μέγιστο βάθος. Τι παραμέτρους δώσατε? Το όριο του πληθυσμού και το μέγιστο βάθος δίνονται από την εκφώνηση, οκ,  αλλά για τα άλλα 3 τι βάλατε?

αριθμο σωματιδίων βάζεις τιμές μεταξύ 2^20 και 2^25 οπως λεει η εκφωνηση, distribution code ειναι 0 για κυβο και 1 για σφαιρα και επαναλήψεις εγώ έβαλα γύρω στις 5 για να έχω μια καλύτερη εικόνα


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: ΒruteΦorce_attack on November 09, 2016, 02:17:48 am
κάνω make αλλά δεν μου δημιουργεί ένα εκτελέσιμο αρχείο (.exe) επομένως όταν προσπαθώ να τρέξω κανονικά ./test_octree (παράμετροι) δεν γίνεται τίποτα. Γίνεται κάποιος να εξηγήσει τα βήματα που πρέπει να ακολουθήσουμε για να κάνουμε το παραλληλοποιημένο πρόγραμμά μας εκτελέσιμο;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: dimi93gr on November 09, 2016, 12:17:30 pm
κάνω make αλλά δεν μου δημιουργεί ένα εκτελέσιμο αρχείο (.exe) επομένως όταν προσπαθώ να τρέξω κανονικά ./test_octree (παράμετροι) δεν γίνεται τίποτα. Γίνεται κάποιος να εξηγήσει τα βήματα που πρέπει να ακολουθήσουμε για να κάνουμε το παραλληλοποιημένο πρόγραμμά μας εκτελέσιμο;

Αρχικα δεν υπαρχουν .exe αρχεια αν είσαι σε Unix.

Βεβαιωσου οτι το make δεν βγαζει καποιο error.

Αν και υποψιαζομαι οτι δεν εχεις κανει αυτό :

gcc test.c -o test

Ετσι εκτελείς ./test. Αν δεν βαλεις -ο τοτε το εκτελέσιμο ειναι στο a.out.

Και εννοείται chmod για να εχεις δικαιωματα να το τρέξεις .


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: fibonacci on November 09, 2016, 13:32:59 pm
αρχείου ~/.bash_profile

Βρήκα 2 .bash_profile αρχεία και πρόσθεσα και στα 2 στο τέλος τη γραμμή αλλά πάλι το Cygwin δεν αναγνωρίζει τα keywords  της Cilk


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: dimi93gr on November 09, 2016, 13:41:53 pm
Βρήκα 2 .bash_profile αρχεία και πρόσθεσα και στα 2 στο τέλος τη γραμμή αλλά πάλι το Cygwin δεν αναγνωρίζει τα keywords  της Cilk

Πού θες να τρεξεις cilk ;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: fibonacci on November 09, 2016, 13:45:06 pm
Πού θες να τρεξεις cilk ;
Τι εννοείς που θέλω; Από το terminal του Cygwin θέλω να κάνω compile το project και συνέχεια να δώσω εντολή για να το τρέξω. Δεν δουλέυω σε κάποιο  IDE αν αυτό εννοείς ..


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: dimi93gr on November 09, 2016, 13:49:54 pm
Τι εννοείς που θέλω; Από το terminal του Cygwin θέλω να κάνω compile το project και συνέχεια να δώσω εντολή για να το τρέξω. Δεν δουλέυω σε κάποιο  IDE αν αυτό εννοείς ..

Τοπικά στο pc σου εννοώ η στο diades ;
Για να μην μακρυλογώ, η cilk θελει installation


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: fibonacci on November 09, 2016, 13:56:34 pm
Τοπικά στο pc σου εννοώ η στο diades ;
Για να μην μακρυλογώ, η cilk θελει installation
Άρε δεν φτάνει αυτό που λέει στο ετήμμυ στην περιγραφή εργασίας


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: dimi93gr on November 09, 2016, 14:01:54 pm
Άρε δεν φτάνει αυτό που λέει στο ετήμμυ στην περιγραφή εργασίας


Υποψιάζομαι οτι θα ισχυει για το diades.
Σε καθε περιπτωση κατεβαστε μια εκδοση linux,οτι αγαπατε, και καντε τις εργασιες απο εκεί. Μπορειτε να κατεβάσετε και τον icc compiler απο την Intel.
Και αν δεν θελετε να την εγκαταστησετε μονιμα καντε το με virtualbox


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: nikoscha on November 10, 2016, 00:30:14 am
Στην Radix sort καταφερε κανεις να παραλληλοποιήσει κάτι παραπάνω εκτος την τελευταια for με openmp?


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: elefmylo on November 10, 2016, 00:47:25 am
Στην Radix sort καταφερε κανεις να παραλληλοποιήσει κάτι παραπάνω εκτος την τελευταια for με openmp?

Εγώ προσπάθησα τις προηγούμενες με atomic/critical/( μια υλοποίηση με locks) αλλά οι χρόνοι πο πήρα ήταν πολύ κακοί!
Btw αν δε κάνεις μια από τις παραπάνω τεχνικές και βάλεις απλώς "pragma omp for", τότε δεν περνάει τα τεστ.
Οπότε φαντάζομαι δεν τις παραλληλοποιείς? :-\


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: nikoscha on November 10, 2016, 04:17:53 am
Εγώ προσπάθησα τις προηγούμενες με atomic/critical/( μια υλοποίηση με locks) αλλά οι χρόνοι πο πήρα ήταν πολύ κακοί!
Btw αν δε κάνεις μια από τις παραπάνω τεχνικές και βάλεις απλώς "pragma omp for", τότε δεν περνάει τα τεστ.
Οπότε φαντάζομαι δεν τις παραλληλοποιείς? :-\

Ναι σου βγαζει fail . Μονο τν τελευταια αν παραλληλοποιησεις σου βγαζει pass


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Niri on November 10, 2016, 05:05:44 am
Ξέρει κανείς αν υπάρχει πρόβλημα με την OpenMp στη Cygwin όταν προσπαθείς να παραλληλοποιήσεις αναδρομική συνάρτηση;
Η openmp μου τρέχει κανονικά σε όλες τις συναρτήσεις εκτός απο τη radix sort οπότε φαντάζομαι οτι το πρόβλημα έχει να κάνει με την αναδρομικότητα της συνάρτησης.
Δοκίμασα να βάλω και μικρό αριθμό threads όμως δεν άλλαξε κάτι. Έχει καταφέρει κανεις να κάνει τη radix sort να δουλέξει με openmp στη cygwin?


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: ReMi0s on November 11, 2016, 01:22:04 am
έχω μια απορία,

είχα κάνει την radix sort με pthread για σταθερά 8 threads.
αφού την άλλαξα( άλλαξα λίγο και τον τρόπο που υπολογίζονται τα εκάστοτε Bit) για να τρέχει με οσα threads θέλω, επηρέασε και τον χρόνο της arrangement αρκετά ,προς το καλύτερο.
Το θέμα είναι οτι την data_arrangement δεν την πείραξα παραπάνω, η μόνη αλλαγή έγινε στην radix. ξέρει κανείς τι παίζει, ρωτάω μήπως κάτι πάει πολύ στραβά :P;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: fanaks on November 11, 2016, 01:57:06 am
Κοίτα γενικά με pthread σε όλες μπορείς να κάνεις παραλληλοποίηση,επομένως και στην data_rearrangement,εξάλλου εκτός απο την radix οι άλλες τρεις πάνω κάτω το ίδιο είναι αν κάνεις την μία βγαίνουν και οι άλλες.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: nikoscha on November 11, 2016, 02:14:19 am
Κανα καλό tutorial για cilk plus ?


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: ReMi0s on November 11, 2016, 03:55:54 am
Κοίτα γενικά με pthread σε όλες μπορείς να κάνεις παραλληλοποίηση,επομένως και στην data_rearrangement,εξάλλου εκτός απο την radix οι άλλες τρεις πάνω κάτω το ίδιο είναι αν κάνεις την μία βγαίνουν και οι άλλες.

την έχω κάνει ήδη, απλά λέω μόλις άλλαξα την radix ωστε να την χειρίζονται οσα thread ζητάω, άλλαξε ο χρόνος της arrangement


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: fanaks on November 11, 2016, 12:00:40 pm
Εχεις δοκιμάσει να εκτυπώσεις αποτελέσματα μήπως έχεις κάνει κάπου λάθος και τελικά απλά η data_rearrangement κάνει λιγότερη δουλεία,κοίτα αν τα αποτελέσματα ειναι κομπλέ και έχεις και τους αναμενόμενους χρόνους που περιμένεις τότε όλα καλά,βάλε και καμία printf σε διάφορα σημεία της υλοποίησης σου να δεις αν τρέχει όπως περιμένεις  και αυτό ήταν


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Ser Harry Man on November 11, 2016, 13:09:32 pm
Θέλω λίγο την άποψη σας για την παραλληλοποίηση της radix_sort με pthreads

Εφ' όσον έχει 8 κλήσεις λόγω του for loop, ( MAXBINS = 8 ) αν τις καλούμε όλες με pthreads, έχουμε δημιουργία 8^n
threads οπου n o αριθμός των επιπέδων, το οποίο είναι πάρα πολύ, και ακόμα και στον diades, για πάνω απο 10000
στοιχεία επιστρέφει error 11 , δηλαδή ξεπερνάει τα available threads... Οπότε το μυαλό πάει σε thread pools, δηλαδή να
έχω ένα μέγιστο αριθμό threads, και αν τα φτάσω η συνάρτηση να καλείται σειριακά απο το αρχικό thread.

Όταν όμως συμβαίνει αυτό, άλλες συναρτήσεις καλούν threads, άλλες εκτελούν σειριακά και άλλες κάνουν συνδυασμό
και των δύο, και φυσικά χάνεται το παιχνίδι με τις προσβάσεις των πινάκων και τις μεταβολές των στοιχείων και το test
κάνει fail ( αν και πλέον λύνεται το πρόβλημα των πολλών threads ) .

Το έχω πολυπλέξει πολύ το ζήτημα ή υπάρχει κάτι στη δομή του αλγορίθμου που μπορεί να επιτρέψει thread pooling με αυτόν ή
κάποιον άλλο τρόπο?


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Ancient on November 11, 2016, 17:54:20 pm
Θέλω λίγο την άποψη σας για την παραλληλοποίηση της radix_sort με pthreads

Εφ' όσον έχει 8 κλήσεις λόγω του for loop, ( MAXBINS = 8 ) αν τις καλούμε όλες με pthreads, έχουμε δημιουργία 8^n
threads οπου n o αριθμός των επιπέδων, το οποίο είναι πάρα πολύ, και ακόμα και στον diades, για πάνω απο 10000
στοιχεία επιστρέφει error 11 , δηλαδή ξεπερνάει τα available threads... Οπότε το μυαλό πάει σε thread pools, δηλαδή να
έχω ένα μέγιστο αριθμό threads, και αν τα φτάσω η συνάρτηση να καλείται σειριακά απο το αρχικό thread.

Όταν όμως συμβαίνει αυτό, άλλες συναρτήσεις καλούν threads, άλλες εκτελούν σειριακά και άλλες κάνουν συνδυασμό
και των δύο, και φυσικά χάνεται το παιχνίδι με τις προσβάσεις των πινάκων και τις μεταβολές των στοιχείων και το test
κάνει fail ( αν και πλέον λύνεται το πρόβλημα των πολλών threads ) .

Το έχω πολυπλέξει πολύ το ζήτημα ή υπάρχει κάτι στη δομή του αλγορίθμου που μπορεί να επιτρέψει thread pooling με αυτόν ή
κάποιον άλλο τρόπο?

Κάνεις mute τον αριθμό των threads που τρέχουν, όταν πας να τον μεταβάλλεις?


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: kaspas on November 11, 2016, 23:26:02 pm
Παιδιά ανεξάρτητα από τον αριθμό των workers που βάζω στην cilk οι χρόνοι είναι πάνω κάτω οι ίδιοι. Ξέρει κανείς αν είναι φυσιολογικό αυτό;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: fanaks on November 12, 2016, 00:21:43 am
Τελικά ρε παιδιά με την cilk τι κάνουμε,πως την τρέχουμε στον Διάδη


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: airpap on November 12, 2016, 00:40:11 am
Τελικά ρε παιδιά με την cilk τι κάνουμε,πως την τρέχουμε στον Διάδη

++++++


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: ReMi0s on November 12, 2016, 15:06:30 pm
Θέλω λίγο την άποψη σας για την παραλληλοποίηση της radix_sort με pthreads

Εφ' όσον έχει 8 κλήσεις λόγω του for loop, ( MAXBINS = 8 ) αν τις καλούμε όλες με pthreads, έχουμε δημιουργία 8^n
threads οπου n o αριθμός των επιπέδων, το οποίο είναι πάρα πολύ, και ακόμα και στον diades, για πάνω απο 10000
στοιχεία επιστρέφει error 11 , δηλαδή ξεπερνάει τα available threads... Οπότε το μυαλό πάει σε thread pools, δηλαδή να
έχω ένα μέγιστο αριθμό threads, και αν τα φτάσω η συνάρτηση να καλείται σειριακά απο το αρχικό thread.

Όταν όμως συμβαίνει αυτό, άλλες συναρτήσεις καλούν threads, άλλες εκτελούν σειριακά και άλλες κάνουν συνδυασμό
και των δύο, και φυσικά χάνεται το παιχνίδι με τις προσβάσεις των πινάκων και τις μεταβολές των στοιχείων και το test
κάνει fail ( αν και πλέον λύνεται το πρόβλημα των πολλών threads ) .

Το έχω πολυπλέξει πολύ το ζήτημα ή υπάρχει κάτι στη δομή του αλγορίθμου που μπορεί να επιτρέψει thread pooling με αυτόν ή
κάποιον άλλο τρόπο?

μία λύση αλλα όχι βέλτιστη είναι να τρέχει μία φορά η radix σειριακά και στο σημείο που κάνει recursive για maxbin να καλείς την παράλληλη , που έχει πάλι τον ίδιο κώδικα... Έτσι όμως δημιουργούνται μόνο 8 threads σταθερά. Όταν ρώτησα τον πιτσιάνη μου είπε οτι θέλει να μπορούμε εμείς να αλλάξουμε τα thread


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: fibonacci on November 12, 2016, 19:31:20 pm
Παιδιά είχε κανείς πρόβλημα να κάνει upload αρχεία στο diades για να τα επεξεργαστεί ; Συνδέομαι κάθε φορά κανονικά στον server αλλά κάθε φορά που πάω να εκτελέσω την : 
 
      scp -P 2288 -r path-to-project-directory/ username@diades.ee.auth.gr:path-to-diades/
μου πετάει :

     path-to-project-directory : No such file or directrory
καμιά ιδέα τί μπορεί να κάνω λάθος ;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: fanaks on November 12, 2016, 20:34:55 pm
Στην εντολή εκεί που λέει path-to-project-directory θα γράψεις την διαδρομή στην οποία βρίσκονται τα/το αρχεία/ο σου(το ονομααρχειου.c τελος πάντων) στο cygwin περιβάλλον,και στο path-to-diades γραψε την διαδρομή στο Διάδη στην οποία θες να αποθηκευτούν τα αρχεία σου(τυπικά θα είναι κατι του στιλ /export/home/username οπου το username το ονομα με το οποιο συνδέθηκες ) .Για να κατεβάσεις απο το διάδη απλά γράφεις τα ιδια με ανάποδη σειρά πχ scp -P 2288 -r  username@diades.ee.auth.gr:path-to-diades/ path-to-project-directory/.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: fibonacci on November 13, 2016, 00:14:44 am
Στην εντολή εκεί που λέει path-to-project-directory θα γράψεις την διαδρομή στην οποία βρίσκονται τα/το αρχεία/ο σου(το ονομααρχειου.c τελος πάντων) στο cygwin περιβάλλον,και στο path-to-diades γραψε την διαδρομή στο Διάδη στην οποία θες να αποθηκευτούν τα αρχεία σου(τυπικά θα είναι κατι του στιλ /export/home/username οπου το username το ονομα με το οποιο συνδέθηκες ) .Για να κατεβάσεις απο το διάδη απλά γράφεις τα ιδια με ανάποδη σειρά πχ scp -P 2288 -r  username@diades.ee.auth.gr:path-to-diades/ path-to-project-directory/.

$ scp -P 2288 -r /cygdrive/c/Users/ELSE/Octree_PThreads username@diades.ee.auth.gr:/export/home/username/

/cygdrive/c/Users/ELSE/Octree_PThreads: No such file or directory




Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Nerevar on November 13, 2016, 00:51:18 am
Βάλτε Filezilla..


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Valkyrie on November 13, 2016, 02:30:39 am
'Ενα κόπι-πάστε από το Makefile για υλοποιήση με cilk σε linux plzzzzz ......


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: fanaks on November 13, 2016, 14:04:16 pm
$ scp -P 2288 -r /cygdrive/c/Users/ELSE/Octree_PThreads username@diades.ee.auth.gr:/export/home/username/

/cygdrive/c/Users/ELSE/Octree_PThreads: No such file or directory



Κοιτα οταν εγκαθιστάς το cygwin σε ρωτάει που θες να ειναι η ρίζα και απο προεπιλογή ειναι ο φάκελος Cygwin64.Βρες αυτον τον φάκελο δημιούργησε ενα νεο φάκελο(πχ newfolder) μέσα σε αυτον και πέρνα μέσα τα αρχεία σου.Μετα απλά γραψε $ scp -P 2288 -r /newfolder username@diades.ee.auth.gr:/export/home/username/ και θα ανεβει ο φακελος ολοκληρος.Προφανώς την εντολή δεν την γράφεις οταν εισαι συνδεδεμένος στο διαδη.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: fibonacci on November 13, 2016, 14:50:31 pm
Κοιτα οταν εγκαθιστάς το cygwin σε ρωτάει που θες να ειναι η ρίζα και απο προεπιλογή ειναι ο φάκελος Cygwin64.Βρες αυτον τον φάκελο δημιούργησε ενα νεο φάκελο(πχ newfolder) μέσα σε αυτον και πέρνα μέσα τα αρχεία σου.Μετα απλά γραψε $ scp -P 2288 -r /newfolder username@diades.ee.auth.gr:/export/home/username/ και θα ανεβει ο φακελος ολοκληρος.Προφανώς την εντολή δεν την γράφεις οταν εισαι συνδεδεμένος στο διαδη.

Eυχαριστώ , βοήθησες


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: fibonacci on November 13, 2016, 17:18:58 pm
στην radix sort που λέει :
    // scan prefix (must change this code) 
είναι απαραίτητο να κάνουμε αλλαγή του κώδικα στην περιοχή αυτή ;  έχω  δοκιμάσει πολλούς τρόπους για να βελτιστοποιήσω τον χρόνο της συνάρτησης αυτής με χρήση OpenMP αλλά πάντα κάτι δεν πάει καλά ... σκέφτομαι μήπως ο λόγος είναι ότι δν έχω ψάξει να αλλάξω αυτό το το κομμάτι του κώδικα.

Κάποια ιδέα ή παρατήρηση ;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Ancient on November 13, 2016, 17:25:57 pm
στην radix sort που λέει :
    // scan prefix (must change this code) 
είναι απαραίτητο να κάνουμε αλλαγή του κώδικα στην περιοχή αυτή ;  έχω  δοκιμάσει πολλούς τρόπους για να βελτιστοποιήσω τον χρόνο της συνάρτησης αυτής με χρήση OpenMP αλλά πάντα κάτι δεν πάει καλά ... σκέφτομαι μήπως ο λόγος είναι ότι δν έχω ψάξει να αλλάξω αυτό το το κομμάτι του κώδικα.

Κάποια ιδέα ή παρατήρηση ;

Αυτό το κομμάτι δε μπορεί να γίνει παράλληλο.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: fanaks on November 13, 2016, 19:28:35 pm
Έτρεξε κανείς cilk στον Διαδη;Μου βγάζει το εξής μήνυμα

catastrophic error: could not open source file "cilk/cilk.h"
  #include <cilk/cilk.h>
                        ^

compilation aborted for hello.c (code 4)
Ξέρεις κανείς τι παίζει;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: tpvagenas on November 14, 2016, 12:36:28 pm
Ξέρει κανείς γιατί όταν βάζω στην cilk παραπάνω από 64 workers με την εντολή __cilkrts_set_param("nworkers",num_threads); πηγαίνει από μόνο του στο default δηλαδή 4?
Και επιπλέον με την εντολή __cilkrts_get_total_workers() που την τρέχω στην octree πριν απο τις συναρτήσεις μου βγάζει για workers παραπάνω δηλαδή αν βάλω 16 θα μου δείξει 47 αυτο σημαίνει ότι τρέχω παραπάνω threads απο αυτά που θέλω?


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: kaspas on November 14, 2016, 14:01:02 pm
Βγαίνεις out of range


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Vlassis on November 14, 2016, 16:09:21 pm
βαζω αυτην την εντολη στην openMP  omp_set_num_threads(THREADS); και οταν τρεχω το make μου βγαζει: test_octree.c:(.text.startup+0x28a): undefined reference to `omp_set_num_threads'

ξερεις κανεις γιατι;  ::)

ωπα επρεπε να βαλω το -fopenmp στο makefile ε;  :D


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Ancient on November 14, 2016, 16:37:12 pm
Ξέρει κανείς γιατί όταν βάζω στην cilk παραπάνω από 64 workers με την εντολή __cilkrts_set_param("nworkers",num_threads); πηγαίνει από μόνο του στο default δηλαδή 4?
Και επιπλέον με την εντολή __cilkrts_get_total_workers() που την τρέχω στην octree πριν απο τις συναρτήσεις μου βγάζει για workers παραπάνω δηλαδή αν βάλω 16 θα μου δείξει 47 αυτο σημαίνει ότι τρέχω παραπάνω threads απο αυτά που θέλω?

Στον Διάδη μου επιτρέπει μέχρι και 128 threads,  από 256 και πάνω το αλλάζει μόνο του στα 8. Φαντάζομαι θα είναι κάποιο option που "προλαμβάνει" το να βάλεις πολλά threads σε σχέση με τους επεξεργαστές.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Nerevar on November 14, 2016, 16:38:34 pm
βαζω αυτην την εντολη στην openMP  omp_set_num_threads(THREADS); και οταν τρεχω το make μου βγαζει: test_octree.c:(.text.startup+0x28a): undefined reference to `omp_set_num_threads'

ξερεις κανεις γιατι;  ::)

Εκανες compile με παράμετρο το -fopenmp?


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Ροζ συννεφάκι on November 14, 2016, 19:20:38 pm
Παιδιά για το openMP δε χρειάζεται να κατεβάσω κάποιον compiler ή κατι τετοιο όπως στο cilk ετσι? αρκεί το -fopenmp στο makefile


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: fibonacci on November 14, 2016, 20:13:04 pm
Παιδιά για το openMP δε χρειάζεται να κατεβάσω κάποιον compiler ή κατι τετοιο όπως στο cilk ετσι? αρκεί το -fopenmp στο makefile
Ναι


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: georgkonst on November 14, 2016, 22:25:57 pm
Εγώ προσπάθησα τις προηγούμενες με atomic/critical/( μια υλοποίηση με locks) αλλά οι χρόνοι πο πήρα ήταν πολύ κακοί!
Btw αν δε κάνεις μια από τις παραπάνω τεχνικές και βάλεις απλώς "pragma omp for", τότε δεν περνάει τα τεστ.
Οπότε φαντάζομαι δεν τις παραλληλοποιείς? :-\

Όσο δοκίμασα και εγώ τις memcpy kai τις swap είτε γινόντουσαν οι χρόνοι μου χάλια ή δε περνούσα τα τεστ (μάλλον θα χρειαζόταν atomic/critical), νομίζω θα μείνω μόνο στη τελευταία, ούτως ή άλλως δε κερδίζεις πάρα πολλά από τη radix


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Andromedas on November 14, 2016, 22:42:11 pm
Γενικά η διαφοροποίηση της recursive radix sort σε p-threads με openmp ή cilk είναι σίγουρα ότι λόγω της αναδρομής γίνεται καλά μόνο με p-threads. Τώρα υπάρχει παραλλαγή της radix sort και παραλληλοποίηση με την λογική scan prefix όπου θα δουλεύει καλύτερα σε openmp ή cilk . Δεν νομίζω ότι είναι υποχρεωτικό για την εργασία πάντως. (Αν ψηθεί, κανείς ας μου στείλει pm)


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: BADBANE on November 15, 2016, 04:37:11 am
Μανκες στον διαδη τι τεστ πρεπει να τρεξουμε και με τι αριθμους;;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: ReMi0s on November 15, 2016, 08:56:55 am
στην υλοποίηση με pthread έχει καταφέρει κανείς να παραλληλοποιήσει την radix_sort για n threads;
έχω δοκιμάσει 30 διαφορετικά πράγματα και είτε  παίρνω κάποιο error είτε fail στα test
αυτό που με προβληματίζει περισσότερο είναι η τελευταία δοκιμή όπου αφού τρέξει η radix μία φορά σειριακά έπειτα δημιουργώ 8 thread και καλώ την παράλληλη. Αφού τρέξει η παράλληλη όπως η κανονική έκδοση εξετάζω αν (activethreads<NumThreads) και αν γίνεται δημιουργώ καινούριο thread αλλιώς συνεχίζει σειριακά

τις μισές φορές μου βγάζει σωστά αποτελέσματα, τις μισές λάθος και κάποιες ελάχιστες φορές segmentation fault αλλα όχι πάντα.

κανένα καλό παλικάρι να προσφέρει καμιά  ιδέα περι αυτού ή κάποια άλλη κατεύθυνση;

Ευχαριστώ


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Ser Harry Man on November 15, 2016, 12:12:15 pm
Κάνεις mute τον αριθμό των threads που τρέχουν, όταν πας να τον μεταβάλλεις?

Mutex εννοείται, ναι.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Ser Harry Man on November 15, 2016, 12:13:42 pm
μία λύση αλλα όχι βέλτιστη είναι να τρέχει μία φορά η radix σειριακά και στο σημείο που κάνει recursive για maxbin να καλείς την παράλληλη , που έχει πάλι τον ίδιο κώδικα... Έτσι όμως δημιουργούνται μόνο 8 threads σταθερά. Όταν ρώτησα τον πιτσιάνη μου είπε οτι θέλει να μπορούμε εμείς να αλλάξουμε τα thread


Ποιά είναι η βέλτιστη λοιπόν ? Και εφ'όσον είναι recursive γιατί θα βγούν μόνο 8 ?


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Ser Harry Man on November 15, 2016, 12:16:51 pm
στην radix sort που λέει :
    // scan prefix (must change this code) 
είναι απαραίτητο να κάνουμε αλλαγή του κώδικα στην περιοχή αυτή ;  έχω  δοκιμάσει πολλούς τρόπους για να βελτιστοποιήσω τον χρόνο της συνάρτησης αυτής με χρήση OpenMP αλλά πάντα κάτι δεν πάει καλά ... σκέφτομαι μήπως ο λόγος είναι ότι δν έχω ψάξει να αλλάξω αυτό το το κομμάτι του κώδικα.

Κάποια ιδέα ή παρατήρηση ;

Αν δείς επάνω έχει 2 συναρτήσεις swap που δεν έχει χρησιμοποιήσει, ενώ στο scan prefix κάνει στην ουσία swap. Ipso facto , ήταν note για τον εαυτό του. Όπως είπαν κ οι άλλοι, δεν μπορείς να παραλληλοποιήσεις κάτι εκεί.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Ser Harry Man on November 15, 2016, 12:21:24 pm
στην υλοποίηση με pthread έχει καταφέρει κανείς να παραλληλοποιήσει την radix_sort για n threads;
έχω δοκιμάσει 30 διαφορετικά πράγματα και είτε  παίρνω κάποιο error είτε fail στα test
αυτό που με προβληματίζει περισσότερο είναι η τελευταία δοκιμή όπου αφού τρέξει η radix μία φορά σειριακά έπειτα δημιουργώ 8 thread και καλώ την παράλληλη. Αφού τρέξει η παράλληλη όπως η κανονική έκδοση εξετάζω αν (activethreads<NumThreads) και αν γίνεται δημιουργώ καινούριο thread αλλιώς συνεχίζει σειριακά

τις μισές φορές μου βγάζει σωστά αποτελέσματα, τις μισές λάθος και κάποιες ελάχιστες φορές segmentation fault αλλα όχι πάντα.

κανένα καλό παλικάρι να προσφέρει καμιά  ιδέα περι αυτού ή κάποια άλλη κατεύθυνση;

Ευχαριστώ

Και εγώ πιστεύω οτι κάνω πάνω κάτω το ίδιο με εσένα. Για να μην πολυλογώ, έλεγξε οτι όλα τα threads κάνουν join σωστά και δεν τερματίζει το αρχικό πρίν κάνουν όλα τη δουλειά τους.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: fibonacci on November 15, 2016, 16:36:01 pm
Και εγώ πιστεύω οτι κάνω πάνω κάτω το ίδιο με εσένα. Για να μην πολυλογώ, έλεγξε οτι όλα τα threads κάνουν join σωστά και δεν τερματίζει το αρχικό πρίν κάνουν όλα τη δουλειά τους.

Στην παραλληλοποίηση με Pthreads της αναδρομικής κλήσης ορίζετε ως init_function των threads την ίδια την συνάρτηση truncated_radix_sort() ή φτιάχνεται με καινουρια η οποία καλεί για κάθε καινουριο thread την truncated_radix_sort() ;  εγώ επιλέγω το δεύτερο για να μπορώ να περάσω τα ορίσματα με ένα struct .

Επίσης την pthreads_join() την τρέχεται για κάθε ανδρομική κλήση μετά την επαναληπτική δημιουργία των threads ;
 Γιατί σε μένα φτάνει στην radix_sort η εκτέλεση του προγράμματος αυξάνεται ραγδαία ο αριθμός των νημάτων του συστήματος , η χρήση cpu φτάνει στο 100% για λίγο και μετά με πετάει από την εκτέλεση του προγράμματος χωρίς κανένα αποτέλεσμα

Ελπίζω να ήμουν κατατοπιστικός


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: ReMi0s on November 15, 2016, 18:07:58 pm
Ποιά είναι η βέλτιστη λοιπόν ? Και εφ'όσον είναι recursive γιατί θα βγούν μόνο 8 ?
η βέλτιστη θα ήταν φαντάζομαι να δημιουργούνται όσα thread ζητάς απο το πληκτρολόγιο. Το λέω γιατί ο πιτσίανης όταν είπα οτι την έκανα με σταθερά thread δεν του άρεσε.
Επίσης βγαίνουμ μόνο 8 γιατί τα δημιουργείς μέσα στην main και έπειτα καλείς συνέχεια την παραληλοποιημένη της.Μόνο μια φορά θα τρέχει η main
Βέβαια αυτό είναι μία ιδέα, υπάρχουν πολλές...

Και εγώ πιστεύω οτι κάνω πάνω κάτω το ίδιο με εσένα. Για να μην πολυλογώ, έλεγξε οτι όλα τα threads κάνουν join σωστά και δεν τερματίζει το αρχικό πρίν κάνουν όλα τη δουλειά τους.
το ελέγχω αυτό, γιατί στην αρχή είχα θέμα και μου έβγαζε error η join. Βέβαια όταν κανει fail κάνει για πολύ μιικρή διαφορά δλδ λείπουν λίγα σωματίδια απο τα N που είχα επιλέξει. Ίσως είναι εκεί το θέμα όντως.

Στην παραλληλοποίηση με Pthreads της αναδρομικής κλήσης ορίζετε ως init_function των threads την ίδια την συνάρτηση truncated_radix_sort() ή φτιάχνεται με καινουρια η οποία καλεί για κάθε καινουριο thread την truncated_radix_sort() ;  εγώ επιλέγω το δεύτερο για να μπορώ να περάσω τα ορίσματα με ένα struct .

Επίσης την pthreads_join() την τρέχεται για κάθε ανδρομική κλήση μετά την επαναληπτική δημιουργία των threads ;
 Γιατί σε μένα φτάνει στην radix_sort η εκτέλεση του προγράμματος αυξάνεται ραγδαία ο αριθμός των νημάτων του συστήματος , η χρήση cpu φτάνει στο 100% για λίγο και μετά με πετάει από την εκτέλεση του προγράμματος χωρίς κανένα αποτέλεσμα

Ελπίζω να ήμουν κατατοπιστικός

εγώ κάνω μια παράλληλη συνάρτηση και καλώ συνέχεια αυτή, είτε με pthread_create, είτε με το όνομα της.

Το join το κάνω στην truncated..


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: nikoscha on November 15, 2016, 18:46:56 pm
Γιατί όταν ανεβάζω thread πάνω απο 8 οι χρόνοι αρχίζουν να χειροτερεύουν;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Kthulu on November 15, 2016, 19:51:33 pm
Γιατι λογικα ο επεξεργαστης σου εχει 8 threads.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: fibonacci on November 15, 2016, 20:27:54 pm
Με την omp_set_num_threads() ορίζω το  αριθμό threads προς χρηση για την επόμενη παράλληλη περιοχή ή γενικά για την εκτέλεση ολου του προγράμματος; ... Δηλαδή αν την καλέσω πριν την παραλληλοποιημένη for στην οποία κάνω αναδρομική κλήση  θα μου ορίσει το αριθμό των thread που θα τρέξουν την αναδρομή ή θα μου επιβάλει έναν συνολικό αριθμό threads που μπορώ να χρησιμοποιήσω για οποιαδήποτα for σε κάποια κλήση αναδρομής ;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: ReMi0s on November 16, 2016, 02:17:04 am
παιδιά την βοήθεια σας λίγο.
θέλω να έχω μία global μεταβλητή int active_threads
και οταν την αλλάζω μέσα σε συναρτήσεις να αλλάζει γενικά η τιμή της και όχι μόνο στην συνάρτηση αυτή.
αμα την ορίσω απλά έτσι δεν γίνεται.
πρέπει να το κάνω με pointer αλλα δεν θυμάμαι Tongue
κάποιος βοήθεια;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Vlassis on November 16, 2016, 03:01:02 am
παιδιά την βοήθεια σας λίγο.
θέλω να έχω μία global μεταβλητή int active_threads
και οταν την αλλάζω μέσα σε συναρτήσεις να αλλάζει γενικά η τιμή της και όχι μόνο στην συνάρτηση αυτή.
αμα την ορίσω απλά έτσι δεν γίνεται.
πρέπει να το κάνω με pointer αλλα δεν θυμάμαι Tongue
κάποιος βοήθεια;
δεν ξερω αν καταλαβα ακριβως τι θες, εγω ορισα μια μεταβλητη threads global εξω απο τη main στο αρχειο test_octree.c, στην οποια εχω δωσει default τιμη αλλα και της δινω την δυνατοτητα να αλλαξει τιμη μεσα στη συναρτηση
και απ οτι βλεπω, πιανει σε ολες τις συναρτησεις η αλλαγη της τιμης


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: georgkonst on November 16, 2016, 12:01:12 pm
Καλημέρα,

Έχει συναντήσει κανείς στη παραλληλοποίηση της radix_sort.c με pthreads error στην memcpy λόγω overlap? Αν ναι πως το φτιαχνω?  Aυτό έχει σαν αποτέλεσμα στην ίδια γραμμή να έχω "Invalid read of size 1" το οποίο εν τέλει κρασάρει το πρόγραμμα. Το error είναι "access not within mapped region"

Επιπλέον έχω warnings από το valgrind ότι χρησιμοποιώ uninitialized values, πως γίνεται αυτό αν τις περνάω όλες από την test_octree αρχικοποιημένες μέσω δομής αρχικοποιημένες; Το θέμα αυτό υπάρχει με τις pointer μεταβλητές που είναι πίνακες.

Για πείτε  ;D ;D ;D


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: unfo on November 16, 2016, 14:37:51 pm
στη συναρτηση read_data πως περνατε τα ορισματα για να τα δεχτει ?? δεν μπορω να καταλαβω τι κανω λαθος εγω !


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: kaspas on November 16, 2016, 14:41:29 pm
Καλημέρα,

Έχει συναντήσει κανείς στη παραλληλοποίηση της radix_sort.c με pthreads error στην memcpy λόγω overlap? Αν ναι πως το φτιαχνω?  Aυτό έχει σαν αποτέλεσμα στην ίδια γραμμή να έχω "Invalid read of size 1" το οποίο εν τέλει κρασάρει το πρόγραμμα. Το error είναι "access not within mapped region"

Επιπλέον έχω warnings από το valgrind ότι χρησιμοποιώ uninitialized values, πως γίνεται αυτό αν τις περνάω όλες από την test_octree αρχικοποιημένες μέσω δομής αρχικοποιημένες; Το θέμα αυτό υπάρχει με τις pointer μεταβλητές που είναι πίνακες.

Για πείτε  ;D ;D ;D
Σε εμένα όταν συνέβαινε αυτό κάποιος pointer έβλεπε λάθος. Δες αν έχεις καλά τους δείκτες στους πίνακες.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: tpvagenas on November 16, 2016, 14:49:56 pm
Προσπαθώ να κάνω την υλοποίηση της radix_sort σε openmp και μου βγάζει σφάλμα libgomp: Thread creation failed: Resource temporarily unavailable. Το βγάζει μετά απο κάποιο όριο στο Ν . Ξέρει κανείς γιατί συμβαίνει αυτό?


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: ReMi0s on November 16, 2016, 16:31:03 pm
παιδιά για την cilk όταν βάζετε cilk_for στην hashcodes παίρνετε και εσείς χάλια χρόνους;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: georgkonst on November 16, 2016, 17:27:34 pm
Σε εμένα όταν συνέβαινε αυτό κάποιος pointer έβλεπε λάθος. Δες αν έχεις καλά τους δείκτες στους πίνακες.

 
Code:
     args[i].morton_codes= morton_codes;
      args[i].sorted_morton_codes= sorted_morton_codes;
      args[i].permutation_vector=permutation_vector;
      args[i].index = index;
      args[i].level_record = level_record;
      args[i].size = size;
      args[i].population_threshold = population_threshold;
      args[i].sft = sft - 3;
      args[i].lv= lv+1;
      args[i].offset = offset;
      pthread_create(&threads[i], NULL, truncated_radix_sort,(void *)&args[i]); 
 
Έτσι το κάνω εγώ, δε βλέπω κάτι λάθος με το πως περνάω τις τιμές. Έχω την εντύπωση ότι κάπως πρέπει να αλλάξω τις memcpy πιο πάνω αλλά δεν είμαι σίγουρος πως

Code:
memcpy(permutation_vector, index, (N)*sizeof(unsigned int)); // Copy the pernutation vector
memcpy(sorted_morton_codes, morton_codes, (N)*sizeof(unsigned long int)); // Copy the Morton codes


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: ReMi0s on November 16, 2016, 17:46:10 pm
Code:
     args[i].morton_codes= morton_codes;
      args[i].sorted_morton_codes= sorted_morton_codes;
      args[i].permutation_vector=permutation_vector;
      args[i].index = index;
      args[i].level_record = level_record;
      args[i].size = size;
      args[i].population_threshold = population_threshold;
      args[i].sft = sft - 3;
      args[i].lv= lv+1;
      args[i].offset = offset;
      pthread_create(&threads[i], NULL, truncated_radix_sort,(void *)&args[i]); 
 
Έτσι το κάνω εγώ, δε βλέπω κάτι λάθος με το πως περνάω τις τιμές. Έχω την εντύπωση ότι κάπως πρέπει να αλλάξω τις memcpy πιο πάνω αλλά δεν είμαι σίγουρος πως

Code:
memcpy(permutation_vector, index, (N)*sizeof(unsigned int)); // Copy the pernutation vector
memcpy(sorted_morton_codes, morton_codes, (N)*sizeof(unsigned long int)); // Copy the Morton codes

αυτό ειναι λάθος νομίζω.. για να καλέσεις πολλά thread πρεπει να σπάσεις καθε πίνακα σε κομμάτια..
ετσι αφού έχεις ορίζει τα offset και τα size
 args.morton_codes= &morton_codes[offset];
      args.sorted_morton_codes= &sorted_morton_codes[offset];
      args.permutation_vector=&permutation_vector[offset];
      args.index = &index[offset];
      args.level_record = &level_record[offset];
      args.size = size;
      args.population_threshold = population_threshold;
      args.sft = sft - 3;
      args.lv= lv+1;
      pthread_create(&threads, NULL, truncated_radix_sort,(void *)&args);


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: ReMi0s on November 16, 2016, 17:50:11 pm
Παιδιά μπορέι κάποιος να εξηγήσει πώς βάζουμε όσα workers θέλουμε για κάθε cilk_for ?
Βρήκα αυτό αλλα λειτουργεί μόνο για την πρώτη συνάρτηση με cilk_for
char str[3];
    sprintf(str,"%d",NUM_THREADS);
    __cilkrts_set_param("nworkers",str);

στην σελίδα της Intel βρηκα οτι πρέπει μετά απο κάθε εκτέλεση cilk_for  για να ξανα τρέξει με όσα threads θέλουμε να βάλεις
__cilkrts_end_cilk();
ωστόσο αυτή την συνάρτηση δεν την αναγνωρίζει, αν και η βιλιοθήκη της είναι ίδια με της
 __cilkrts_set_param("nworkers",str);

τι κάνω λάθος;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: nikoscha on November 16, 2016, 18:26:24 pm
Code:
     args[i].morton_codes= morton_codes;
      args[i].sorted_morton_codes= sorted_morton_codes;
      args[i].permutation_vector=permutation_vector;
      args[i].index = index;
      args[i].level_record = level_record;
      args[i].size = size;
      args[i].population_threshold = population_threshold;
      args[i].sft = sft - 3;
      args[i].lv= lv+1;
      args[i].offset = offset;
      pthread_create(&threads[i], NULL, truncated_radix_sort,(void *)&args[i]); 
 
Έτσι το κάνω εγώ, δε βλέπω κάτι λάθος με το πως περνάω τις τιμές. Έχω την εντύπωση ότι κάπως πρέπει να αλλάξω τις memcpy πιο πάνω αλλά δεν είμαι σίγουρος πως

Code:
memcpy(permutation_vector, index, (N)*sizeof(unsigned int)); // Copy the pernutation vector
memcpy(sorted_morton_codes, morton_codes, (N)*sizeof(unsigned long int)); // Copy the Morton codes

Μεσα στν memcpy δεν πρεπει να βαλεις τις μεταβλητες απλα morton_codes κτλ. Αλλα στην δικια σ περιπτωση πρεπει να δείχνεις στο structure δλδ arg->morton_codes


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: nikoscha on November 16, 2016, 18:28:10 pm
Με pthreads ειναι καλυτερα στην radix_Sort να τρεχει την πρωτη φορα σειριακα και στην συνεχεια να τρέχει παράλληλα ; Δηλαδη καθε φορα που κανει την αναδρομη να δημιουργουνται και τα threads


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: georgkonst on November 16, 2016, 19:08:39 pm
Μεσα στν memcpy δεν πρεπει να βαλεις τις μεταβλητες απλα morton_codes κτλ. Αλλα στην δικια σ περιπτωση πρεπει να δείχνεις στο structure δλδ arg->morton_codes

 
Code:
struct radix_args *one_args = (struct radix_args *) arg;
   unsigned long int *morton_codes = one_args->morton_codes;
   unsigned long int *sorted_morton_codes = one_args->sorted_morton_codes;
   unsigned int *permutation_vector = one_args->permutation_vector;
   unsigned int *level_record = one_args->level_record;
   unsigned int *index = one_args->index;
   int N = one_args->N;
   int population_threshold = one_args->population_threshold;
   int sft =one_args->sft;
   int lv = one_args->lv;
Δημιουργώ πιο πάνω τη δομή και περνάω τις μεταβλητές της σε τοπικές μεταβλητές, οπότε δε κάνει διαφορά (δοκίμασα και να το βάλω όπως λες)

EDIT:
Κλασσικά όλα τα προβλήματα μου λύθηκαν απλά ξαναγράφοντας το από την αρχή, είχα κάποια θέματα με το πως περνούσα τις μεταβλητές της δομής. To περίεργο τώρα είναι ότι η παράλληλη truncated_radix_sort με 8 threads κάνει ~5 δευτερόλεπτα να εκτελεστεί για Ν=2^20  :???:


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Ροζ συννεφάκι on November 16, 2016, 22:03:02 pm
Έχει μπει κανείς στο e-learning όπου θα υποβάλλουμε την εργασία? Αν δείτε στο ημερολόγιο, μετά το τέλος της προθεσμίας έχει μια εβδομάδα για να αξιολογήσουμε τις εργασίες 4 συμφοιτητών μας και ο τελικός βαθμός θα κριθεί και από αυτό!  :o
Τι φάση? είχε ακούσει κανείς κάτι σχετικό??


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: c0ndemn3d on November 16, 2016, 22:35:33 pm
Πρώτη φορά γίνεται αυτό στο μάθημα


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Vlassis on November 16, 2016, 23:27:39 pm
παιδιά για την cilk όταν βάζετε cilk_for στην hashcodes παίρνετε και εσείς χάλια χρόνους;
οχι, υπαρχει βελτιωση!


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Ροζ συννεφάκι on November 17, 2016, 12:52:24 pm
Γενικά θέλετε παράταση της προθεσμίας? Γιατί θα στείλω μέιλ σήμερα, να ξέρω τι να του πω.. Μην είμαι μόνο εγώ που θέλω!


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Ser Harry Man on November 17, 2016, 13:24:55 pm
Ναι θα ήταν καλό. Γιατί πέρα απο την όλη ανάπτυξη του κώδικα πρέπει να τρέξουμε και ένα σωρό test για να μαζέψουμε τα δεδομένα που ζητάει.
Εγώ έχω ρίξει 3 24ωρα και μόνο τα pthreads έχω βγάλει, αν και ήμουν λίγο άτυχος με όλα τα bugs...


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: kaspas on November 17, 2016, 14:12:08 pm
Ναι μια παράταση θα ήταν καλή!
Φαντάζομαι ούτε εσείς δεν μπορείτε να μπείτε στο diades έτσι;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: johnvoyager on November 17, 2016, 14:21:23 pm
και εγώ θέλω παράταση ,  no diades,  και αυτή τη στιγμή είμαι σε ΄λάπτοπ με διπύρηνο  ;D


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: kaspas on November 17, 2016, 14:29:42 pm
Ωραία δηλαδή παρασκευή έως κυριακή έχουμε να κάνουμε τέστ.
Θα γονατίσει πάλι ... Εδώ έπεσε με 6-7 users on...
Πρέπει να πάρουμε παράταση


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Ancient on November 17, 2016, 14:29:54 pm
Τι γίνεται με τον διάδη...? Νομίζω μια παράταση θα ήταν καλή για να προλάβουμε να πάρουμε τους χρόνους...


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: kaspas on November 17, 2016, 14:33:50 pm
Ας του στείλει κάποιος mail ότι είναι πεσμένος ο server και δεν προλαβαίνουμε μέχρι Κυριακή.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: SemAn on November 17, 2016, 14:38:35 pm
Κι εγώ θέλω παράταση!  ;) ;) Δν βγαίνουν μέχρι την Κυριακή!!


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Ροζ συννεφάκι on November 17, 2016, 14:45:48 pm
Του έστειλα μειλ, όταν απαντήσει θα σας πω!


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Ροζ συννεφάκι on November 17, 2016, 15:53:10 pm
Με ποια εντολη τρέχουμε πρόγραμμα σε cilk? (στο pc μας).. και αρκεί να κατεβάσουμε το parallel studio XE για να μπορεί να τρέξει?! Τα 'χω χάσει!!! :D


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: dimi93gr on November 17, 2016, 16:12:00 pm
Με ποια εντολη τρέχουμε πρόγραμμα σε cilk? (στο pc μας).. και αρκεί να κατεβάσουμε το parallel studio XE για να μπορεί να τρέξει?! Τα 'χω χάσει!!! :D
./nameOfProject args

Αλλα θελει να βαλεις το path στον compiler.
Το λεει μεσα στο manual.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Ροζ συννεφάκι on November 17, 2016, 16:21:31 pm
Ναι αυτό δεν είχα καταλάβει καλά.. οκ το κατάλαβε το command τώρα αλλά μου βγάζει:
catastrophic error: cannot open source file "cilk.h"
  #include <cilk.h>
                   ^
....γιατιιι...?


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: fibonacci on November 17, 2016, 17:03:23 pm
Ναι αυτό δεν είχα καταλάβει καλά.. οκ το κατάλαβε το command τώρα αλλά μου βγάζει:
catastrophic error: cannot open source file "cilk.h"
  #include <cilk.h>
                   ^
....γιατιιι...?

δοκίμασε    #include <cilk/cilk.h>


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Delaney on November 17, 2016, 18:58:54 pm
Γενικα τι αλλαγες πρεπει να κανω στο Makefile μου προκειμενου να τρεξω την cilk παραλληλοποιηση στο Διαδη (ο οποιος ειναι πεσμενος εδω και μια μερα) και να μου αναγνωριζει τον icc compiler? Δεν εχω παρει ακομα ακριβη απαντηση απο τους βοηθους παρα μόνο το εξής path το οποιο δεν ξερω πως να διαχειριστω: /export/opt/inte/bin/icc .. Αν το εχει δουλεψει καποιος ας μου πει τι εχει κανει.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Vlassis on November 17, 2016, 19:19:17 pm
Γενικα τι αλλαγες πρεπει να κανω στο Makefile μου προκειμενου να τρεξω την cilk παραλληλοποιηση στο Διαδη (ο οποιος ειναι πεσμενος εδω και μια μερα) και να μου αναγνωριζει τον icc compiler? Δεν εχω παρει ακομα ακριβη απαντηση απο τους βοηθους παρα μόνο το εξής path το οποιο δεν ξερω πως να διαχειριστω: /export/opt/inte/bin/icc .. Αν το εχει δουλεψει καποιος ας μου πει τι εχει κανει.
στο makefile το μονο που εβαλα για να τρεξει, και ετρεχε στο διαδη κανονικα ηταν να βαλω πρωτη γραμμη αντικατασταση σε οτι εχει με αυτο:
Code:
GCC=icc -lcilkrts -ldl -O3 -std=gnu99


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Delaney on November 17, 2016, 19:22:43 pm
Οκ ευχαριστώ θα το δοκιμασω, αρκει να επανελθει ο Διαδης επιτελους..


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: nikoscha on November 17, 2016, 19:23:29 pm
Την radix sort με pthreads την κανατε για σταθερο αριθμο threads η μεταβαλλόμενο  ?


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Delaney on November 17, 2016, 19:36:41 pm
στο makefile το μονο που εβαλα για να τρεξει, και ετρεχε στο διαδη κανονικα ηταν να βαλω πρωτη γραμμη αντικατασταση σε οτι εχει με αυτο:
Code:
GCC=icc -lcilkrts -ldl -O3 -std=gnu99


Μια ακομα βοηθεια, γιατι ειμαι ασχετος με Ματλαμπ.. Με το τρεξιμο της run_tests δημιουργειται ενα αρχειο με χρονους που παιρνουμε.. Αυτους τους χρονους πως τους περναμε στη Ματλαμπ για να παρουμε τους χρονους? Εχω χασει αρκετο χρονο και δεν εχω βγαλει ακρη ακομα για να παρω τα διαγραμματα εστω για την openMP..


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Insignia on November 17, 2016, 20:34:08 pm

Μια ακομα βοηθεια, γιατι ειμαι ασχετος με Ματλαμπ.. Με το τρεξιμο της run_tests δημιουργειται ενα αρχειο με χρονους που παιρνουμε.. Αυτους τους χρονους πως τους περναμε στη Ματλαμπ για να παρουμε τους χρονους? Εχω χασει αρκετο χρονο και δεν εχω βγαλει ακρη ακομα για να παρω τα διαγραμματα εστω για την openMP..

Χρησιμοποιείς το αρχείο read_data.m. Το βάζεις στο current folder της matlab (εκεί που δείχνει το path πάνω από το command window) και γράφεις στο command windows την εντολή results=read_data('onoma_arxeiou.txt', 3, ...). Φυσικά χρειάζεται να κάνεις κάποιες αλλαγές στο αρχείο αλλά οι αλλαγές είναι πολύ λίγες. Κυρίως χρειάζεται να παίξεις με την reshape που αλλάζει τις διαστάσεις του πίνακα.
Επίσης αν τρέχεις τη matlab σε windows τότε η εντολή grep δεν θα δουλέψει γιατί ειναι εντολή για linux. Αντί αυτής της εντολής χρησιμοποίησε την εντολή findstr οπότε ολόκληρη η πρώτη εντολή θα γίνει κάπως έτσι:
system(sprintf('findstr /C:"Time to compute the hash codes" %s > hash.txt', src));


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: unfo on November 17, 2016, 21:12:52 pm
Χρησιμοποιείς το αρχείο read_data.m. Το βάζεις στο current folder της matlab (εκεί που δείχνει το path πάνω από το command window) και γράφεις στο command windows την εντολή results=read_data('onoma_arxeiou.txt', 3, ...). Φυσικά χρειάζεται να κάνεις κάποιες αλλαγές στο αρχείο αλλά οι αλλαγές είναι πολύ λίγες. Κυρίως χρειάζεται να παίξεις με την reshape που αλλάζει τις διαστάσεις του πίνακα.
Επίσης αν τρέχεις τη matlab σε windows τότε η εντολή grep δεν θα δουλέψει γιατί ειναι εντολή για linux. Αντί αυτής της εντολής χρησιμοποίησε την εντολή findstr οπότε ολόκληρη η πρώτη εντολή θα γίνει κάπως έτσι:
system(sprintf('findstr /C:"Time to compute the hash codes" %s > hash.txt', src));

Επειδη εχω και εγω το ιδιο προβλημα και δεν μπορω να παρω διαγραμματα,βαζω στο command line result=read_data('arxeio.txt', 18, 128,  2^21, επαναληψεις) και δεν μου δουλευει! Επισης δεν εχω καταλαβει τι αλλαγες πρεπει να κανω στο read_data.m


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Insignia on November 17, 2016, 21:48:07 pm
Επειδη εχω και εγω το ιδιο προβλημα και δεν μπορω να παρω διαγραμματα,βαζω στο command line result=read_data('arxeio.txt', 18, 128,  2^21, επαναληψεις) και δεν μου δουλευει! Επισης δεν εχω καταλαβει τι αλλαγες πρεπει να κανω στο read_data.m

Σαν παραμέτρους βάζεις τον αριθμό των διαφορετικών tree height, population thresholds και points που δοκίμασες, δηλαδή 1 στην περίπτωσή σου.
Οι αλλαγές που πρέπει να κάνεις είναι πρακτικά στο reshape. Δηλαδή οι διάφοροι χρόνοι μπαίνουν σε ένα πίνακα μιας διάστασης και εσύ με το reshape τον φτιάχνεις έτσι ώστε στις στήλες να μπούν οι επαναλήψεις που έχεις κάνει για κάθε point και thread έτσι ώστε να πάρεις τον μέσο όρο. Επίσης, αν με το script μετρας χρόνους και για διάφορα threads τότε πρέπει να φτιάξεις το reshape κατάλληλα για να αλλάζει τις διαστάσεις του πίνακα ανάλογα με τον αριθμό των διαφορετικών threads που μετράς.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: stan14 on November 17, 2016, 23:33:06 pm
Παιδια ξερει κανεις πως περναω φακελους στο diades απο cygwin?


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Nerevar on November 17, 2016, 23:47:17 pm
Βάλτε Filezilla..


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Insignia on November 18, 2016, 00:02:40 am
Παιδια ξερει κανεις πως περναω φακελους στο diades απο cygwin?


Συμφωνώ και εγώ να βάλεις filezilla.
Αν παρόλα αυτά θες να χρησιμοποιήσεις το cygwin τότε πρώτα απ' όλα πρέπει να εγκαταστήσεις το πακέτο που λέγεται openssh με τον ίδιο τρόπο που εγκατέστησες και τους compiler τρέχοντας το αρχείο setup. Μετά βάζεις την εντολή
scp -P 2288 -r /home/toonomasou/fakelos/ toonomasou@diades.ee.auth.gr:/export/home/toonomasou/

Απλά να έχεις υπόψιν σου οτι ο diades είναι πεσμένος αυτή τη στιγμή.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: amastron on November 18, 2016, 01:53:36 am
Η 1η εργασία παίρνει παράταση μίας εβδομάδας, μέχρι Κυριακή 27 Νοεμβρίου 23:55.   Aπό elearning.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Vlassis on November 18, 2016, 01:57:20 am
Η 1η εργασία παίρνει παράταση μίας εβδομάδας, μέχρι Κυριακή 27 Νοεμβρίου 23:55.   Aπό elearning.
ΓΙΕΕΕΕΣΣΣΣ  ^wav^


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: nikoscha on November 18, 2016, 02:19:42 am
Σε cilk πως οριζω τον αριθμο των threads??


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Ancient on November 18, 2016, 02:29:33 am
Σε cilk πως οριζω τον αριθμο των threads??

 Με τη συνάρτηση __cilk_set_param("nworkers",nthreads).   Αλλά το nthreads πρέπει να είναι string.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Delaney on November 18, 2016, 02:40:13 am
Σαν παραμέτρους βάζεις τον αριθμό των διαφορετικών tree height, population thresholds και points που δοκίμασες, δηλαδή 1 στην περίπτωσή σου.
Οι αλλαγές που πρέπει να κάνεις είναι πρακτικά στο reshape. Δηλαδή οι διάφοροι χρόνοι μπαίνουν σε ένα πίνακα μιας διάστασης και εσύ με το reshape τον φτιάχνεις έτσι ώστε στις στήλες να μπούν οι επαναλήψεις που έχεις κάνει για κάθε point και thread έτσι ώστε να πάρεις τον μέσο όρο. Επίσης, αν με το script μετρας χρόνους και για διάφορα threads τότε πρέπει να φτιάξεις το reshape κατάλληλα για να αλλάζει τις διαστάσεις του πίνακα ανάλογα με τον αριθμό των διαφορετικών threads που μετράς.

Ευχαριστω για την απαντηση! Εχω αλλο προβλημα τωρα.. Βαζοντας κανονικα τη γραμμη result=read_data κτλ κτλ, χτυπαει η Matlab στο reshape και ενω εχω δοκιμασει διαφορα, το error δε λεει να φυγει.. Και γενικα επαιξα με τα nP,nL, κτλ, αλλα δεν ξερω τι δεν κανω.. Αν καποιου του εχει βγει και μπορει να μας διαφωτισει, θα εκτιμηθει δεοντως. Ενα καφεδακι στο κυλικειο ας πουμε  :D

Τα errors ειναι τα παρακατω:
Error using reshape
To RESHAPE the number of elements must not change.

Error in read_data (line 32)
hash_mean = reshape(hash_mean, 2, 2, 2);


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Vlassis on November 18, 2016, 02:46:11 am
στα pthreads μέσα στην radix_sort η παρακατω εντολη
Code:
 unsigned long int *morton_codes = my_data->morton_codes;
μου πεταει το error
Code:
dereferencing pointer to incomplete type ‘struct thread_data’
     unsigned long int *morton_codes = my_data->morton_codes;
                                              ^
παιζει να το εχει δει κανεις αλλος αυτο;
(πολυ πιθανον να κανω και βλακειες, εχω καταμπερδευτει με αυτο το πραγμα)


άκυρο, εβαλα την δήλωση της δομής μέσα στο .h και λύθηκε  >:(


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Insignia on November 18, 2016, 03:53:45 am
Ευχαριστω για την απαντηση! Εχω αλλο προβλημα τωρα.. Βαζοντας κανονικα τη γραμμη result=read_data κτλ κτλ, χτυπαει η Matlab στο reshape και ενω εχω δοκιμασει διαφορα, το error δε λεει να φυγει.. Και γενικα επαιξα με τα nP,nL, κτλ, αλλα δεν ξερω τι δεν κανω.. Αν καποιου του εχει βγει και μπορει να μας διαφωτισει, θα εκτιμηθει δεοντως. Ενα καφεδακι στο κυλικειο ας πουμε  :D

Τα errors ειναι τα παρακατω:
Error using reshape
To RESHAPE the number of elements must not change.

Error in read_data (line 32)
hash_mean = reshape(hash_mean, 2, 2, 2);

Αυτό το πρόβλημα στο βγάζει επειδή οι καινούργειες διαστάσεις του πίνακα δεν είναι συμβατές με τις παλιές (πχ προσπαθεις να κάνεις ενα πίνακα 1x4 σε 3x2).
Αυτό πιθανότατα στο βγάζει επειδή αυτή η συνάρτηση read_data έχει φτιαχτεί για να δέχεται μονο διαφορετικό αριθμό tree heights, population threshold, number of points και αριθμού repetitions. Ενώ εσύ το έχεις τρέξει και για διαφορετικό αριθμό threads.
Αυτό που έχεις να κάνεις είναι απλά να βάλεις να δέχεται άλλη μια παράμετρο όπου θα εισάγεις τον αριθμό των διαφορετικών threads που έχεις τεστάρει και θα το βάλεις στις reshape κατάλληλα.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: stan14 on November 18, 2016, 04:05:43 am
sthn cilk kai sthn openmp 8elei na pername kai number of threads kai na to trexoume analogws me auto h arkei na to kanoume me export OMP_NUM_THREADS?
στην cilk και στην openmp θελει να περναμε και number of threads και να το τρεχουμε αναλογως με αυτο ή αρκει να το κάνουμε με export OMP_NUM_THREADS?

edit: όχι greeklish


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Ser Harry Man on November 18, 2016, 12:10:48 pm
Έλεγε ένα παιδί πιο πρίν οτι του μίλησε και θέλει να παίρνουμε τον αριθμό των threads σαν όρισμα.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: georgkonst on November 18, 2016, 13:54:33 pm
Με τα pthreads ρε παιδιά στη truncated_radix_sort τι γίνεται; Περνάω σωστά τα δεδομένα, αλλά χρησιμοποιώ πολύ περισσότερα threads από όσα πρέπει και καθυστερεί πάρα πολύ όταν πάω να κάνω join.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Ροζ συννεφάκι on November 18, 2016, 15:43:56 pm
παιδιά για την cilk όταν βάζετε cilk_for στην hashcodes παίρνετε και εσείς χάλια χρόνους;

+1
κ εμενα οι χρονοι μ πανε x10....  :(
έχω δοκιμάσει τα παντα (ή ετσι νομίζω τουλάχιστον) κ κυμαίνεται συνέχεια κάπου εκεί.. έπαιξα και με workers και με grainsize..
έτυχε σε κανέναν κάτι αντίστοιχο? τι μπορεί να μου ξεφεύγει?


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: SemAn on November 18, 2016, 15:58:05 pm
+1
κ εμενα οι χρονοι μ πανε x10....  :(
έχω δοκιμάσει τα παντα (ή ετσι νομίζω τουλάχιστον) κ κυμαίνεται συνέχεια κάπου εκεί.. έπαιξα και με workers και με grainsize..
έτυχε σε κανέναν κάτι αντίστοιχο? τι μπορεί να μου ξεφεύγει?

Εγώ στη hash_codes εβαλα ενα cilk_for μόνο στην quantize απο 0 έως Ν και μου τρέχει με καλούς χρόνους! Δν εβαλα πουθενά αλλου cilk_for στη hash_codes...


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Ροζ συννεφάκι on November 18, 2016, 16:10:56 pm
Εγώ στη hash_codes εβαλα ενα cilk_for μόνο στην quantize απο 0 έως Ν και μου τρέχει με καλούς χρόνους! Δν εβαλα πουθενά αλλου cilk_for στη hash_codes...

κ εγώ αυτό είχα βάλει αρχικά και ήταν πολύ καλύτερο από αυτό που έχω τώρα.. απλώς αν δεν έβαζα cilk_for και στην εσωτερική, το 2ο τεστ από αυτά που κάνει στο τέλος μου έβγαζε FAIL. ετσι έβαλα και στην εσωτερική και έγινε χάλια. εκτός από το να κάνεις την for -> cilk_for έκανες σε άλλα σημεία αλλαγή για να τρέξει αυτό καλά?


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: SemAn on November 18, 2016, 16:23:51 pm
κ εγώ αυτό είχα βάλει αρχικά και ήταν πολύ καλύτερο από αυτό που έχω τώρα.. απλώς αν δεν έβαζα cilk_for και στην εσωτερική, το 2ο τεστ από αυτά που κάνει στο τέλος μου έβγαζε FAIL. ετσι έβαλα και στην εσωτερική και έγινε χάλια. εκτός από το να κάνεις την for -> cilk_for έκανες σε άλλα σημεία αλλαγή για να τρέξει αυτό καλά?

Όχι στη hash δεν πείραξα κάτι άλλο. Ή εκτός αν πείραξες και τις άλλες συναρτήσεις και το fail οφείλεται σε κάποια από τις αυτές.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: georgkonst on November 18, 2016, 16:25:38 pm
κ εγώ αυτό είχα βάλει αρχικά και ήταν πολύ καλύτερο από αυτό που έχω τώρα.. απλώς αν δεν έβαζα cilk_for και στην εσωτερική, το 2ο τεστ από αυτά που κάνει στο τέλος μου έβγαζε FAIL. ετσι έβαλα και στην εσωτερική και έγινε χάλια. εκτός από το να κάνεις την for -> cilk_for έκανες σε άλλα σημεία αλλαγή για να τρέξει αυτό καλά?

Και εγώ αυτό το πρόβλημα είχα και το έλυσα βάζοντας τον υπολογισμό του codes σε συνάρτηση και να καλώ αυτή μέσα απο τη 2η for.
cilk_for -> for -> function και υπολογισμό μέσω της συνάρτησης αντί για υπολογισμό μέσα στη for.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Ροζ συννεφάκι on November 18, 2016, 18:57:06 pm
Και εγώ αυτό το πρόβλημα είχα και το έλυσα βάζοντας τον υπολογισμό του codes σε συνάρτηση και να καλώ αυτή μέσα απο τη 2η for.
cilk_for -> for -> function και υπολογισμό μέσω της συνάρτησης αντί για υπολογισμό μέσα στη for.

Ναι πράγματι δουλεύειι!!!!  ;D
Ευχαριστώ πολύ!!!  :)
Καταλαβαίνεις όμως γιατί? τι πάει στραβά στο άλλο? ....τώρα μου ήρθε.. μήπως θέλει το j σε πίνακα άμα δεν το κάνεις με συνάρτηση γιατί αλλιώς μπερδεύονται ίσως τα j?

Και βασικά, τους καλύτερους χρόνους τους πετυχαίνεις με μεταβολή των worker ή του grainsize γιατί οι worker δε μου κάνουν διαφορά..


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Vlassis on November 18, 2016, 20:08:15 pm
Στην cilk, οταν κανω make μου βγαζει:
Code:
warning #266: function "__cilkrts_init" declared implicitly
    __cilkrts_init();
    ^
αν και τρεχει κανονικα, αυτα τα warnings γιατι τα βγαζει;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: ReMi0s on November 18, 2016, 20:57:05 pm
Στην cilk, οταν κανω make μου βγαζει:
Code:
warning #266: function "__cilkrts_init" declared implicitly
    __cilkrts_init();
    ^
αν και τρεχει κανονικα, αυτα τα warnings γιατι τα βγαζει;

εγώ τα βάζω με αυτή την σειρά και δεν μου βγάζει προβλήματα
Code:
__cilkrts_end_cilk();
  __cilkrts_set_param("nworkers",str);
  __cilkrts_init();


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: ReMi0s on November 18, 2016, 21:02:43 pm
Κάτι άκυρο αλλα σημαντικό, παιδιά προσέχετε όταν τρέχετε τα προγράμματα σας στον διάδη να μή βάζετε περιττά printf μέσα σε for καθώς επιβραδύνουν πολύ την όλη διαδικασία.
Μάλιστα αν έχετε printf μέσα σε for απο recurcive function και τρέχετε το script για αποτελέσματα, μπορεί να καταλήξετε με κάτι GB αρχειο txt.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Terzos on November 19, 2016, 19:11:14 pm
Το run_tests.sh τρέχει κανονικά ακόμα και αν δεν γίνεται σωστά η δουλειά που κάνει το πρόγραμμα; Ρωτάω επειδή δεν εμφανίζει τα PASS/FAIL...


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: ReMi0s on November 19, 2016, 20:06:16 pm
Το run_tests.sh τρέχει κανονικά ακόμα και αν δεν γίνεται σωστά η δουλειά που κάνει το πρόγραμμα; Ρωτάω επειδή δεν εμφανίζει τα PASS/FAIL...
αυτά τα βλέπεις μετά στο αρχείο που δημιουργείται, αν υπάρχει κάποιο πρόβλημα όπως segmentation fault θα στο εμφανίσει κατα την διάρκεια του run_tests


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: nikoscha on November 19, 2016, 22:00:37 pm
Στην αναφορα που λεει για 3-4 σελιδες προφανώς εννοεί μαζι με τα σχήματα τοσες σωστα;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: ReMi0s on November 19, 2016, 22:43:06 pm
Στην αναφορα που λεει για 3-4 σελιδες προφανώς εννοεί μαζι με τα σχήματα τοσες σωστα;
αν καταφέρεις να είναι μόνο τόσες ή είσαι πολύ λακωνικός, ή κάτι θα λείπει.
Έχω δεί μερικές παλιότερες αναφορές, απο πιο απλή άσκηση και ήταν όλες 10+ σελίδες


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Terzos on November 20, 2016, 19:14:06 pm
Ο diades είναι down?


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Vlassis on November 20, 2016, 20:11:36 pm
Ο diades είναι down?
yeap ολοκληρο το ΣΚ
ελπιζω αυριο να ανεβει  :(


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Terzos on November 20, 2016, 21:26:07 pm
Έχει καταφέρει κανείς να βελτιώσει τους χρόνους της radix_sort με OpenMP;
Για όσο έχω ασχοληθεί η φάση είναι: όσο περισσότερο την παραλληλοποιώ, τόσο περισσότερο χρόνο κάνει. :-\


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Andromedas on November 20, 2016, 21:46:11 pm
Έχει καταφέρει κανείς να βελτιώσει τους χρόνους της radix_sort με OpenMP;
Για όσο έχω ασχοληθεί η φάση είναι: όσο περισσότερο την παραλληλοποιώ, τόσο περισσότερο χρόνο κάνει. :-\
Ναι είναι recursive, με open mp είτε cilk δεν λειτουργεί καλά η αναδρομή. Νομίζω ότι πρέπει να τον αλλάξεις αρκετά πχ prefix scan. Θα ρωτήσω τον Φλώρο και θα γράψω περισσότερα.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: ReMi0s on November 21, 2016, 16:04:58 pm
Έχει στείλει κανείς mail να μάθουμε πότε θα ανέβει ο δυάδης; απο παρασκευή ξεκουράζεται..


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Ancient on November 21, 2016, 18:10:49 pm
Από την Τετάρτη για την ακρίβεια, την Παρασκευή άνοιξε για λίγο και μετά έπεσε. Τσάμπα η παράταση...


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: dimi93gr on November 21, 2016, 20:16:17 pm
Παλεύω να υλοποιήσω την hash_codes με pthreads. Για να ελέγχω τον αριθμό των νημάτων που δημιουργούνται, άλλαξα την compute_hash_codes ώστε να δέχεται +1 όρισμα. Την αλλαγή την έκανα και στην test_octree.c (όπου δίνω το όρισμα maxthreads, και στην hash_codes.c όπου πλέον η συνάρτηση δέχεται 7 αντί για 6 ορίσματα KAI στην utils.h. Όταν τρέχω make ο compiler επιστρέφει το εξής:

test_octree.c: In function ‘main’:
test_octree.c:65:5: error: too many arguments to function ‘compute_hash_codes’
     compute_hash_codes(hash_codes, X, N, nbins, min, max, maxthreads); // compute the hash codes
     ^
In file included from test_octree.c:4:0:
utils.h:12:6: note: declared here
 void compute_hash_codes(unsigned int *codes, float *X, int N,
      ^

Καμιά ιδέα;  :-\
ΥΓ: Οι C γνώσεις μου είναι ελάχιστες και σκουριασμένες  :P

Στο utils.h έχεις ανανεώσει την συνάρτηση με τα νέα σωστά ορίσματα ;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: nikoscha on November 21, 2016, 20:19:51 pm
Στην run_tests.sh πρεπει να κανω αλλαγες; Αυτο το αρχειο που μας δινει ειναι υπόδειγμα δηλαδη;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Terzos on November 21, 2016, 20:21:00 pm
Στο utils.h έχεις ανανεώσει την συνάρτηση με τα νέα σωστά ορίσματα ;

Άλλαζα το λάθος αρχείο (είχα utils.h και σε άλλον φάκελο). Για αυτό και το έσβησα το ποστ  :P


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: stan14 on November 22, 2016, 06:42:45 am
Στο filezilla για host βαζουμε diades.ee.auth.gr?


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Insignia on November 22, 2016, 09:10:29 am
Στο filezilla για host βαζουμε diades.ee.auth.gr?

sftp://diades.ee.auth.gr


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Andromedas on November 22, 2016, 19:23:40 pm
Ναι είναι recursive, με open mp είτε cilk δεν λειτουργεί καλά η αναδρομή. Νομίζω ότι πρέπει να τον αλλάξεις αρκετά πχ prefix scan. Θα ρωτήσω τον Φλώρο και θα γράψω περισσότερα.
Με openmp δεν γίνεται βελτίωση του recursive radix sort. Με cilk υπάρχει βελτίωση και πρέπει να  υλοποιηθεί.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Andromedas on November 22, 2016, 20:52:43 pm
Γενικά τι βελτίωση έχετε /edit με pthread  στην radix (χωρίς threadpool); ποσοστό εάν γίνεται.
εγώ είμαι στα  40% σχεδόν μόνιμα.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: dimigoug on November 22, 2016, 23:42:15 pm
Στην cilk, οταν κανω make μου βγαζει:
Code:
warning #266: function "__cilkrts_init" declared implicitly
    __cilkrts_init();
    ^
αν και τρεχει κανονικα, αυτα τα warnings γιατι τα βγαζει;

Κανε include το cilk/cilk_api.h


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: unfo on November 23, 2016, 11:50:05 am
Στο διαδη οταν ειναι πολλα ατομα μεσα παιζουν οι χρονοι  ???


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: TrueForce on November 23, 2016, 14:10:31 pm
Ναι. Oτι μετρησεις γίνουν να τις κανετε οταν θα ειναι αδειος.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: lodi on November 23, 2016, 14:46:31 pm
Παιδιά , δεδομένο ότι το matlab το έχω μόνο στα windows και όλη την εργασία την κάνω από linuix, όπου δεν έχω matlab ,πώς θα τρέξω το .m αρχείο ; Έχει ο Διάδης matlab και θα μου το τρέξει αυτός ; Αν ναι, πώς ;   :)


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Insignia on November 23, 2016, 15:03:24 pm
Παιδιά , δεδομένο ότι το matlab το έχω μόνο στα windows και όλη την εργασία την κάνω από linuix, όπου δεν έχω matlab ,πώς θα τρέξω το .m αρχείο ; Έχει ο Διάδης matlab και θα μου το τρέξει αυτός ; Αν ναι, πώς ;   :)

Μπορείς να πας στη Βεργίνα όπου οι υπολογιστές έχουν matlab. Απλά ανοίγεις ένα terminal και γραφεις matlab και θα στο ανοίξει.
Ποίο είναι όμως το πρόβλημα στο να μεταφέρεις τα αποτελέσματα στα windows και να τρέξεις εκεί το matlab; (Φυσικά για να τρέξεις το script που έχει για το matlab στα windows πρέπει να αλλάξεις την εντολή grep σε findstr και να βάλεις τις κατάλληλες παραμέτρους)


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: lodi on November 23, 2016, 16:09:43 pm
άρα η διαδικασία είναι η εξής ;
1)ανεβάζω αρχεία στον διάδη
2) τρέχω το run_tests,sh
3)αποθηκεύονται τα αποτελέσματα σε 2 αρχεία
4)κατεβάζω τα αρχεία
5)τα δίνω ως είσοδο στην read_data.m
μετά ;
τι μας δίνει η read_data.m ? εμείς τις δώσαμε πολλές διαφορετικές υλοποιήσεις για διάφορα Ν,L,..,αριθμό threads. Τι μας δίνει ; 


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Terzos on November 23, 2016, 16:29:26 pm
Πρέπει να βγάζει μέσους όρους των repetitions. Το τι δείχνει κάθε στοιχείο του 3-διάστατου πίνακα φαντάζομαι φαίνεται από το reshape, οπότε η διαφορετική γραμμή υποδηλώνει διαφορετικό ύψους δέντρου, η διαφορετική στήλη υποδηλώνει διαφορετικό πληθυσμιακό όριο και τέλος η 3η διάσταση (άλλο πινακάκι) αναφέρεται σε αριθμό σημείων. π.χ. άμα δοκιμάζεις 3 διαφορετικά ύψη και 2  διαφορετικά πληθυσμιακά όρια, αλλά μόνο έναν αριθμό σημείων θα πάρεις αποτελέσματα πίνακες 3x2x1

Παιδιά , δεδομένο ότι το matlab το έχω μόνο στα windows και όλη την εργασία την κάνω από linuix, όπου δεν έχω matlab ,πώς θα τρέξω το .m αρχείο ; Έχει ο Διάδης matlab και θα μου το τρέξει αυτός ; Αν ναι, πώς ;   :)

Είχα το ίδιο πρόβλημα και έβαλα octave. Γενικά είναι πιο δύσχρηστο αλλά την δουλειά του την κάνει για να δεις πως τρέχει ο κωδικάς σου σε σύγκριση με τον αρχικό


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Terzos on November 23, 2016, 16:58:11 pm
Υπάρχει τρόπος να ξέρουμε άμα την στιγμή που είμαστε συνδεδεμένοι στον diades, άμα υπάρχουν και άλλοι χρήστες ταυτόχρονα;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: kaspas on November 23, 2016, 17:00:06 pm
w ή top


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Ροζ συννεφάκι on November 23, 2016, 22:03:05 pm
Δυο σημαντικά πραγματάκια από το μάθημα σήμερα:
1ον) Δε θα υπάρχει ελαστικότητα όσον αφορά την προθεσμία, δηλαδή κ 1 λεπτό μετά να το ανεβάσεις bye bye
2ον) Αφού παραδώσουμε την εργασία, θα έχουμε μία εβδομάδα για να αξιολογήσουμε τις εργασίες 3 συμφοιτητών μας. Σύμφωνα με τον Φλώρο είναι υπόθεση μιας ώρας (κ 5 ώρες να ναι καλά θα είμαστε) γιατί θα είναι απλώς multiple choice, δε θα έχει αναλύσεις, σχολιασμούς κλπ. Αυτό θα μετρήσει ποσοστιαία στο βαθμό μας, αλλά μεγαλύτερο ποσοστό θα πιάνει ο βαθμός της δικιάς μας εργασίας.

Αυτά!


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Vlassis on November 24, 2016, 01:42:53 am
Παιδιά , δεδομένο ότι το matlab το έχω μόνο στα windows και όλη την εργασία την κάνω από linuix, όπου δεν έχω matlab ,πώς θα τρέξω το .m αρχείο ; Έχει ο Διάδης matlab και θα μου το τρέξει αυτός ; Αν ναι, πώς ;   :)
εχω βαλει matlab στα linux, μπορω να στα δωσω αν θες  :)


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: fanaks on November 24, 2016, 13:26:03 pm
Παιδιά να κάνω μια ερώτηση,στο Διάδη μεχρι πόσα νήματα σας αφήνει να ανοίξετε στην Cilk;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: kaspas on November 24, 2016, 14:41:16 pm
128 μετά στα γυρνάει στα 8


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Andromedas on November 24, 2016, 15:25:27 pm
Παιδιά προσπαθώ να ρυθμίσω το path για να τρέξω cilk στο διαδή και δεν τα πολυκαταφέρνω μπορεί κάποιος να γράψει τι έκανε;
Μάλλον το βρήκα.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: fanaks on November 24, 2016, 16:17:23 pm
Πηγαινε στην ρίζα του terminal που χρησιμοποιεις,αν εχεις cygwin πηγαινε στον φακελο cygwin64,φτιαξε ενα φάκελο με όνομα Cilk περασε τα αρχεία σου μεσα στον φακελο και μετά πηγαινε στο terminal χωρίς να είσαι συνδεδεμένος στο διαδη(δεν πειράζει αν εισαι συνδεδεμενος απλα μην το κάνεις απο το ιδιο τεματικο με το οποιο εχεις συνδεθει) και πατα απλα την εντολή scp -P 2288 -r /Cilk username@diades.ee.auth: /export/home/username με το δικο σου username.H εντολη εχει την λογική scp -P 2288 -r [διαδρομη αρχειου/φακέλου απο το συστημα το οποιο ελεγχει το τερματικο] [διευθυνση που θα πάνε τα αρχεία]:[διαδρομη στην οποία θα αποθηκευτούν]


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Ροζ συννεφάκι on November 25, 2016, 16:55:03 pm
Ξέρει κανείς αν οι χρόνοι στα διαγράμματα θα είναι αυτοί του συνόλου του κώδικα(δηλαδή και των 4 συναρτήσεων μαζί) ή αν θα πρέπει να δείξουμε τους χρόνους ξεχωριστά σε κάθε συνάρτηση??

EDIT: Μου απάντησε ο Φλώρος: "Ο συνολικός είναι οκ, μπορείτε να δείξετε και μεμονωμένους αν επιθυμείτε για μερικές περιπτώσεις (για να εξηγήσετε καλύτερα την παραλληλοποίησή σας)"


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Terzos on November 25, 2016, 22:11:52 pm
Προσπαθώντας να παραλληλοποιήσω την radix_sort, έκανα σαν πρώτο βήμα την παραλληλοποίηση της αναδρομικής συνάρτησης (truncated_radix_sort). Οπότε αντί να καλείται απλά η συνάρτηση truncated_radix_sort, δημιουργώ thread function με κατάλληλο struct όρισμα το οποίο καλεί αυτήν την συνάρτηση χρησιμοποιώντας το struct.
Όταν πάω να το τρέξω μου βγάζει Segmentation fault. Καμιά ιδέα;

solved: Έπρεπε να κάνω join


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Andromedas on November 25, 2016, 22:20:40 pm
Προσπαθώντας να παραλληλοποιήσω την radix_sort, έκανα σαν πρώτο βήμα την παραλληλοποίηση της αναδρομικής συνάρτησης (truncated_radix_sort). Οπότε αντί να καλείται απλά η συνάρτηση truncated_radix_sort, δημιουργώ thread function με κατάλληλο struct όρισμα το οποίο καλεί αυτήν την συνάρτηση χρησιμοποιώντας το struct.
Όταν πάω να το τρέξω μου βγάζει Segmentation fault. Καμιά ιδέα;

Code:
 for(int i=0; i<MAXBINS; i++){
      int offset = (i>0) ? BinSizes[i-1] : 0;
      int size = BinSizes[i] - offset;
      //printf("LABEl next labels \n");
      //struct RTD next_RTD;
      next_RTD[i].morton_codes=&my_data->morton_codes[offset];
      next_RTD[i].sorted_morton_codes=&my_data->sorted_morton_codes[offset];
      next_RTD[i].permutation_vector=&my_data->permutation_vector[offset];
      next_RTD[i].index=&my_data->index[offset];
      next_RTD[i].level_record=&my_data->level_record[offset];
      next_RTD[i].N=size;
      next_RTD[i].population_threshold=my_data->population_threshold;
      next_RTD[i].sft=my_data->sft-3;
      next_RTD[i].lv=my_data->lv+1;
  next_RTD[i].spawn_lvl=my_data->spawn_lvl;
    }


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Andromedas on November 25, 2016, 22:29:17 pm
solved: Έπρεπε να κάνω join
Όχι είναι πλήρως παραλληλοποιήσιμα (ή οπώς γράφεται)εκτός εάν έχεις κάνει καμιά loop παράλληλη πριν τα threads


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: kaspas on November 25, 2016, 22:53:51 pm
Μόνο εγώ παίρνω στα διαγράμματα τις cilk πάρα πολύ καλούς χρόνους σε σχέση με τον σειριακό;(μιλάμε για 20% χρόνο εκτέλεσης σε σχέση με το σειριακό)


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Andromedas on November 25, 2016, 22:57:02 pm
Μόνο εγώ παίρνω στα διαγράμματα τις cilk πάρα πολύ καλούς χρόνους σε σχέση με τον σειριακό;(μιλάμε για 20% χρόνο εκτέλεσης σε σχέση με το σειριακό)
χμμ
Average total time of algorithm pop=4194304 thread=1 : 0.566027s
Average total time of algorithm pop=4194304 thread=16 : 0.197120s
Αλλά ρώτησα και μπορούμε να δούμε και παραπάνω βελτίωση


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: kaspas on November 25, 2016, 23:22:53 pm
Εμένα τα διαγράμματά μου είναι κάπως σαν τη φωτογραφία που ανέβασα. Όχι τίποτα αλλά αν είναι σωστά δεν έχω ιδέα πως να του το εξηγήσω.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Andromedas on November 25, 2016, 23:40:27 pm
Εμένα τα διαγράμματά μου είναι κάπως σαν τη φωτογραφία που ανέβασα. Όχι τίποτα αλλά αν είναι σωστά δεν έχω ιδέα πως να του το εξηγήσω.
για thread=1 δεν θα έπρεπε να είναι 1; και γενικά είναι σωστά τα αποτελέσματα ο διαδής δίνει συγκεκριμένους πυρήνες άρα σε αυτούς θα έχεις την καλύτερη βελτίωση. Και εγώ για 8 πιάνω την καλύτερη από όλες ακύρο όχι για 2 threads δεν πιάνεις σωστή τιμή εκτός και εάν τα έκανες σε κάποιο χρόνο που υπήρχαν και άλλοι
Σορρυ με μπέρδεψε ο τρόπος που τα παρουσίασες... Ισχύει ότι στα 8 έχει την καλύτερη βελτίωση αρά μάλλον είσαι κομπλέ.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: kaspas on November 25, 2016, 23:52:59 pm
Γενικά δεν με απασχολούν οι τιμές για thread <8 από εκεί και πάνω με ενοχλεί που δεν έχει καθόλου αύξηση (έχει ελάχιστη και στη dataR πχ σχεδόν καθόλου)


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Andromedas on November 25, 2016, 23:59:30 pm
Γενικά δεν με απασχολούν οι τιμές για thread <8 από εκεί και πάνω με ενοχλεί που δεν έχει καθόλου αύξηση (έχει ελάχιστη και στη dataR πχ σχεδόν καθόλου)
Νομίζω ο διαδής είναι 16 cores (ή 8 ...) και έχει busy τους μισούς το sys αρά μέχρι 8 θα δεις διαφορά με cilk. Tο grain μπορεί να καθοριστεί από την cillk δυναμικά και με βέλτιστο τρόπο αρά δεν βλέπεις τίποτα διαφορετικό


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: kaspas on November 26, 2016, 00:12:13 am
8 νομίζω έχει . Κι εγώ κάτι τέτοιο σκέφτομαι για δικαιολόγηση.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Ancient on November 26, 2016, 03:11:31 am
Η cilk χειρίζεται τα threads με βέλτιστο τρόπο και δεν έχει πολύ "χασούρα" χρόνου για πολλά threads.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Vlassis on November 26, 2016, 03:19:47 am
εχει κανεις προβλημα με την radix_sort στην pthreads για 8 και λιγοτερα threads?
η οποια μου ειναι πολυ αργη >:( :'(


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Ser Harry Man on November 26, 2016, 16:03:33 pm
Καλημέρα, μια ακόμα ερώτηση για matlab.

Στην read_data, βάζοντας το πρώτο αρχείο με τα αποτελέσματα απο την run_tests (για pthreads, αλλα άσχετο ), μου εμφανίζει :

 hash: [2x2x2 double]
 morton: [2x2x2 double]
 sort: [2x2x2 double]
 dataR: [2x2x2 double]

Τα οποία με το display φαίνεται οτι είναι οι πίνακες με τους μέσους όρους απο τις μετρήσεις για τη κάθε είσοδο.

Αυτά τα αποτελέσματα, πως τα διαχειρίζομαι ? Πώς τα βάζω στην plot δηλαδή ή έστω να τα κάνω ένα print ή να τα αποθηκεύσω κάπου ?
Δεν ξέρω και πως να το googlaρω, γιατί δεν είμαι τόσο καλός στο matlab...

P.S. Απο windows η grep δούλεψε κανονικά μέσω του cygwin, χωρίς dos, μάλλον επειδή έβαλα σωστά την environment variable του cygwin, για κάποιον που είχε ρωτήσει.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: ReMi0s on November 26, 2016, 18:35:05 pm
Μόνο εγώ παίρνω στα διαγράμματα τις cilk πάρα πολύ καλούς χρόνους σε σχέση με τον σειριακό;(μιλάμε για 20% χρόνο εκτέλεσης σε σχέση με το σειριακό)
στην cilk υπάρχει ένας περιορισμός που επιτρέπει max 16*cores workers. Καθώς ο διάδης έχει 8 πυρήνες για 256 και περισσότερα νήματα το πρόγραμμασου τρέχει με την default τιμή των πυρήνων του συστήματος. Πρέπει δηλαδή για 256 και έπειτα νήματα, να βλέπεις μια σταθερή συμπεριφορά και παρόμοια με αυτή των 8 νημάτων.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: 020400e on November 26, 2016, 19:00:20 pm
Παιδιά ο diades πάλι έπεσε?

Επίσης μπορεί να με πει κανείς πως τρέχω cilk στον diades?


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Andromedas on November 26, 2016, 19:13:53 pm
Παιδιά ο diades πάλι έπεσε?

Επίσης μπορεί να με πει κανείς πως τρέχω cilk στον diades?
Έπεσε θα ανέβει σε 2 ώρες μάλλον.
κάνεις edit το bash_profile . πχ nano ~/.bash_profile
μέσα στο editor γράφεις στην μετά από την τελευταία εγγραφή
 source /export/opt/intel/bin/iccvars.sh intel64
κάνεις log out log in για να δημιουργήσει το νέο path απο το νέο bash bash_profile  και είσαι κομπλε


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Terzos on November 26, 2016, 20:20:06 pm

Code:
 for(int i=0; i<MAXBINS; i++){
      int offset = (i>0) ? BinSizes[i-1] : 0;
      int size = BinSizes[i] - offset;
      //printf("LABEl next labels \n");
      //struct RTD next_RTD;
      next_RTD[i].morton_codes=&my_data->morton_codes[offset];
      next_RTD[i].sorted_morton_codes=&my_data->sorted_morton_codes[offset];
      next_RTD[i].permutation_vector=&my_data->permutation_vector[offset];
      next_RTD[i].index=&my_data->index[offset];
      next_RTD[i].level_record=&my_data->level_record[offset];
      next_RTD[i].N=size;
      next_RTD[i].population_threshold=my_data->population_threshold;
      next_RTD[i].sft=my_data->sft-3;
      next_RTD[i].lv=my_data->lv+1;
  next_RTD[i].spawn_lvl=my_data->spawn_lvl;
    }

Το spawn_lvl γιατί χρειάζεται;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: κύριος Φασόλης on November 26, 2016, 20:37:32 pm
Έπεσε θα ανέβει σε 2 ώρες μάλλον.

ποσο σιγουρος εισαι για αυτο?


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Vlassis on November 26, 2016, 20:39:45 pm
ποσο σιγουρος εισαι για αυτο?
ειχε ανεβει και ναι, ξαναεπεσε  :(


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: κύριος Φασόλης on November 26, 2016, 20:42:21 pm
ειχε ανεβει και ναι, ξαναεπεσε  :(
χμμ...δεν εχουμε ιδεα ποτε θα ξανανεβει ετσι?


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Andromedas on November 26, 2016, 20:45:03 pm
Το spawn_lvl γιατί χρειάζεται;
για να ξέρεις που έκανε spawn το thread ώστε όταν γυρίσει να μπορείς να το αφαιρέσεις από τον συνολικό αριθμό των threads. Γενικά τα έχω detached αρά πρέπει να υπάρχει ένας μηχανισμός για να αυξομειώνεται ο αριθμός των ενεργών. Με join καθυστερούν τσάμπα στην δικιά μου υλοποίηση.
/εδιτ
πχ το main thread έχει spawn 0 τα 7 επόμενα έχουν 1. και κατεβαίνουν μέχρι να βρουν leaf και να ξανανεβαίνουν προς τα πάνω κάνω έναν έλεγχο όταν φτάσουν το spawn level κάνουν lock την mutex και προσθέτουν στον αριθμό των διαθέσιμων thread και "πεθαίνουν". Δεν είναι τόσο γρήγορο όσο thread pool αλλά δεν χρειάζεται join σε κάθε level ώστε να έχεις σωστά τον αριθμό των spawned thread


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: lodi on November 27, 2016, 02:51:05 am
Γενικά είναι λογικό ο σειριακός χρόνος να μειώνεται κάτω από το υποδιπλάσιο όταν παίζουν μόνο 2 thread ? Ας πούμε η cilk_plus στην hash code για κύβο κάπως έτσι συμβαίνει.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: DoraTheExplorer on November 27, 2016, 03:24:35 am
Λίγο πιο συγκεκριμένα, εννοείς ότι για το ίδιο ακριβώς πρόβλημα και το ίδιο μέγεθος προβλήματος χρονομετρείς λιγότερο από μισό χρόνο σε σχέση με το σειριακό χρησιμοποιώντας 2 νήματα; Επίσης η επεξεργασία με 2 νήματα παράγει τα ίδια αποτελέσματα με το σειριακό;
Δε τα ρωτάω αυτά γιατί αυτό που λες δεν γίνεται, απλά για να υπάρχει σιγουριά πάνω στη σύγκριση που κάνεις.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: lodi on November 27, 2016, 03:59:58 am
ναι, για το ίδιο πρόβλημα και ίδιο μέγεθος προβλήματος και για τα ίδια αποτελέσματα . χρονομετρώ για 2 νήματα χρόνο κάτω από τον υποδιπλάσιο χρόνο που κάνει ο σειριακός. Είναι δυνατόν να συμβαίνει αυτό ;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: DoraTheExplorer on November 27, 2016, 05:05:15 am
Επίσης πάλι για σιγουριά, χρησιμοποιείς τα ίδια flags βελτιστοποιήσεων στο compile σειριακού και παράλληλου;  Αυτά τα αποτελέσματα τα παίρνεις στο Διάδη; Και για τι διαφορά στο χρόνο μιλάμε και ποια η τάξη μεγέθους, γιατί παίζει και το στατιστικό λάθος. Βασικά ρώτησα παρότι δεν έχω χρησιμοποιήσει ποτέ Cilk απλά μου κάνει εντύπωση αν πετυχαίνει όντως κάτι τέτοιο.
Ένας πιθανός λόγος ίσως να είναι η αξιοποίηση του cache memory, δηλαδή αν ο φόρτος μοιραστεί ισόποσα σε άλλα διαθέσιμα cores του επεξεργαστή (όπως είναι και το επιθυμητό) τότε δύο παράλληλες διεργασίες θα δουλέψουν ανεξάρτητα με ταχύτερη πρόσβαση στις τοπικές μνήμες τους που θα έχουν φορτώσει αντίστοιχα τα διαμοιρασμένα δεδομένα. Η single core εκτέλεση αντίστοιχα ίσως να σπαταλούσε χρόνο για πρόσβαση σε πιο αργή μνήμη για τα ίδια δεδομένα. Αυτό με μικρή επιφύλαξη γιατί δε ξέρω μέχρι τι μεγέθους προβλήματα, από άποψη δεδομένων, μπορεί να συμβεί κάτι τέτοιο και δε ξέρω καθόλου τι παίζει με την εργασία που κάνετε, δηλαδή τι ανεξαρτησία υπάρχει στο διαμοιρασμό των δεδομένων. http://stackoverflow.com/questions/944966/cache-memories-in-multicore-cpus
Γενικά αυτό θα σήκωνε λίγο ψάξιμο, αν βεβαιωθείς οτί όντως έτσι είναι ρώτα καλύτερα και τους διδάσκοντες.
Μπορείς να δεις και αυτό που εμπίπτει σ αυτήν την κατηγορία, δηλαδή το extra speed-up και πως δικαιολογείται με βάση το υλικό
https://en.wikipedia.org/wiki/Speedup#Super-linear_speedup


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: lodi on November 27, 2016, 13:14:15 pm
ευχαριστώ πολύ !! ναι τα ίδια flags και από τον Διάδη. Θα το επισημάνω στην αναφορά ως περίεργο φαινόμενο και θα δείξει. Κατάλαβα πάνω κάτω τι λες. Επισυνάπτω το screenshot από το διάγραμμμα άμα θες να το δεις.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Ancient on November 27, 2016, 14:54:14 pm
ευχαριστώ πολύ !! ναι τα ίδια flags και από τον Διάδη. Θα το επισημάνω στην αναφορά ως περίεργο φαινόμενο και θα δείξει. Κατάλαβα πάνω κάτω τι λες. Επισυνάπτω το screenshot από το διάγραμμμα άμα θες να το δεις.

και εμένα μου συμβαίνει. πιθανότατα διαφορετικός τρόπος με τον οποίο γίνεται compile η cilk for - διαφορετικο optimization.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: titos on November 27, 2016, 15:50:42 pm
Αφου εχω παρει τα results για τους χρόνους με την read_data,πως τα αξιοποιώ για να φτιάξω διάγραμμα?Μπορεί κάποιος να δώσει ένα παράδειγμα ..κάτι..γτ δε πολυσκαμπάζω από matlab...


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: DoraTheExplorer on November 27, 2016, 18:12:41 pm
ευχαριστώ πολύ !! ναι τα ίδια flags και από τον Διάδη. Θα το επισημάνω στην αναφορά ως περίεργο φαινόμενο και θα δείξει. Κατάλαβα πάνω κάτω τι λες. Επισυνάπτω το screenshot από το διάγραμμμα άμα θες να το δεις.

Ναι το είδα, τώρα μου φαίνεται πως αυτά που έγραψα παραπάνω δεν εξηγούν αυτήν την περίπτωση γιατί παραείναι μεγάλο το speedup. Μια ματιά που έριξα στο μοντέλο της Cilk όμως δεν κατάλαβα πως αντιστοιχίζονται ακριβώς threads στο παράλληλο πρόγραμμα; Ίσως να πρέπει να ερμηνεύσετε διαφορετικά τον τρόπο που διαμοιράζεται η διεργασία σε threads. Πχ αυτό που έχει σαν παράδειγμα εδώ, μετά από μερικές αναδρομικές κλήσεις θα έχει αναθέσει σε όλα τα cores δουλειά https://www.cilkplus.org/tutorial-cilk-plus-keywords#spawn_and_sync




Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Επικο Burger on November 27, 2016, 21:34:27 pm
Diadis down?


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Ροζ συννεφάκι on November 28, 2016, 00:47:03 am
πήγε μέχρι τις 8 το πρωί ή μου φαίνεται?


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Vlassis on November 28, 2016, 01:33:04 am
πήγε μέχρι τις 8 το πρωί ή μου φαίνεται?
πηγε  ^wav^


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 1
Post by: Ροζ συννεφάκι on November 28, 2016, 01:42:18 am
τι ωραίο που ήταν αυτό!  :D