THMMY.gr

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



Title: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: Vlassis on November 29, 2016, 16:39:04 pm
Topic που αφορά την 2η εργασία του μαθήματος. Stay on topic!

Η  2η  εργασία  έχει  ανακοινωθεί  στο  Περιεχόμενα/Ασκήσεις.
εκφώνηση: http://alexander.ee.auth.gr:8083/eTHMMY/archive/173/downloadFile/6622/game-of-life.pdf

http://alexander.ee.auth.gr:8083/eTHMMY/archive/173/downloadFile/6622/game-of-life-v1.0.tar.gz (http://alexander.ee.auth.gr:8083/eTHMMY/archive/173/downloadFile/6622/game-of-life-v1.0.tar.gz)
http://alexander.ee.auth.gr:8083/eTHMMY/archive/173/downloadFile/6622/example.pbs (http://alexander.ee.auth.gr:8083/eTHMMY/archive/173/downloadFile/6622/example.pbs)


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: BADBANE on December 08, 2016, 17:20:06 pm
Κατάφερε να τρέξει κανένας έστω και ένα απλό hello στο grid?   :'(


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: kaspas on December 08, 2016, 17:24:14 pm
κατάφερες να ανεβάσεις αρχεία στο grid; Εμένα δεν με αφήνει :/


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: BADBANE on December 08, 2016, 20:12:26 pm
Τα ανέβασα μέσω του winscp και προσπαθώ να το τρέξω μέσω του putty
Compile κατάφερα να κάνω στο grid αλλα δεν τρέχει τιποτα  :-\


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: lomptzoit on December 08, 2016, 22:05:09 pm
Από cygwin έτρεξε


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: Terzos on December 09, 2016, 00:08:53 am
Και γω τα κατάφερα από ubuntu. Έχω όμως την εξής απορία: Το home directory είναι ίδιο με το $SCRATCHDIR. Αυτό είναι λογικό; Δηλαδή φτιάχνουμε κανονικά jobs από το home;

/edit: Κατάφερα να το τρέξω από το UI. Όταν όμως κάνω submit, το job μένει για πάντα στο Queue


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: fanaks on December 09, 2016, 13:34:37 pm
 Σχετικά με το compile και την εκτελεση στο cygwin εγω αυτο που εκανα ηταν να κατεβασω τα αντιστοιχα πακέτα mpi απο το setup του cygwin και στο makefile να αντικαταστήσω το gcc με mpicc μετα να εκτελέσω το makefile για να κάνει compile το προγραμμα και έπειτα ετρεξα το εκτελέσιμο με  την εντολή mpirun π.χ mpirun -np 4 game-of-life.exe 10 0.5 2 1 και μεχρι στιγμής ολα καλά.Στην ουσία κάνεις με mpicc compile και με mpirun τρεχεις το προγραμμα.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: BADBANE on December 09, 2016, 15:22:42 pm
+1 fanaks έτσι το κανα και γω στο cygwin.

/mnt/uiwork/home/pdlabXXX    και

/mnt/scratchdir/home/pdlabXXX

τα ui και scratch directories.

Νομίζω από το δεύτερο πρέπει να τρέξουμε τις εργασίες αλλα δεν έχω ιδέα πως. Τις ανέβασα και εδω μέσω winscp.

edit: στο $SCRATCHDIR ανεβαζετε κωδικα και φτιαξτε ενα script.sh

#!/bin/bash
#PBS -q auth
#PBS -N mpi-mm
#PBS -j oe
#PBS -l nodes=1:ppn=8

cd $PBS_O_WORKDIR
export NP=$(cat $PBS_NODEFILE | wc -l)

export I2G_MPI_TYPE=mpich2
export I2G_MPI_APPLICATION=mm
$I2G_MPI_START

στο auth βαλτε pdlab (σκετο χωρις 000 whatever) και το mm είναι το ονομα του εκτελεσιμου σας

qsub script.sh ανεβαινει και τρέχει και με το qstat τσεκάρεις την κατασταση του.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: Vlassis on December 09, 2016, 17:39:21 pm
Ανανεωθηκε η εκφωνηση, προσοχη  :D


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: kaspas on December 09, 2016, 20:24:56 pm
Βρήκε κανείς πως τρέχουμε στο pc μας με mpi έστω το hello-world;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: BADBANE on December 09, 2016, 20:47:42 pm
Βρήκε κανείς πως τρέχουμε στο pc μας με mpi έστω το hello-world;
3 ποστ πάνω


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: Andromedas on December 09, 2016, 21:29:04 pm
Βρήκε κανείς πως τρέχουμε στο pc μας με mpi έστω το hello-world;
με cygwin https://cygwin.com/ml/cygwin/2014-06/msg00410.html
σε unix-like έχει πολλά αντίστοιχα


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: Terzos on December 10, 2016, 16:14:14 pm
edit: στο $SCRATCHDIR ανεβαζετε κωδικα και φτιαξτε ενα script.sh

#!/bin/bash
#PBS -q auth
#PBS -N mpi-mm
#PBS -j oe
#PBS -l nodes=1:ppn=8

cd $PBS_O_WORKDIR
export NP=$(cat $PBS_NODEFILE | wc -l)

export I2G_MPI_TYPE=mpich2
export I2G_MPI_APPLICATION=mm
$I2G_MPI_START

στο auth βαλτε pdlab (σκετο χωρις 000 whatever) και το mm είναι το ονομα του εκτελεσιμου σας

qsub script.sh ανεβαινει και τρέχει και με το qstat τσεκάρεις την κατασταση του.

Thank you, προσπαθούσα χθες πόση ώρα να κάνω submit.  :)


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: Terzos on December 10, 2016, 20:00:24 pm
...
#PBS -l nodes=4:ppn=8
...
export NP=4
...

Γενικά πως ελέγχουμε πόσα tasks θα δημιουργηθούν ανά πόσα nodes ή processors?
Με λίγο πειραματισμό διαπίστωσα ότι η export NP=4 δεν επηρρεάζει καθόλου την έξοδο του προγράμματός μου το οποίο δημιουργεί nodesxppn tasks άσχετα με το τι θέτω στο NP

hello-MPI.c:
Code:
#include <mpi.h>

int main(int argc, char **argv) {
  int SelfTID, NumTasks, t, data;
  MPI_Status mpistat;
  MPI_Init( &argc, &argv );
  MPI_Comm_size( MPI_COMM_WORLD, &NumTasks );
  MPI_Comm_rank( MPI_COMM_WORLD, &SelfTID );
  printf("Hello World from %i of %i\n",SelfTID,NumTasks);
  if( SelfTID == 0 ) {
    for(t=1;t<NumTasks;t++) {
      data = t;
      MPI_Send(&data,1,MPI_INT,t,55,MPI_COMM_WORLD);
    }
  } else {
    MPI_Recv(&data,1,MPI_INT,0,55,MPI_COMM_WORLD,&mpistat);
    printf("TID%i: received data=%i\n",SelfTID,data);
  }
  MPI_Finalize();
  return( 0 );
}

Μία λύση στο πρόβλημά μου θα ήταν να ανιχνέυω από το πρόγραμμα σε ποιο Node δουλεύει το κάθε task και να δουλεύω μόνο σε ένα task/node, δηλαδή να "κοιμίζω" τα υπόλοιπα. Μήπως υπάρχει κάποιος πιο ωραίος τρόπος;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: Terzos on December 10, 2016, 23:04:22 pm
-Παίζει το παιχνίδι για t γενιές (επαναλήψεις), χρησιμοποιώντας σε κάθε υποτμήμα υλοποίηση σε OpenMP

-Χρησιμοποιεί προχωρημένες εντολές MPI-3, για την επικοινωνία μεταξύ των διεργασιών (shared memory - RMA).

Μετά από λίγο διάβασμα στο ίντερνετ καταλαβαίνω η υλοποίηση με MPI-3 είναι εναλλακτική της υλοποίησης με MPI και OpenMP. Καταλαβαίνω κάτι λάθος; Μήπως πρέπει να κάνουμε και τα 2;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: Andromedas on December 10, 2016, 23:28:54 pm
-Παίζει το παιχνίδι για t γενιές (επαναλήψεις), χρησιμοποιώντας σε κάθε υποτμήμα υλοποίηση σε OpenMP

-Χρησιμοποιεί προχωρημένες εντολές MPI-3, για την επικοινωνία μεταξύ των διεργασιών (shared memory - RMA).

Μετά από λίγο διάβασμα στο ίντερνετ καταλαβαίνω η υλοποίηση με MPI-3 είναι εναλλακτική της υλοποίησης με MPI και OpenMP. Καταλαβαίνω κάτι λάθος; Μήπως πρέπει να κάνουμε και τα 2;
Νομίζω ότι είσαι σωστός. Κάπως έτσι το υλοποιώ και εγώ ...
Το MPI3 έχει περισσότερα από το MPI1 πχ unblocking call και συγκεκριμένα την shared memory RMA το οποίο μας ζητάει να υλοποιήσουμε κιόλας. Και από ότι κατάλαβα μέχρι τώρα ο συγχρονισμός θα γίνει με το access στην shared μεταβλητή.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: fanaks on December 11, 2016, 02:34:40 am
Τελικά ρε παιδιά πως πρέπει να κάνουμε την τομή του πίνακα,σε ορθογώνια ή τετράγωνα.Έχω την εντύπωση οτι το θέλει σε τετράγωνα,μετά ξεφεύγει ομως λίγο η υλοποίηση αν θες να την κάνεις να έχει γενική ισχύ ή κάνω λάθος.Εσείς πώς το κάνετε?


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: fanaks on December 11, 2016, 02:39:44 am
Νομίζω ότι είσαι σωστός. Κάπως έτσι το υλοποιώ και εγώ ...
Το MPI3 έχει περισσότερα από το MPI1 πχ unblocking call και συγκεκριμένα την shared memory RMA το οποίο μας ζητάει να υλοποιήσουμε κιόλας. Και από ότι κατάλαβα μέχρι τώρα ο συγχρονισμός θα γίνει με το access στην shared μεταβλητή.
Απο ότι αναφέρθηκε στο μάθημα και κατάλαβα και εγώ αυτό που πρέπει απλά να κάνουμε είναι να γράψουμε το πρόγραμμα σε MPI και στα σημεία του κώδικα με πολλές επαναλήψεις να κάνουμε παραλληλοποίηση με νήματα σε openMP.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: ReMi0s on December 11, 2016, 13:52:17 pm
εγώ προσπαθώ απο εχθές να κάνω έστο το κομμάτι του OpenMP. Καλύτερους χρόνου παίρνω μόνο για την Play, για ολες τις άλλες ( init, generate) με openMP παίρνω πολύ χειρότερους χρόνους.. Κανείς που το κατάφερε;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: TrueForce on December 11, 2016, 14:24:07 pm
^Χωρις να έχω δει την εργασία και κρίνοντας μόνο από τα ονόματα των συναρτήσεων, μήπως τις init και generate δε χρειάζεται/δεν έχει νόημα να τις παραλληλοποιήσεις και πρέπει να τις κάνει μόνο το master task;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: ReMi0s on December 11, 2016, 17:42:52 pm
^Χωρις να έχω δει την εργασία και κρίνοντας μόνο από τα ονόματα των συναρτήσεων, μήπως τις init και generate δε χρειάζεται/δεν έχει νόημα να τις παραλληλοποιήσεις και πρέπει να τις κάνει μόνο το master task;
εγώ θεωρώ οτι δεν πρέπει να τις κάνει το master task, καθώς ο στόχος μας πέραν απο τη ταχύτητα υλοποίησης είναι και να μπορεί το πρόγραμμα να λειτουργήσει για μεγάλους πίνακες.
Αμα κάνει generate ολοκληρο τον πίνακα ένα τασκ, στην ουσία κρατάει στην μνήμη του έναν πολύ μεγάλο πίνακα, με πιθανότητα αν δεν επαρκεί η μνήμη το πρόγραμμα να σταματήσει.. Το σκέφτομαι λάθος;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: Aristos on December 11, 2016, 17:43:07 pm
η initialize_board είναι περίεργη έτσι και αλλιώς γιατί δεν έχει λόγο ύπαρξης αν καλέσει κάποιος την generate_table.
η αρχικοποίηση του παιχνιδιού γενικότερα όμως, νομίζω έχει περισσότερο νόημα να γίνει σε κομμάτια. διαφορετικά θα πρέπει να μεταφερθούν οι πίνακες που θα προκύψουν από το master task στα υπόλοιπα. χρονοβόρα και μάλλον περιττή διαδικασία.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: BADBANE on December 11, 2016, 23:40:37 pm
Εγώ έθεσα να δημιουργείται πίνακας με βάση τα πόσα tasks έχουν δοθεί μιας και παίρνουμε στάνταρ περιπτώσεις  1 -> 4Χ4, 2->8Χ4 και 4->8Χ8.
Αλλά όντως όπως είπε ο terzos δε κατάλαβα πως θα δοθεί ο αριθμός των tasks μέσα απ' το script.
Σχετικά με MPI3. Εγώ κατάλαβα ότι σπάμε το πρόγραμμα στα διάφορα tasks και αυτά επικοινωνούν μεταξύ τους (MPI) και όπου μπορούμε παραλληλοποιούμε με openmp όπως στην πρώτη εργασία (τις for μιας και έχει πολλές).


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: Vlassis on December 12, 2016, 02:41:16 am
ανεξαρτητα απο την αρχικοποιηση, δεν θα πρεπει και τα αποτελεσματα ολων να επιστρεφονται σε ενα process πχ στο master, ωστε αυτο να επιστραφει και στο τελος του προγραμματος;
αρα θα πρεπει ετσι κ αλλιως σε ενα process καποια στιγμη να δεσμευσεις μνημη για ολοκληρο τον πινακα (80K x 80K πχ), οποτε δεν αρχικοποιεις σε κομματια
μπορει να εχω καταλαβει και βλακεια, δεν ειμαι σιγουρος  :???:  :P


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: orestisf on December 12, 2016, 03:36:31 am
Καθως ο board ειναι σε int: 80000 * 80000 * 4 ειναι περιπου 25.6 GB. Δεν νομιζω 1 node στο hellas grid να εχει τοσο μνημη ωστε να χωρεσει ολος ο πινακας. Οποτε η μονη λυση ειναι η εγγραφη κομματι κομματι σε αρχειο για την αποθηκευση του αποτελεσματος (το οποιο ειναι πιο λογικο να γινει σε ανα node). Γενικα δεν νομιζω οτι το νοημα της εργασιας ειναι τοσο η αποθηκευση του αποτελεσματατος αλλα ο υπολογισμος.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: kaspas on December 12, 2016, 14:35:35 pm
Πρέπει να βάλουμε και χρονόμετρα για να βλέπουμε πόσο χρόνο κάνει ή μπορεί να γίνει στο grid αλλιώς;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: BADBANE on December 12, 2016, 17:12:40 pm
ανεξαρτητα απο την αρχικοποιηση, δεν θα πρεπει και τα αποτελεσματα ολων να επιστρεφονται σε ενα process πχ στο master, ωστε αυτο να επιστραφει και στο τελος του προγραμματος;
αρα θα πρεπει ετσι κ αλλιως σε ενα process καποια στιγμη να δεσμευσεις μνημη για ολοκληρο τον πινακα (80K x 80K πχ), οποτε δεν αρχικοποιεις σε κομματια
μπορει να εχω καταλαβει και βλακεια, δεν ειμαι σιγουρος  :???:  :P

Γιεπ αυτό γινεται.
Με 3 if αναλογα τον αριθμό των processes φτιάχνεις το αναλογο ταμπλό.. Έστω 8χ8, κανεις mpi_scatter σε 4 processes(οριζοντας ποιο τμημα του μεγαλου board θα παρει το κάθε υποτμημα), τρέχει η play συνάρτηση και έπειτα κανεις mpi_gather



Edit: οντως τωρα που ειναι 40.000 κ οχι 4000 είναι μεγάλο για αποθήκευση.. Ισως κάνοντας gather σε εναν μεγάλο πίνακα να θεωρηθεί οτι "τελείωσε το πρόγραμμα.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: kaspas on December 12, 2016, 19:00:41 pm
Παιδια η μόνη που χρειάζεται επικοινωνία μεταξύ των processes είναι η play έτσι;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: lodi on December 12, 2016, 22:06:22 pm
Quote
edit: στο $SCRATCHDIR ανεβαζετε κωδικα και φτιαξτε ενα script.sh

#!/bin/bash
#PBS -q auth
#PBS -N mpi-mm
#PBS -j oe
#PBS -l nodes=1:ppn=8

cd $PBS_O_WORKDIR
export NP=$(cat $PBS_NODEFILE | wc -l)

export I2G_MPI_TYPE=mpich2
export I2G_MPI_APPLICATION=mm
$I2G_MPI_START

στο auth βαλτε pdlab (σκετο χωρις 000 whatever) και το mm είναι το ονομα του εκτελεσιμου σας

qsub script.sh ανεβαινει και τρέχει και με το qstat τσεκάρεις την κατασταση του.

όταν λες όπου mm βάζω το εκτελέσιμο εννοείς να το έχω κάνει ήδη compile. Πώς κάνουμε compile για mpi στο grid ?


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: BADBANE on December 12, 2016, 22:59:25 pm
^^ φανταζομαι ναι
^ mpicc αντι για gcc (που καναμε στα προηγουμενα), μετα ολα τα .c και .h και
-o GameOfLife


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: ReMi0s on December 12, 2016, 23:36:14 pm
Προσπαθώ να τρέξω στο hellas grid αλλα μου βγάζει error
=>> PBS: job killed: walltime 158 exceeded limit 120
ξέρει κανείς τπτ για αυτό;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: Andromedas on December 12, 2016, 23:44:23 pm
Προσπαθώ να τρέξω στο hellas grid αλλα μου βγάζει error
=>> PBS: job killed: walltime 158 exceeded limit 120
ξέρει κανείς τπτ για αυτό;
νομίζω είναι ο default επιτρεπτός χρόνος 120 sec. Εάν κάνει παραπάνω γίνεται kill η εργασία. Δεν είμαι 100% σίγουρος, τσεκαρε να ρίξεις τον αριθμό των κελιών για να κάνεις λιγότερο χρόνο.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: Ancient on December 13, 2016, 00:07:05 am
Δε χρειάζεται (και δε πρέπει) να "επιστρέψει" το σύνολο του πίνακα στη master διεργασία...


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: ReMi0s on December 13, 2016, 00:50:21 am
Δε χρειάζεται (και δε πρέπει) να "επιστρέψει" το σύνολο του πίνακα στη master διεργασία...
Δεν το επιστρέφω σε καμία διεργασία.
Το πρόγραμμα δεν τρέχει για 40000Χ40000 για μια διεργασια που ζητάει, γενικα για τέτοια νούμερα πρέπει να ανεβάσω τον αριθμό των nodes.
Σε σας τρέχει για τέτοια νούμερα και μια διεργασία;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: BADBANE on December 13, 2016, 01:14:04 am
Δεν έχω καταλάβει την συσχετιση nodes και ppn με τον αριθμο των διεργασιών που πρέπει να δημιουργήσουμε...  Πως ακριβώς παει; Για δημιουργια 1, 2 και 4 διεργασιών που ζητάει το προβλημα τι πρέπει να βάλω στο script?

edit: nodes*ppn απ' ότι ειδα σωστά ?


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: ReMi0s on December 13, 2016, 01:48:36 am
Δεν έχω καταλάβει την συσχετιση nodes και ppn με τον αριθμο των διεργασιών που πρέπει να δημιουργήσουμε...  Πως ακριβώς παει; Για δημιουργια 1, 2 και 4 διεργασιών που ζητάει το προβλημα τι πρέπει να βάλω στο script?

edit: nodes*ppn απ' ότι ειδα σωστά ?
χωρίς να είμαι απόλυτα σίγουρος
node=άλλος υπολογιστής
ppn =αλλος επεξεργαστής

έτσι αν βάλεις 2 node και 2 ppn θα τρέξει σε 2 "υπολογιστές" και στον καθένα θα τρέξουν 2 διεργασίες. Σύνολο 4


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: kaspas on December 13, 2016, 03:04:54 am
χωρίς να είμαι απόλυτα σίγουρος
node=άλλος υπολογιστής
ppn =αλλος επεξεργαστής

έτσι αν βάλεις 2 node και 2 ppn θα τρέξει σε 2 "υπολογιστές" και στον καθένα θα τρέξουν 2 διεργασίες. Σύνολο 4
Δηλαδή εφόσον χρησιμοποιούμε και openmp καλύτερα να βάλουμε τα processes σε διαφορετικά nodes;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: ReMi0s on December 13, 2016, 14:33:44 pm
Δηλαδή εφόσον χρησιμοποιούμε και openmp καλύτερα να βάλουμε τα processes σε διαφορετικά nodes;
Λογικά ναι, θα πάρεις καλύτερο αποτέλεσμα αν καθε ένα node τρέχει μια διεργασία, όσον αφορά το OpenMp.
Αλλά ο κυριότερος λόγος για να χρησιμοποιήσεις άλλο node είναι η μνήμη .


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: Andromedas on December 13, 2016, 16:01:41 pm
Η επικοινωνία μεταξύ των nodes  συνήθως είναι πιο χρονοβόρα αντί σε διεργασίες σε ένα node.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: ReMi0s on December 13, 2016, 16:22:56 pm
Τελικά έχει καταφέρει κανείς να τρέξει το πρόγραμμα για τα νούμερα που ζητάει;
Εμένα δεν τρέχει πχ για 40000*40000 και μία διεργασία, ενώ τρέχει για 39999*39999


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: fanaks on December 13, 2016, 23:18:01 pm
Προσπαθώ να τρέξω στο hellas grid αλλα μου βγάζει error
=>> PBS: job killed: walltime 158 exceeded limit 120
ξέρει κανείς τπτ για αυτό;
+1
Έχει βρει μήπως κάποιος τι παίζει?


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: Andromedas on December 13, 2016, 23:33:38 pm
Ναι ρώτησα τον Φλώρο. Είναι χρόνος τερματισμού δεν σε αφήνει πάνω από δυο λεπτά να τρέξει και δεν μπορούμε να το αλλάξουμε εμείς. Γενικά ειπέ ότι πρεπεί να είναι κάτω από 2 λεπτά...


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: ReMi0s on December 13, 2016, 23:38:29 pm
Εγώ πάντως είδα οτι για 40000*40000 που ζητάει μόνο το init+generate παίρνει πάνω απο 120 δευτερόλεπτα. Δεν μπαίνει οπότε ουτε καν στην play.
Και το γαμάτο είναι οτι δεν μπορείς να πειράξεις με OpenMp την generate, η τουλάχιστον εγώ δεν το κατάφερα να μου δώσει καλύτερους χρόνους...

Αλήθεια είναι κανείς που έκανε την Generate να δίνει καλύτερους χρόνους;


Τελικά κατάφερα να το τρέξω για 40000*40000 , είχα κάνει λάθος στην generate και αντί να γεμίζει τον πίνακα μια μια γραμμή, τον γέμμιζε μια μια στήλη. Δεν ξέρω για ποιο λόγο  αλλα το αποτέλεσμα ήταν ΠΟΛΥ χειρότερο έτσι, ενώ στην ουσία κάνει τον ίδιο αριθμό πράξεων.
Για όσους ίσως έχουν παρόμοιο πρόβλημα.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: Terzos on December 14, 2016, 01:37:14 am
Προσπαθώ να χρησιμοποιήσω την συνάρτηση MPI_Comm_split_type για να χωρίσω τον communicator σε groups με το ίδιο node σύμφωνα με αυτό: https://cvw.cac.cornell.edu/mpiadvtopics/splitting (https://cvw.cac.cornell.edu/mpiadvtopics/splitting)
Όταν πάω να κάνω compile παίρνω το εξής:
hello-MPI.c:23: error: ‘MPI_COMM_TYPE_SHARED’ undeclared (first use in this function)
hello-MPI.c:23: error: (Each undeclared identifier is reported only once
hello-MPI.c:23: error: for each function it appears in.)

Μήπως δεν υποστηρίζονται οι εντολές MPI-3;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: Andromedas on December 14, 2016, 01:56:19 am

hello-MPI.c:23: error: ‘MPI_COMM_TYPE_SHARED’ undeclared (first use in this function)
κάνεις include mph.h φαντάζομαι ;

/εδιτ με αυτό πάντως πώς θα κάνεις τις διαγώνιες επικοινωνίες ; το ρωτάω γιατί προσπάθησα με cart και δεν έβγαλα ακρή  :-\
/εδιτ2
και δεν βρήκα τον τύπο MPI_Comm_split που βλεπώ στο link
https://cvw.cac.cornell.edu/mpiadvtopics/splitting (https://cvw.cac.cornell.edu/mpiadvtopics/splitting)
  που λες στην έκδοση 3.1 MPICH
https://www.mpich.org/static/docs/v3.1/www3/MPI_Comm_split.html


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: Terzos on December 14, 2016, 20:55:24 pm
Ξέρει κανείς πως περνάμε τα arguments στο πρόγραμμα στο script?


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: ReMi0s on December 15, 2016, 03:37:49 am
Ξέρει κανείς πως περνάμε τα arguments στο πρόγραμμα στο script?

Code:
#PBS -N game-of-life
#PBS -q pdlab
#PBS -j oe
#PBS -l nodes=1:ppn=1

module load mpi/mpich3-x86_64

cd $PBS_O_WORKDIR
echo "====test Run starts now ======= `date` "

mpiexec -np $PBS_NP ./game-of-life 20000 20000 0.5 3 0 8 &> $PBS_JOBNAME.log

echo "====test Run ends now ======= `date` "

και τα αλλάζεις εσύ για κάθε διαφορετικό τεστ.
Δεν είναι πολλές οι δοκιμές άλλωστε


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: Terzos on December 15, 2016, 19:28:32 pm

Ευχαριστώ  :)

Δεν ξέρω άμα έχει σημασία αλλά όταν λέει 80000x40000 το 80 είναι οι στήλες και το 40 οι γραμμές;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: ReMi0s on December 15, 2016, 21:14:15 pm
Ναι συνήθως έτσι συμβολίζεται  8))
Σορρυ μπερδεύτηκα το ανάποδο απο αυτό που είπες

Μπορεί κάποιος να εξηγήσει τι διαφορά έχει το MPI-3 που ζητάει στην εκφώνηση;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: ditroo on December 15, 2016, 21:48:01 pm
80x40 είναι 80 γραμμές και 40 στήλες


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: Vlassis on December 16, 2016, 00:01:29 am
η συνάρτηση adjacent_to() που υπαρχει μεσα στο helpers.c, υπολογιζει τον αριθμο ολων των γειτονων;
νομιζω οτι μετραει μονο 4 γειτονες, ή το χανω καπου;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: Ancient on December 16, 2016, 00:09:56 am
η συνάρτηση adjacent_to() που υπαρχει μεσα στο helpers.c, υπολογιζει τον αριθμο ολων των γειτονων;
νομιζω οτι μετραει μονο 4 γειτονες, ή το χανω καπου;

8 γείτονες :

k=-1: (x-1, y-1), (x-1, y) , (x-1, y+1),

k=0:  (x, y-1), (x,y) το προσπερνά, (x, y+1),

k=1: (x+1, y-1), (x+1, y), (x+1, y+1)


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: Vlassis on December 16, 2016, 00:23:32 am
8 γείτονες :

k=-1: (x-1, y-1), (x-1, y) , (x-1, y+1),

k=0:  (x, y-1), (x,y) το προσπερνά, (x, y+1),

k=1: (x+1, y-1), (x+1, y), (x+1, y+1)
ωω ναι true για καποιο λογο σκεφτομουν το k || l ως k && l, σκαλωμα
θενξξ  ;)


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: Andromedas on December 16, 2016, 02:21:45 am
Μπορεί κάποιος να εξηγήσει τι διαφορά έχει το MPI-3 που ζητάει στην εκφώνηση;
Από το mpi-1 ή το mpi-2 έχει κάποια χαρακτηριστικά παραπάνω.
Συγκεκριμένα ζητάει στην εκφώνηση RMA που είναι (νομίζω) μόνο στο MPI3 αλλά ρώτησα τον Φλώρο και είπε ότι μπορoύμε να το κάνουμε όπως θέλουμε και ότι για ευκολία μας έγραψε RMA.
Έχω να πω όμως το εξής: χθες το έκανα να επικοινωνεί με RMA (στο pc μου) και επειδή τα παραδείγματα κώδικα είναι λίγα (πιο λίγα από τα αντίστοιχα send και receive) έχει πολύ steep learning curve αλλά είναι όταν το βγάλεις μια φορά είναι λίγο πιο γρήγορο στο να το γράψεις από το send-receive.
Εάν θες να πω περισσότερα για RMA πες.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: kaspas on December 16, 2016, 03:13:22 am
Εγώ πάντως είδα οτι για 40000*40000 που ζητάει μόνο το init+generate παίρνει πάνω απο 120 δευτερόλεπτα. Δεν μπαίνει οπότε ουτε καν στην play.
Και το γαμάτο είναι οτι δεν μπορείς να πειράξεις με OpenMp την generate, η τουλάχιστον εγώ δεν το κατάφερα να μου δώσει καλύτερους χρόνους...

Αλήθεια είναι κανείς που έκανε την Generate να δίνει καλύτερους χρόνους;


Τελικά κατάφερα να το τρέξω για 40000*40000 , είχα κάνει λάθος στην generate και αντί να γεμίζει τον πίνακα μια μια γραμμή, τον γέμμιζε μια μια στήλη. Δεν ξέρω για ποιο λόγο  αλλα το αποτέλεσμα ήταν ΠΟΛΥ χειρότερο έτσι, ενώ στην ουσία κάνει τον ίδιο αριθμό πράξεων.
Για όσους ίσως έχουν παρόμοιο πρόβλημα.
Τελικά παραλληλοποίησες με openmp την generate;
Εμένα βγαίνει πολύ αργή.
Στο hellasgrid ακόμη μου βγάζει wall time
Code:
==== Run starts now ======= Fri Dec 16 01:19:32 EET 2016 
=>> PBS: job killed: walltime 151 exceeded limit 120



Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: lodi on December 16, 2016, 20:41:00 pm
Γνωρίζει κανείς αν η άσκηση χρειάζεται Virtual Topology ? Ευχαριστώ.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: Andromedas on December 16, 2016, 20:51:27 pm
Γνωρίζει κανείς αν η άσκηση χρειάζεται Virtual Topology ? Ευχαριστώ.

Γενικά κάποιον τρόπο πρέπει να βρεις να κάνεις τις επικοινωνίες με τις διεργασίες που γειτονεύουν. Τώρα επειδή υπάρχουν διαγώνιες επικοινωνίες δεν έχω βρει πως από την ενσωματωμένη cart (Cartesian topology) να κάνεις και κυκλική και διαγώνια "ομάδα" ή κάποιον άλλον τρόπο. Με γράφους δεν βρήκα κάτι αλλά δεν είμαι σίγουρος.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: ReMi0s on December 16, 2016, 22:15:55 pm
Τελικά παραλληλοποίησες με openmp την generate;
Εμένα βγαίνει πολύ αργή.
Στο hellasgrid ακόμη μου βγάζει wall time
Code:
==== Run starts now ======= Fri Dec 16 01:19:32 EET 2016 
=>> PBS: job killed: walltime 151 exceeded limit 120




όχι δεν τα κατάφερα γιατί μάλλον η rand() δεν είναι thread safe. Ωστόσο δες μήπως έχεις βάλει να γίνεται στήλη στήλη αντί για σειρα σειρά. Εγώ το είχα αφήσει καταλάθος έτσι και οι χρόνοι ήταν χάλια.
Βέβαια για μικρους πίνακες μου δίνει καλά αποτελέσματα, αλλα για μεγάλους μου δίνει χειρότερους με OpenMP.... ΔΕΝ ξέρω :P
Επίσης μπορείς να παραλείψεις το init, αν και δεν επιβαρύνει ιδιαίτερα


Από το mpi-1 ή το mpi-2 έχει κάποια χαρακτηριστικά παραπάνω.
Συγκεκριμένα ζητάει στην εκφώνηση RMA που είναι (νομίζω) μόνο στο MPI3 αλλά ρώτησα τον Φλώρο και είπε ότι μπορoύμε να το κάνουμε όπως θέλουμε και ότι για ευκολία μας έγραψε RMA.
Έχω να πω όμως το εξής: χθες το έκανα να επικοινωνεί με RMA (στο pc μου) και επειδή τα παραδείγματα κώδικα είναι λίγα (πιο λίγα από τα αντίστοιχα send και receive) έχει πολύ steep learning curve αλλά είναι όταν το βγάλεις μια φορά είναι λίγο πιο γρήγορο στο να το γράψεις από το send-receive.
Εάν θες να πω περισσότερα για RMA πες.
Φίλε μου άμα έδινες κάποιο Link που να περιέχει τις εντολές για MPI3 θα ήμουν ευγνώμων


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: Andromedas on December 16, 2016, 22:28:57 pm
Φίλε μου άμα έδινες κάποιο Link που να περιέχει τις εντολές για MPI3 θα ήμουν ευγνώμων
εγώ διάβασα τα tutorial από εδώ.
https://www.mpich.org/ αλλά το Mpi 3 από το link που δίνει  η εκφώνηση σου λέει τι αλλαγές έχει το MPI3. Οπότε μπορείς να βρεις από το internet ότι θες.  Τα tutorial https://www.mpich.org/documentation/guides/ του argonne advanced έχει παράδειγμα του RMA σχετικά νωρίς. Τωρα έχεις και τα DOC που έχουν όλες τις εντολές.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: ReMi0s on December 16, 2016, 22:43:11 pm
Είσαι ωραίος, αυτό το ppt θα με βοηθήσει πολύ.
Γενικά έχω τελειώσει την υλοποίηση μου με Isend και Irecv. Χρειάζεται να την αλλάξω σε shared memmory?


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: Andromedas on December 16, 2016, 22:55:47 pm
Είσαι ωραίος, αυτό το ppt θα με βοηθήσει πολύ.
Γενικά έχω τελειώσει την υλοποίηση μου με Isend και Irecv. Χρειάζεται να την αλλάξω σε shared memory?
Όχι το ρώτησα και λέει όπως θέλουμε το κάνουμε...


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: nikoscha on December 16, 2016, 22:58:06 pm
Τελικά χρησιμοποίησε κανέις virtual topology ή δεν αξίζει τον κόπο να ασχοληθώ ;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: Vlassis on December 16, 2016, 23:22:18 pm
Τελικά χρησιμοποίησε κανέις virtual topology ή δεν αξίζει τον κόπο να ασχοληθώ ;
χωρις να μου εχει βγει ολοκληρη η εργασια, απλα απ οσα εχω ακουσει βγαινει και χωρις αυτο, δεν χρειαζεται λογικα
εκτος αν θες να το ψαξεις μονος σου  :D

όχι δεν τα κατάφερα γιατί μάλλον η rand() δεν είναι thread safe.
σωστος ;) http://stackoverflow.com/questions/15411061/rand-with-multiple-threads (http://stackoverflow.com/questions/15411061/rand-with-multiple-threads)


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: Vlassis on December 17, 2016, 14:59:30 pm
οταν τρεχω στο grid μου βγαζει στο .log το εξης:
"./bin/game-of-life: error while loading shared libraries: libmpich.so.12.: cannot open shared object file: No such file or directory

και δεν τρεχει τιποταααααααααααααα
το πετυχε και κανενας αλλος αυτο μηπως;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: fibonacci on December 17, 2016, 19:07:56 pm
τελικά είναι θεμιτό να δημιουργείται πρώτα ο πίνακας ολόκληρος στο Master proccess πριν δημιουργήσουμε άλλες διεργασίες και έπειτα να γίνεται ο διαμοιρασμός αυτού ; ή είναι καλύτερα κάθε διεργασία να κάνει generate το δικό της κομμάτι και στην συνέχεια να έχουμε επικοινωνία των διεργασιών στην εξέταση των γειτόνων στην play;

Επίσης στην επικοινωνία των διεργασιών στην play ζητείται από την εκφώνηση να χρησιμοποιήσουμε  συναρτήσεις για RMA , όμως το tutorial δεν τις περιέχει . θα πρέπει να τις ψάξουμε μόνοι μας ή έχω καταλάβει κάτι λάθος ;

Ευχαριστώ


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: lodi on December 17, 2016, 19:10:58 pm
Quote

#!/bin/bash
#PBS -q auth
#PBS -N mpi-mm
#PBS -j oe
#PBS -l nodes=1:ppn=8

cd $PBS_O_WORKDIR
export NP=$(cat $PBS_NODEFILE | wc -l)

export I2G_MPI_TYPE=mpich2
export I2G_MPI_APPLICATION=mm
$I2G_MPI_START

το παραπάνω είναι το script για να τρέξουμε mpi στο grid. με qsub script.sh .
Όμως τις παραμέτρους πώς τις βάζουμε ?


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: fibonacci on December 17, 2016, 19:18:21 pm
το παραπάνω είναι το script για να τρέξουμε mpi στο grid. με qsub script.sh .
Όμως τις παραμέτρους πώς τις βάζουμε ?
Δες το 2ο post σελ 4


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: nikoscha on December 17, 2016, 19:19:50 pm
Γιατί την μία μου τρέχει κανονικά για 40κ και μετά απο 5 λεπτά για παραδειγμα χωρις να αλλάξω τίποτα μου βγάζει ότι δεν μπορεί να δεσμεύσει μνήμη ή ότι πέρασα τον επιτρεπτόμενο χρόνο ; Ξέρει κανείς τι παίζει με το grid??


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: Ancient on December 17, 2016, 19:39:22 pm
Γιατί την μία μου τρέχει κανονικά για 40κ και μετά απο 5 λεπτά για παραδειγμα χωρις να αλλάξω τίποτα μου βγάζει ότι δεν μπορεί να δεσμεύσει μνήμη ή ότι πέρασα τον επιτρεπτόμενο χρόνο ; Ξέρει κανείς τι παίζει με το grid??

Μάλλον δεν δέσμευσες όσους πυρήνες έπρεπε. Έλενξε αν έβαλες ppn=8.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: nikoscha on December 17, 2016, 19:41:59 pm
Αν βάλω ppn=8 το πρόγραμμα μου τρέχει 8 διαφορετικές φορές . Δεν έχω κανει υλοποιηση mpi ακομα , μονο openmp έκανα απλώς το τρέχω σαν mpicc. Αυτό φταίει που μου το τρέχει 8 φορες; Η φταιει οτι δεν εχω ορίσει ακόμα τι θα κανει το κάθε τασκ; Ευχαριστω εκ των προτέρων! 


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: Ancient on December 17, 2016, 19:46:21 pm
Αν βάλω ppn=8 το πρόγραμμα μου τρέχει 8 διαφορετικές φορές . Δεν έχω κανει υλοποιηση mpi ακομα , μονο openmp έκανα απλώς το τρέχω σαν mpicc. Αυτό φταίει που μου το τρέχει 8 φορες; Η φταιει οτι δεν εχω ορίσει ακόμα τι θα κανει το κάθε τασκ; Ευχαριστω εκ των προτέρων! 

Και εμένα το ίδιο μου γινόταν. Απ'ότι κατάλαβα, αν δεν έχεις δεσμεύσει και τους 8 πυρήνες μπορεί ένα μερος της μνήμης του node να έχει δεσμευθεί από κάποιον άλλον. Έτσι ισως να μη χωράνε οι πίνακες στη μνήμη...

Επίσης ίσως το πρόγραμμα να μπορεί να χρησιμοποιεί τους παραπάνω πυρηνες του node για την openmp, αρκεί αυτοί να μην είναι δεσμευμένοι. Οπότε αν είναι δεσμευμένοι, αργεί.

Γι'αυτό πιστεύω πρέπει ppn=8, όμως πρέπει να αλλαχθούν ανάλογα τα flags στο mpiexec για να μη δημιουργούνται 8 διεργασίες.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: nikoscha on December 17, 2016, 19:54:50 pm
Είχες δίκιο δέσμευα μόνο ενα processor και οταν δεσμευα 8 δεν άλλαζα το flag στην mpiexec. Σε ευχαριστώ !!


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: kaspas on December 17, 2016, 22:50:08 pm
Ξέρει κανείς γιατί μπορεί να βγάζει exit code 1 ενώ όλα τα processes φαίνεται να χουν κάνει Finalize;
Στο grid συμβαίνει αυτό στο pc μου δεν μου βγάζει ποτέ.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: nikoscha on December 17, 2016, 23:49:35 pm
Όταν ορίζω τον αριθμό των node των processors και τον αριθμό των tasks, Αν εχω για παράδειγμα 4 node και 8 πυρήνες στο κάθε node και θέλω να δημιουργήσω 4 task, πως ελέγχο σε ποιο node θα δημιουργηθεί το κάθε task ? Ώστε να μην δημιουργηθούν 2 task στο ίδιο node ! Ευχαριστώ εκ των προτέρων!


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: nikoscha on December 18, 2016, 00:05:16 am
Καλύτερα καθε διεργασία να κάνει το δικό της κομμάτι. Δεν νομιζω να γίνεται στο Master process να ορίσεις ολόκληρο των πίνακα για 4 διεργασίες. Δεν θα σου χωράει στην μνήμη

τελικά είναι θεμιτό να δημιουργείται πρώτα ο πίνακας ολόκληρος στο Master proccess πριν δημιουργήσουμε άλλες διεργασίες και έπειτα να γίνεται ο διαμοιρασμός αυτού ; ή είναι καλύτερα κάθε διεργασία να κάνει generate το δικό της κομμάτι και στην συνέχεια να έχουμε επικοινωνία των διεργασιών στην εξέταση των γειτόνων στην play;






Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: ditroo on December 18, 2016, 13:54:35 pm
όταν θέτετε Μ=Ν= 40000 σας τρέχει κανονικά στο hellas grid??
γιατί σε μένα στο game-of-life.log δεν εμφανίζεται κανένα μνμ και το μόνο που βγάζει είναι στο άλλο αρχείο το μνμ ότι δεν πρόλαβε να τελειώσει λόγω ορίου 120''.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: ReMi0s on December 18, 2016, 15:38:51 pm
επειδή είχα το πρόβλημα αυτό, και δεν τελείωνε καν το generate_board μέσα στα 120 δευτερόλεπτα , έλεγξε αν στην generate την κάνεις στήλη στήλη αντί για σειρά σειρά.
Επίσης αν δεν έχεις υλοποιήσει OpenMp στην play, κάντο για να μειωθεί ο χρόνος εκτέλεσης.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: nikoscha on December 18, 2016, 17:27:09 pm
Πως ορίζω το κάθε task να δημιουργήτε σε ξεχωριστό node? Ευχαριστώ εκ των προτέρων


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: Terzos on December 18, 2016, 19:57:08 pm
Έχει κανά 10λεπτο που έκανα qsub και το job μου είναι ακόμα στο queue
Το script που κάνω submit είναι αυτό:
Code:
#!/bin/bash
#PBS -N game-of-life
#PBS -q pdlab
#PBS -j oe
#PBS -l nodes=4:ppn=5

module load mpi/mpich3-x86_64
cd $PBS_O_WORKDIR

echo "=====test Run starts now ======= `date` "

mpiexec -np $PBS_NP ./../bin/game-of-life 10 0.2 3 1 &> $PBS_JOBNAME.log

echo "====test Run ends now ======= `date` "
Έχει κανείς άλλος το ίδιο πρόβλημα;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: Terzos on December 18, 2016, 19:59:39 pm
Πως ορίζω το κάθε task να δημιουργήτε σε ξεχωριστό node? Ευχαριστώ εκ των προτέρων

Επειδή δημιουργεί 1 task/processor εγώ χρησιμοποίησα την συνάρτηση MPI_Get_processor_name για να σταματήσω όλα πλην 1 task σε κάθε node σύμφωνα με την σελίδα 21 από εδώ: https://www.archer.ac.uk/training/course-material/2015/10/AdvMPI_EPCC/S1-L04-Split-Comms.pdf


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: nikoscha on December 18, 2016, 22:38:33 pm
Λογικά είναι θέμα του grid . To submit σωστό μου φαίνεται!


Έχει κανά 10λεπτο που έκανα qsub και το job μου είναι ακόμα στο queue
Το script που κάνω submit είναι αυτό:
Code:
#!/bin/bash
#PBS -N game-of-life
#PBS -q pdlab
#PBS -j oe
#PBS -l nodes=4:ppn=5

module load mpi/mpich3-x86_64
cd $PBS_O_WORKDIR

echo "=====test Run starts now ======= `date` "

mpiexec -np $PBS_NP ./../bin/game-of-life 10 0.2 3 1 &> $PBS_JOBNAME.log

echo "====test Run ends now ======= `date` "
Έχει κανείς άλλος το ίδιο πρόβλημα;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: kaspas on December 18, 2016, 23:03:02 pm
Στα 4 nodes ούτε εμένα έτρεχαν βάλε 3


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: nikoscha on December 18, 2016, 23:20:46 pm
Άμα βάλουμε 3 node όμως πως θα τρέχουμε 1 task/node για 4 tasks  και 80χ80 board?

Στα 4 nodes ούτε εμένα έτρεχαν βάλε 3


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: kaspas on December 18, 2016, 23:51:40 pm
Πάντως στην εκφώνηση δεν ζητάει task/node απλά processes λέει οπότε δεν πρέπει να χει θέμα αν τρέχουν 2 processes σε ενα node


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: Exomag on December 18, 2016, 23:56:43 pm
Πάντως στην εκφώνηση δεν ζητάει task/node απλά processes λέει οπότε δεν πρέπει να χει θέμα αν τρέχουν 2 processes σε ενα node

Γενικώς η λογική που ακολουθεί νομίζω είναι: "Όσο περισσότερα nodes γίνεται, τόσο καλύτερα. Από εκεί και πέρα (επειδή πολλά nodes δε σου δίνει το grid) πας με processes."


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: kaspas on December 19, 2016, 00:30:36 am
Ναι ξέρει κανείς τι είναι ακριβώς το ppn ? Βάζω πχ node=3:ppn=1 και τρέχω για 4 processes έχω βάλει print και παίρνω :
Code:
Hi from process :3 from processor : wn031.grid.auth.gr
Hi from process :2 from processor : wn028.grid.auth.gr
Hi from process :1 from processor : wn029.grid.auth.gr
Hi from process :0 from processor : wn031.grid.auth.gr


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: nikoscha on December 19, 2016, 00:38:23 am
Σωστά αλλά θα μπορεί να δεσμεύσει μνήμη ένα node για παράδειγμα 2 tasks?

Γενικώς η λογική που ακολουθεί νομίζω είναι: "Όσο περισσότερα nodes γίνεται, τόσο καλύτερα. Από εκεί και πέρα (επειδή πολλά nodes δε σου δίνει το grid) πας με processes."


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: Exomag on December 19, 2016, 01:04:09 am
Σωστά αλλά θα μπορεί να δεσμεύσει μνήμη ένα node για παράδειγμα 2 tasks?

Υποθέτω πως αν ζητήσεις πολύ πράμα να δεσμευτεί να μην μπορέσει, όντως. Για αυτόν τον λόγο και ιδανικά θα καλούσες όσα nodes χρειαζόσουν, αλλά επειδή πολλά nodes δε σου δίνει το grid, αναγκάζεσαι να κάνεις "εκπτώσεις" και να το γυρνάς σε processes.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: Aristos on December 19, 2016, 01:17:30 am
Ναι ξέρει κανείς τι είναι ακριβώς το ppn ?

έχω την εντύπωση πως σημαίνει proccessor per node. καθε node έχει πολλούς πυρήνες. με αυτήν την επιλογή διαλέγεις πόσους θα χρησιμοποιήσεις στο κάθε μηχάνημα


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: Gtaliou on December 19, 2016, 02:58:31 am
Το ppn σημαινει process per node οπότε ο συνολικός αριθμός των processes είναι nodes * ppn. Στην εκφώνηση ζητάει 1,2 και 4 διεργασίες. Δεν νομίζω ότι μπορούμε να βάζουμε random νουμερα.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: nikoscha on December 19, 2016, 18:38:05 pm
Είναι λογικό όταν τρέχω το πρόγραμμα μόνο με OpenMP να μου κάνει η play 12 sec ενώ όταν προσθέτω (για ενα task) ένα mpi init και mpi finalize να μου ανεβάζει τον χρόνο στα 18 sec? Στις generate και init ο χρόνος παραμένει ίδιος



Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: ReMi0s on December 19, 2016, 23:01:55 pm
Ξέρει κανείς γιατί μπορεί να βγάζει exit code 1 ενώ όλα τα processes φαίνεται να χουν κάνει Finalize;
Στο grid συμβαίνει αυτό στο pc μου δεν μου βγάζει ποτέ.
αν βάλεις -std=gnu99 δεν θα σου βγάζει το exit code 1.

Όταν ορίζω τον αριθμό των node των processors και τον αριθμό των tasks, Αν εχω για παράδειγμα 4 node και 8 πυρήνες στο κάθε node και θέλω να δημιουργήσω 4 task, πως ελέγχο σε ποιο node θα δημιουργηθεί το κάθε task ? Ώστε να μην δημιουργηθούν 2 task στο ίδιο node ! Ευχαριστώ εκ των προτέρων!


Έχει κανά 10λεπτο που έκανα qsub και το job μου είναι ακόμα στο queue
Το script που κάνω submit είναι αυτό:
Code:
#!/bin/bash
#PBS -N game-of-life
#PBS -q pdlab
#PBS -j oe
#PBS -l nodes=4:ppn=5

module load mpi/mpich3-x86_64
cd $PBS_O_WORKDIR

echo "=====test Run starts now ======= `date` "

mpiexec -np $PBS_NP ./../bin/game-of-life 10 0.2 3 1 &> $PBS_JOBNAME.log

echo "====test Run ends now ======= `date` "
Έχει κανείς άλλος το ίδιο πρόβλημα;
Γενικά να το σκέφτεσαι πως node= άλλο μηχάνιμα και ppn= tasks στο ίδιο μηχάνημα.
Αν βάλεις Node=4 και ppn=8 τότε δημιουργείς 32 tasks, δηλαδή 8 task σε κάθε ένα node!

Γενικά το grid στο group μας (pdlab) διαθέτει 4 nodes. Οπότε όταν ζητάς και τα 4 θα περιμένεις στο quee αρκετή ώρα.
Βέβαια τα καλύτερα αποτελέσματα, εφόσον έχεις κρύψει τον χρόνο επικοινωνίας με ασύγχρονες εντολές αποστολής και λήψεις, θα τα πάρεις για διαφορετικά nodes, παρά για διαφορετικά task στο ίδιο node.


οταν τρεχω στο grid μου βγαζει στο .log το εξης:
"./bin/game-of-life: error while loading shared libraries: libmpich.so.12.: cannot open shared object file: No such file or directory

και δεν τρεχει τιποταααααααααααααα
το πετυχε και κανενας αλλος αυτο μηπως;
πρέπει να κάνεις make μέσα στο grid, και όχι ανεβασμένο απο το pc σου :)


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: georgkonst on December 20, 2016, 00:02:31 am
Παραταση μεχρι 5 Ιανουαριου @ethmmy ανακοινωσεις  :D :D


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: ditroo on December 20, 2016, 13:33:59 pm
για να τρέξετε 40000x40000 τι nodes και τι ppn βάζετε??  1 και 1;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: Insignia on December 20, 2016, 15:43:31 pm
για να τρέξετε 40000x40000 τι nodes και τι ppn βάζετε??  1 και 1;

nodes=1:ppn=8

Απ' ότι έχω καταλάβει με διάφορα πειράματα, το ppn σου εξασφαλίζει τον ελάχιστο αριθμό πυρήνων που θα σου δώσει το cluster. Αρά αν το βάλεις ppn=1 πιθανότατα θα τρέξει κανονικά αφού και τα άλλα cores πιθανότατα θα είναι ελευθερα όμως υπάρχει περίπτωση να μοιραστείς το ίδιο node με κάποιον άλλον και να σου πάρει τα cores και έτσι να αυξηθει ο χρόνος σου. Δηλαδή αν το node έχει ελεύθερα cores, ακόμα και αν δεν του τα έχεις ζητήσει, θα στα δώσει, αλλά υπάρχει πάντα η περιπτωση να τρέξει και άλλος μαζι στο ίδιο node και να στα πάρει αν βάλεις ppn=1.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: ditroo on December 20, 2016, 15:50:49 pm
nodes=1:ppn=8

Απ' ότι έχω καταλάβει με διάφορα πειράματα, το ppn σου εξασφαλίζει τον ελάχιστο αριθμό πυρήνων που θα σου δώσει το cluster. Αρά αν το βάλεις ppn=1 πιθανότατα θα τρέξει κανονικά αφού και τα άλλα cores πιθανότατα θα είναι ελευθερα όμως υπάρχει περίπτωση να μοιραστείς το ίδιο node με κάποιον άλλον και να σου πάρει τα cores και έτσι να αυξηθει ο χρόνος σου. Δηλαδή αν το node έχει ελεύθερα cores, ακόμα και αν δεν του τα έχεις ζητήσει, θα στα δώσει, αλλά υπάρχει πάντα η περιπτωση να τρέξει και άλλος μαζι στο ίδιο node και να στα πάρει αν βάλεις ppn=1.

Αρχικά ευχαριστώ για την εξήγηση. Σε αυτή την περίπτωση με nodes=1:ppn=8 προκύπτουν 8 διεργασίες.

Με το εξής script θα πρέπει να αλλάξουμε και το flag $PBS_NP να το κάνουμε 1 για να τρέξει μόνο μια διεργασία;
Εννοώ σε αυτή την εντολή:
mpiexec -np $PBS_NP ./game-of-life 40000 40000 0.5 3 0 8 &> $PBS_JOBNAME.log


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: Insignia on December 20, 2016, 15:58:39 pm
Αρχικά ευχαριστώ για την εξήγηση. Σε αυτή την περίπτωση με nodes=1:ppn=8 προκύπτουν 8 διεργασίες.

Με το εξής script θα πρέπει να αλλάξουμε και το flag $PBS_NP να το κάνουμε 1 για να τρέξει μόνο μια διεργασία;
Εννοώ σε αυτή την εντολή:
mpiexec -np $PBS_NP ./game-of-life 40000 40000 0.5 3 0 8 &> $PBS_JOBNAME.log


Ναι. Ή διαφορετικά μπορείς να χρησιμοποιήσεις τη μεταβλητή $PBS_NUM_NODES.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: ReMi0s on December 20, 2016, 16:53:21 pm
Ναι. Ή διαφορετικά μπορείς να χρησιμοποιήσεις τη μεταβλητή $PBS_NUM_NODES.


δεν νομίζω οτι αυτό ισχύει πάντως, γιατί το δοκιμάζω τώρα και για 80000*40000 και δύο διεργασίες, κάνει πάνω απο 120 second ενώ αλλιώς έκανε γύρω στα 76 sec... Το δοκίμασα 3 φορές και μετά με ακριβώς τα ίδια αρχεία το δοκίμασα για 2 nodes , 1 ppn και τρέχει κανονικά. Μάλλον με τον παραπάνω τρόπο ναι μεν δεσμεύεις όλους τους πυρήνες, αλλα μερικοί δεν κάνουν τίποτα, επιβραδύνοντας την όλη διαδικασία αφού χρησιμοποιείς και openmp που χρειάζεται πυρήνες για τα threads.

Ο φλώρος είπε οτι όταν ζητήσεις node, τρέχεις μόνο εσύ σε αυτό. Αν ισχύει το παραπάνω είναι λάθος, τώρα το κατα πόσο ισχύει δεν ξέρω.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: Insignia on December 20, 2016, 17:13:03 pm
δεν νομίζω οτι αυτό ισχύει πάντως, γιατί το δοκιμάζω τώρα και για 80000*40000 και δύο διεργασίες, κάνει πάνω απο 120 second ενώ αλλιώς έκανε γύρω στα 76 sec... Το δοκίμασα 3 φορές και μετά με ακριβώς τα ίδια αρχεία το δοκίμασα για 2 nodes , 1 ppn και τρέχει κανονικά. Μάλλον με τον παραπάνω τρόπο ναι μεν δεσμεύεις όλους τους πυρήνες, αλλα μερικοί δεν κάνουν τίποτα, επιβραδύνοντας την όλη διαδικασία αφού χρησιμοποιείς και openmp που χρειάζεται πυρήνες για τα threads.

Ο φλώρος είπε οτι όταν ζητήσεις node, τρέχεις μόνο εσύ σε αυτό. Αν ισχύει το παραπάνω είναι λάθος, τώρα το κατα πόσο ισχύει δεν ξέρω.

Ο λόγος που σου κάνει περισσότερο χρόνο είναι γιατι χρησιμοποιώντας την εντολή
mpiexec -np 2 ./game-of-life 80000 40000 0.5 3 0
δεν ορίζεις πουθενά ότι θες τα δυο mpi processes να τρέξουν σε δυο διαφορετικά nodes (δηλαδή σε διαφορετικους υπολογιστες). Αν τρέξεις απλά αυτή την εντολή τότε πιθανότατα και τα δυο mpi processes θα μπούν στο ίδιο node αλλα σε διαφορετικό core και με αυτό τον τρόπο χάνεις πρακτικά ένα ολόκληρο node αφου δεν τρέχεις mpi πάνω του.
Ο λόγος που δουλεύει συνήθως αν βάλεις ppn=1 είναι γιατι δεσμευει ένα core ανα node αναγκάζοντάς το έτσι να βάλει τα δυο mpi processes σε διαφορετικά nodes (αφού δεν μπορεί πλεον να τα βάλει στο ίδιο). Όμως αυτός ο τρόπος έχει το μειονέκτημα ότι δεν σου εξασφαλίζει ότι θα έχεις όλα τα cores δικά σου και άρα δεν σου εγγυάται σταθερούς και γρήγορους χρόνους.

Για να το κάνεις να τρέξει ένα mpi process ανα nodes ανεξαρτήτως του πόσα ppn έχεις βάλει πρέπει να βάλεις μια έξτρα flag στην εντολή mpiexec
Εγώ βρήκα και χρησιμοποίησa κάποιες flag που δουλέψαν σωστά απο αυτό το site: https://software.intel.com/en-us/articles/controlling-process-placement-with-the-intel-mpi-library

Δεν ξέρω τι είχε πει ο Φλώρος όμως έγω δοκίμασα πολλές ασκήσεις και πάντα επαληθεύονταν τα αποτελέσματά μου. Αν θες μπορεις να δοκιμάσεις και εσυ για να το δεις. Δοκίμασε να τρέξεις μια άσκηση με παραλληλισμο όπως την προηγούμενη με τα pthread που είχαμε και τρέξε την για μέγιστο αριθμό σωματιδίων για 16 threads 7 φορές και βάλε 5 τέτοιες στην ουρά για ppn=1 και άλλες 5 για ppn=8. Θα παρατηρήσεις ότι για ppn=1 οι χρόνοι έχουν μεγάλη διακύμανση επειδή κάποιες φορές βρίσκει παραπάνω cores για να κάνει καλό παραλληλισμό και κάποιες όχι. Ένώ με ppn=8 οι χρόνοι είναι πάντα σταθεροί επειδή πάντα έχει 8 cores.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: ReMi0s on December 20, 2016, 17:35:49 pm
Σε πιστεύω, απλά με το flag $PBS_NUM_NODES που ανέφερες δεν λειτουργεί σωστα, τουλάχιστον σε εμένα. Τώρα αν εσύ έχεις βάλει επιπλέον άλλα flags και θέλεις να το μοιραστείς μαζί μας σε ευχαριστούμε :)
Επίσης επειδή στο παράδειγμα που έφερες λές να βάλουμε στο quee 5 διαφορετικές qsub , να αναφέρω οτι για δικές σου διεργασίες μπορεί να τρέξουν στο ίδιο node, σε αντίθεση με των υπολοίπως όπως ανέφερε ο φλώρος.
Οπότε είναι προτιμότερο να τις τρέχεις μία μία.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: Insignia on December 20, 2016, 17:45:11 pm
Σε πιστεύω, απλά με το flag $PBS_NUM_NODES που ανέφερες δεν λειτουργεί σωστα, τουλάχιστον σε εμένα. Τώρα αν εσύ έχεις βάλει επιπλέον άλλα flags και θέλεις να το μοιραστείς μαζί μας σε ευχαριστούμε :)
Επίσης επειδή στο παράδειγμα που έφερες λές να βάλουμε στο quee 5 διαφορετικές qsub , να αναφέρω οτι για δικές σου διεργασίες μπορεί να τρέξουν στο ίδιο node, σε αντίθεση με των υπολοίπως όπως ανέφερε ο φλώρος.
Οπότε είναι προτιμότερο να τις τρέχεις μία μία.

Εγώ χρησιμοποίησα το flag -ppn 1 για να δηλώσω ότι θέλω να τρέξει ένα mpi process ανα nodes. Στο site αναφέρονται και άλλα flags όπως "-perhost <#>" ή "-grr <#>" που φαντάζομαι θα λειτουργούν με τον ίδιο τρόπο αλλά δεν τα έχω δοκιμάσει. Οπότε η εντολή γίνεται έτσι
mpiexec -np $PBS_NUM_NODES -ppn 1 ./game-of-life 80000 40000 0.5 3 0

Το $PBS_NUM_NODES είναι απλά είναι μια μεταβλητή που παίρνει την τιμή που έχεις βάλει στο node, δεν είναι απαραίτητο να τη βάλεις, μπορεις να χρησιμοποιήσεις απλά έναν αριθμό. Δηλαδή αν βάλεις στο script σου nodes=2:ppn=8 τότε το $PBS_NUM_NODES θα είναι ίσο με 2.

Λέω να κάνεις queue 5 διεργασίες για να το δείς πιο καθαρά επειδή υπάρχει μεγάλη πιθανότητα να μην τρέξει κάποιος ταυτόχρονα με εσένα. Όμως και με ένα queue το βλέπεις απλά δεν υπάρχει τόσο μεγάλη πθανότητα.
Σε αυτό που λέει ο Φλώρος όμως δεν έχει άδικο. Αν ζητήσεις nodes=2:ppn=3 τότε θα σου δώσει εσένα και μόνο εσένα 3 cores σε ενα node και άλλα 3 σε άλλο core. Αυτό που λέω έγω είναι ότι αν έχει και αλλα ελευθερα cores θα σου τα δώσει και αυτά μεχρι να τα παρει αλλος.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: ReMi0s on December 20, 2016, 17:51:15 pm
Εγώ χρησιμοποίησα το flag -ppn 1 για να δηλώσω ότι θέλω να τρέξει ένα mpi process ανα nodes. Στο site αναφέρονται και άλλα flags όπως "-perhost <#>" ή "-grr <#>" που φαντάζομαι θα λειτουργούν με τον ίδιο τρόπο αλλά δεν τα έχω δοκιμάσει. Οπότε η εντολή γίνεται έτσι
mpiexec -np $PBS_NUM_NODES -ppn 1 ./game-of-life 80000 40000 0.5 3 0

Το $PBS_NUM_NODES είναι απλά είναι μια μεταβλητή που παίρνει την τιμή που έχεις βάλει στο node, δεν είναι απαραίτητο να τη βάλεις, μπορεις να χρησιμοποιήσεις απλά έναν αριθμό. Δηλαδή αν βάλεις στο script σου nodes=2:ppn=8 τότε το $PBS_NUM_NODES θα είναι ίσο με 2.
Με μεγάλη επιφύλαξη θα πώ οτι στην ουσία κάνεις μια τρύπα στο νερό.
Τι εννοώ, ναι μεν θέτεις nodes=2:ppn=8 αλλά μετά επαναπροσδιορίζεις το ppn=1 στην mpiexec.
Νομίζω οτι ο τρόπος σου έχει ακριβώς τα ίδια αποτελέσματα με την εντολή
nodes=2:ppn=1
mpiexec -np $PBS_NP ./game-of-life 80000 40000 0.5 3 0

Όλα αυτά με μεγάλη επιφύλαξη και χωρίς καμία διάθεση για αντιπαράθεση. Δεν είμαι ειδικός ούτε έχω διαβάσει για το σχετικό θέμα παραπάνω απο εσένα, απλά αυτό που κατανοώ εγώ γράφω :) Φιλικά


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: Insignia on December 20, 2016, 18:08:36 pm
Με μεγάλη επιφύλαξη θα πώ οτι στην ουσία κάνεις μια τρύπα στο νερό.
Τι εννοώ, ναι μεν θέτεις nodes=2:ppn=8 αλλά μετά επαναπροσδιορίζεις το ppn=1 στην mpiexec.
Νομίζω οτι ο τρόπος σου έχει ακριβώς τα ίδια αποτελέσματα με την εντολή
nodes=2:ppn=1
mpiexec -np $PBS_NP ./game-of-life 80000 40000 0.5 3 0

Όλα αυτά με μεγάλη επιφύλαξη και χωρίς καμία διάθεση για αντιπαράθεση. Δεν είμαι ειδικός ούτε έχω διαβάσει για το σχετικό θέμα παραπάνω απο εσένα, απλά αυτό που κατανοώ εγώ γράφω :) Φιλικά

Η flag -ppn 1 δεν έχει σχέση με την εντολή nodes=1:ppn=8 που δίνεις στο script, είναι απλά ατυχής ονομασία. Θα μπορούσαν να χρησιμοποιηθούν και άλλα flags που δεν ονομαζονται έτσι.
Για να φανεί ακόμα πιο καθαρά μπορεις να βάλεις στο script την εντολή
echo $PBS_NODEFILE
όπου θα τυπώσεις όλα τα cores που σου έχουν δωθεί και φαίνεται ότι δεν δίνει μόνο ένα ανα node αλλά και τα 8.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: ReMi0s on December 20, 2016, 18:34:07 pm
Η flag -ppn 1 δεν έχει σχέση με την εντολή nodes=1:ppn=8 που δίνεις στο script, είναι απλά ατυχής ονομασία. Θα μπορούσαν να χρησιμοποιηθούν και άλλα flags που δεν ονομαζονται έτσι.
Για να φανεί ακόμα πιο καθαρά μπορεις να βάλεις στο script την εντολή
echo $PBS_NODEFILE
όπου θα τυπώσεις όλα τα cores που σου έχουν δωθεί και φαίνεται ότι δεν δίνει μόνο ένα ανα node αλλά και τα 8.
Φαίνεται να έχεις δίκιο τώρα που το δοκίμασα με την εντολή
nodes=2:ppn=8
mpiexec -np $PBS_NUM_NODES -ppn 1 ./game-of-life 80000 40000 0.5 3 0

οι χρόνοι ειναι σταθεροί. Ευχαριστώ για την υπομονή σου!


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: Terzos on December 21, 2016, 17:07:11 pm
Έχει κανείς άλλος πρόβλημα όταν παραλληλοποιεί την play με openmp?

edit: Μάλλον το βρήκα. Έπρεπε να ρωτήσω :P


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: ditroo on December 21, 2016, 21:03:09 pm
εχω κι εγω θεμα με την openmp στην Play.. για 80000*40000 κ 80000*80000 δεν προλαβαινει ποτε να τελειωσει, το κόβει στα 120''..
χρησιμοποιώ collapse(2) για την εμφωλευμενη αλλα καμια βελτιωση..ξερει κανεις ποιο ειναι το προβλημα η έχει καμια αλλη ιδεα;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: Terzos on December 21, 2016, 21:43:32 pm
εχω κι εγω θεμα με την openmp στην Play.. για 80000*40000 κ 80000*80000 δεν προλαβαινει ποτε να τελειωσει, το κόβει στα 120''..
χρησιμοποιώ collapse(2) για την εμφωλευμενη αλλα καμια βελτιωση..ξερει κανεις ποιο ειναι το προβλημα η έχει καμια αλλη ιδεα;
Το δικό μου πρόβλημα ήταν ότι είχα race condition.
Γενικά τώρα δοκίμασα να φτιάξω board 40000x40000 και παρατήρησα ότι όταν έβαζα και το εμφωλευμένο for να λειτουργεί παράλληλα το πρόγραμμα δεν προλάβαινε να κάνει initialize board.
Αντίθετα όταν το έβγαλα, πρόλαβε.

ΥΓ: είχα 5 ppn


Δεν είχα κάνει include <omp.h>


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: Terzos on December 22, 2016, 00:23:36 am
Πως ξεπεράσατε το πρόβλημα με την generate_table;
Έχω δοκιμάσει τα πάντα που έχετε προτείνει και δεν κατάφερα τίποτα. :-\
Το initialize_board μου παίρνει 2 δευτερόλεπτα όλο κι όλο και τον υπόλοιπο χρόνο απλά τρέχει η generate_table.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: Ancient on December 22, 2016, 00:44:41 am
Πως ξεπεράσατε το πρόβλημα με την generate_table;
Έχω δοκιμάσει τα πάντα που έχετε προτείνει και δεν κατάφερα τίποτα. :-\
Το initialize_board μου παίρνει 2 δευτερόλεπτα όλο κι όλο και τον υπόλοιπο χρόνο απλά τρέχει η generate_table.

Θα την τρέξεις σειριακά. Δεν υπάρχει άλλος τρόπος πέρα από τη rand ώστε να έχεις 100% ομοιόμορφα τυχαίους αριθμούς.

Αυτό το MPI3 έχετε καμιά ιδέα τι είναι? Τα IRecv και ISend δεν είναι mpi3?


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: lodi on December 22, 2016, 13:14:28 pm
===============================================================================$
=   BAD TERMINATION OF ONE OF YOUR APPLICATION PROCESSES
=   PID 21328 RUNNING AT wn030.grid.auth.gr
=   EXIT CODE: 1
=   CLEANING UP REMAINING PROCESSES
=   YOU CAN IGNORE THE BELOW CLEANUP MESSAGES
===============================================================================$

Το παραπάνω το βγάζει και σε εσάς ;; Ξέρει κανείς γιατί συμβαίνει αυτό και πώς μπορώ να το ξεπεράσω ;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: kaspas on December 22, 2016, 14:21:24 pm
===============================================================================$
=   BAD TERMINATION OF ONE OF YOUR APPLICATION PROCESSES
=   PID 21328 RUNNING AT wn030.grid.auth.gr
=   EXIT CODE: 1
=   CLEANING UP REMAINING PROCESSES
=   YOU CAN IGNORE THE BELOW CLEANUP MESSAGES
===============================================================================$

Το παραπάνω το βγάζει και σε εσάς ;; Ξέρει κανείς γιατί συμβαίνει αυτό και πώς μπορώ να το ξεπεράσω ;
return(0) και θα σου λυθεί


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: dimigoug on December 22, 2016, 16:09:09 pm
Σας ανταποκρίνεται καλά το grid εσάς σήμερα;
Γιατί εμένα τη μια δεν με αφήνει να κανω connect με την πρώτη προσπάθεια και την άλλη μου βγαζει ενώ είμαι μέσα κάτι για "port 22 broken"


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: Terzos on December 22, 2016, 16:25:39 pm
Σας ανταποκρίνεται καλά το grid εσάς σήμερα;
Γιατί εμένα τη μια δεν με αφήνει να κανω connect με την πρώτη προσπάθεια και την άλλη μου βγαζει ενώ είμαι μέσα κάτι για "port 22 broken"

Εμένα μια χαρά συνδέεται


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: ditroo on December 22, 2016, 18:01:29 pm
γνωρίζετε μήπως για ποιο λόγο οι χρόνοι για ίδιο κώδικα και ίδιο αριθμό διεργασιών διαφέρουν κάθε φορά που το τρέχω?
μπορεί να γίνει σταθερός αυτός ο χρόνος;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: lodi on December 22, 2016, 19:57:17 pm
γνωρίζετε μήπως για ποιο λόγο οι χρόνοι για ίδιο κώδικα και ίδιο αριθμό διεργασιών διαφέρουν κάθε φορά που το τρέχω?
μπορεί να γίνει σταθερός αυτός ο χρόνος;


μια διακύμανση συν πλην 1 δευτερόλεπτο δεν μπορείς να την αποφύγεις


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: Vlassis on December 23, 2016, 20:26:59 pm
στον κωδικα κανατε αλλαγες για 2 και για 4 processes ή τρεχει το ιδιο πραγμα;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: kaspas on December 23, 2016, 20:40:06 pm
Αν κόψεις το πίνακα σε λωρίδες δεν θέλει αλλιώς ίσως θελήσει.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: Vlassis on December 23, 2016, 22:19:48 pm
Αν κόψεις το πίνακα σε λωρίδες δεν θέλει αλλιώς ίσως θελήσει.
σε λωριδες το εχω, οποτε κομπλε, ευχαριστω  :D

μου τρεχει για 2 μια χαρα, αλλα στις 4 ξεπερναω χρονο και θα σκασω  :P


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: Ροζ συννεφάκι on December 23, 2016, 22:56:58 pm
Έχετε γενικά προβλήματα με το openMP? στην play είναι σαν να μη μου το αναγνωρίζει, μου τρέχει για τους ίδιους χρόνους το βάλω δε το βάλω...


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: Ροζ συννεφάκι on December 24, 2016, 15:41:01 pm
Χρειάζεται κάτι το ιδιαίτερο στο grid για να τρέξω το openmp? κάτι που πρέπει να προστεθεί στο script που υποβάλλουμε? Γιατί μου τρέχει openmp στον υπολογιστή μου και εκεί τίποτα....


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: Vlassis on December 24, 2016, 16:03:46 pm
Χρειάζεται κάτι το ιδιαίτερο στο grid για να τρέξω το openmp? κάτι που πρέπει να προστεθεί στο script που υποβάλλουμε? Γιατί μου τρέχει openmp στον υπολογιστή μου και εκεί τίποτα....
εγω εβαλα απλα το "omp.h" στα αρχεια και στο makefile το flag για openmp και τρεχει κανονικα, δεν νομιζω να θελει κατι παραπανω


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: BADBANE on December 24, 2016, 20:16:12 pm
return(0) και θα σου λυθεί

Που να βαλω return(0)??
Μου το εβγαλε και μενα αυτό

===============================================================================$
=   BAD TERMINATION OF ONE OF YOUR APPLICATION PROCESSES
=   PID 21328 RUNNING AT wn030.grid.auth.gr
=   EXIT CODE: 1
=   CLEANING UP REMAINING PROCESSES
=   YOU CAN IGNORE THE BELOW CLEANUP MESSAGES
===============================================================================$




Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: Vlassis on December 24, 2016, 21:00:18 pm
Που να βαλω return(0)??
Μου το εβγαλε και μενα αυτό

===============================================================================$
=   BAD TERMINATION OF ONE OF YOUR APPLICATION PROCESSES
=   PID 21328 RUNNING AT wn030.grid.auth.gr
=   EXIT CODE: 1
=   CLEANING UP REMAINING PROCESSES
=   YOU CAN IGNORE THE BELOW CLEANUP MESSAGES
===============================================================================$



στη main(). ειναι int και δεν επεστρεφε τιποτα νομιζω
εγω εκει το εβαλα και λυθηκε  ;)


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: kon_ker on December 26, 2016, 19:34:53 pm
Παιδιά στα πόσα sec πρέπει να τρέχει ? εμένα αυτή την στιγμή τρέχει στα 77 και για τις 3 υλοποιήσεις


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: Vlassis on December 26, 2016, 20:19:19 pm
Παιδιά στα πόσα sec πρέπει να τρέχει ? εμένα αυτή την στιγμή τρέχει στα 77 και για τις 3 υλοποιήσεις
ο σκοπος ουσιαστικα ειναι οσο χρονο κανει να τρεξει για 1 διεργασια, τον ιδιο χρονο να κανει να τρεξει και για τις 2 διεργασιες με διπλασιο πινακα, κλπ οποτε εισαι κομπλε  ;)


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: Ροζ συννεφάκι on December 27, 2016, 17:52:00 pm
Παιδιά στα πόσα sec πρέπει να τρέχει ? εμένα αυτή την στιγμή τρέχει στα 77 και για τις 3 υλοποιήσεις
κ εμας τοσο μας τρέχει, νομίζω μια χαρά είναι! και κυρίως και εγώ νομίζω ότι μετράει αυτό που είπε ο Vlassis!


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: kaspas on December 27, 2016, 18:32:48 pm
Από διαγράμματα τι κάνατε εσείς;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: Ancient on December 27, 2016, 19:21:07 pm
Από διαγράμματα τι κάνατε εσείς;

Διαγράμματα? Αφού τρεις χρόνοι είναι μόνο... Ακόμα και στην εκφώνηση δε ζητάει διαγράμματα


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: kaspas on December 27, 2016, 19:59:23 pm
κομπλέ. Μου φάνηκε μικρή 4 σελίδες αναφορά


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: Andromedas on December 27, 2016, 23:56:35 pm
Και μένα μικρή βγήκε. Αλλά μερικά διαγραμματάκια τα έκανα έτσι από συνήθεια  :D


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: Terzos on December 28, 2016, 22:46:59 pm
Πόσο χρόνο κάνει να σας τρέξει ένας γύρος; Εμένα κάνει περίπου 10 12 s. Ρωτάω για να ξέρω πόσο περιθώριο έχω για βελτίωση.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: ReMi0s on December 29, 2016, 00:37:40 am
Πόσο χρόνο κάνει να σας τρέξει ένας γύρος; Εμένα κάνει περίπου 10 12 s. Ρωτάω για να ξέρω πόσο περιθώριο έχω για βελτίωση.
δεν θυμάμαι ένας γύρος πόσο, πάντως οι για τρεις που ζητούσε 49 sec η play και συνολικά 76 sec. Υποθέτω για ένα generation γύρω στα 17 sec η play..


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: Ancient on December 29, 2016, 17:06:54 pm
Υπάρχει κανείς που το έκανε με mpi 3?


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: fanaks on December 30, 2016, 00:28:02 am
δεν θυμάμαι ένας γύρος πόσο, πάντως οι για τρεις που ζητούσε 49 sec η play και συνολικά 76 sec. Υποθέτω για ένα generation γύρω στα 17 sec η play..
Και εγώ πάντως πάνω κάτω εκεί είμαι.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: ReMi0s on December 30, 2016, 20:58:54 pm
Υπάρχει κανείς που το έκανε με mpi 3?
ναι...
χρησιμοποιώντας εντολές
MPI_Alloc_mem
MPI_Win_create
και MPI_Get


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: kaspas on December 30, 2016, 21:52:06 pm
MPI3 τι χρόνους σας βγάζει ;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: Ancient on December 31, 2016, 06:32:58 am
Εμένα με MPI2 μου βγάζουν όλα 56 δευτερόλεπτα. Λογικά το MPI3 δε θα έχει διαφορά αφού πετυχαίνω και έτσι ίδιους χρόνους.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: kaspas on December 31, 2016, 15:05:53 pm
56 sec συνολικός χρόνος;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: Andromedas on December 31, 2016, 17:22:53 pm
56 sec συνολικός χρόνος;
Ναι τόσο μου βγαίνει και μένα.
ναι...
χρησιμοποιώντας εντολές
MPI_Alloc_mem
MPI_Win_create
και MPI_Get
Μαζί με fence.



Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: kaspas on December 31, 2016, 17:35:36 pm
Βγάζετε 70 ++ sec με MPI και 56 με MPI3;
Αν θυμάμαι καλά είχε πει ότι θα έκανε περισσότερο χρόνο η MPI3.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: Ancient on December 31, 2016, 17:36:27 pm
Εγώ με Irecv, Isend βγάζω 56 δευτερόλεπτα.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: kaspas on December 31, 2016, 17:42:53 pm
Παραλληλοποίησες την random; Πως χώρισες το ταμπλό;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: Ancient on December 31, 2016, 17:45:48 pm
Όχι δεν την παραλληλοποίησα. Αυτό που μάλλον δεν έκανες και σου βγάζει παραπάνω χρόνο, είναι η αντικατάσταση της αντιγραφής του πίνακα newboard στον board με ένα απλό swap των pointers.

Σε ορθογώνια χώρισα τον πίνακα


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: kaspas on December 31, 2016, 17:48:50 pm
Το έκανα. Σε λωρίδες τον χώρισες;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: Ancient on December 31, 2016, 17:52:54 pm
Ναι, σε ορθογώνια.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: Ancient on January 01, 2017, 17:14:14 pm
Οι εντολες που λέτε είναι mpi 2. Το grid δεν έχει καν mpi 3.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: kaspas on January 01, 2017, 17:22:29 pm
Για RMA εντολές έχει αυτές με το MPI_WIN και αν θυμάμαι καλά αυτές είχε πει κι ο Πιτσιάνης.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: TrueForce on January 01, 2017, 17:45:58 pm
γιατι καίγεστε με παράλληλα πρωτοχρονιατικα αλανια μου  :'(


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: Ancient on January 01, 2017, 17:46:06 pm
Πάντως mpi3 δεν είναι σίγουρα διότι το grid δεν έχει mpi3...


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: Terzos on January 01, 2017, 22:02:28 pm
Όχι δεν την παραλληλοποίησα. Αυτό που μάλλον δεν έκανες και σου βγάζει παραπάνω χρόνο, είναι η αντικατάσταση της αντιγραφής του πίνακα newboard στον board με ένα απλό swap των pointers.

Σε ορθογώνια χώρισα τον πίνακα

Δεν κατάλαβα. :???: Όσον αφορά το swap των pointers, μάλλον αναφέρεσαι στην play. Εμένα η generate μόνο μου παίρνει ~76 sec, όπου ουσιαστικά τρέχει μία rand ανά Node


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: ReMi0s on January 02, 2017, 22:04:57 pm
76 δευτερόλεπτα είναι πολλά για την generate μονο... κάτι πάει λάθος. Έλεγξε τα i και j να τα έχεις βάλει σωστη σειρά.
Επίσης εννοεί οτι αντί να κάνεις στην play μια διπλή for για να μεταφέρεις τον newboard στο board, μπορείς απλά να κάνεις swap τις διευθύνσεις των pointer


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: Terzos on January 03, 2017, 21:20:08 pm
76 δευτερόλεπτα είναι πολλά για την generate μονο... κάτι πάει λάθος. Έλεγξε τα i και j να τα έχεις βάλει σωστη σειρά.
Επειδή ουσιαστικά το board είναι απλά ένα διάνυσμα έκανα τα 2 for 1. Επίσης όμως γτ συνήθως η time(NULL) επιστρέφει το ίδιο για όλα τα nodes έβαλα και το rank σαν όρισμα στο seed.

Αλλά και ο αρχικός ο κώδικας με αλλαγμένα τα i, j (και χωρίς counter) παίρνει 82 δευτερόλεπτα.  :???:


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: stan14 on January 03, 2017, 23:58:35 pm
Η υλοποιηση με mpi-3 ειναι προαιρετικη? και εναλλακτικη της mpi2-opnemp ετσι? Πως κάνετε swap τους Pointers αφου δεν παιρνανε θεσεις μνημης στην play!


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: Terzos on January 04, 2017, 02:48:54 am
Η υλοποιηση με mpi-3 ειναι προαιρετικη? και εναλλακτικη της mpi2-opnemp ετσι? Πως κάνετε swap τους Pointers αφου δεν παιρνανε θεσεις μνημης στην play!
Εγώ άλλαξα τον ορισμό της play.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: Ser Harry Man on January 04, 2017, 13:54:11 pm
Με τις υλοποίησεις που μας ζητάει, 40κ x 40κ δια 8 threads για την πρώτη, 80 x 40 δια 16 για την δεύτερη, κτλ...

Κανένας πίνακας δεν θα είναι τετραγωνικός και πρέπει να αλλάξει όλη η υλοιποίηση για μή τετραγωνικούς πίνακες... σωστα?


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: stan14 on January 04, 2017, 18:15:09 pm
Εγώ άλλαξα τον ορισμό της play.
Ε καλα τζαμπα κοπος για το τιποτα ετσι και αλλιως το θεμα δεν εγγειται εκει! Θα τα αφησω ετσι!


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασία 2
Post by: stan14 on January 04, 2017, 18:18:07 pm
Με τις υλοποίησεις που μας ζητάει, 40κ x 40κ δια 8 threads για την πρώτη, 80 x 40 δια 16 για την δεύτερη, κτλ...

Κανένας πίνακας δεν θα είναι τετραγωνικός και πρέπει να αλλάξει όλη η υλοιποίηση για μή τετραγωνικούς πίνακες... σωστα?
Τα threads τα χρησιμοποιεις για την υλοποοιηση της openmp! Το πως θα σπασεις τον πινακα εχει να κανει κυριως με τα nodes-Number of tasks!