Tag Archives: κατανεμημένα

Μεταγλώτηση κώδικα που χρησιμοποιεί MPI σε Ubuntu Linux για το εργαστήριο των Κατανεμημένων

Επικαιροποιω συχνά το άρθρο να είναι up-to-date παρακαλώ αφήστε σχόλια από κάτω για όποιο πρόβλημα

Σε ubuntu Linux ανοίγουμε ένα τερματικό και δίνουμε την εξής εντολή:

sudo apt-get install -y libopenmpi-dev openmpi-bin

Μετά για compile δίνουμε πάλι σε τερματικό:

mpicc -o ^binary_file^ ^source_code_file^ 

Για ευκολότερο debugging δοκιμάστε compile με:

mpicc -g -o ^binary_file^ ^source_code_file^ 

Σε segfaults θα λαμβάνετε καλύτερα τα errors ;).

Μετά μπορείτε να εκτελείτε το  εκτελέσιμο πρόγραμμα μέσω:

mpirun -np ^cluster_size^ ^binary_file^ 

Όπου ^cluster_size^ κάποιος αριθμός  (όχι και 1000000). Στην ουσία θα έχουμε έναν cluster με ^cluster_size^ κόμβους.

Μπορείτε με τον παρακάτω κώδικα να δοκιμάσετε τις εντολές:

#include "mpi.h"
#include %lt; stdio.g %gt;
int main( int argc,char *argv[] )
{
int rank, size;
MPI_Init( &argc, &argv );
MPI_Comm_rank( MPI_COMM_WORLD, &rank );
MPI_Comm_size( MPI_COMM_WORLD, &size );
printf( "Cluster size: %d\nTerminal ID: %d\n",size,rank );
MPI_Finalize();
return 0;
}

Δοκιμάστηκε τελευταία φορά σε Ubuntu 16.04 LTS στις 11/11/2018. Ακόμη ο κώδικας είναι διαθέσιμος στο εξής github repository: https://github.com/pc-magas/mpi-sample (ΜΗΝ κάνετε copy paste από πάνω.)

PS: Ένα tip για να μην παιδεύεστε με το output σε 1 τερματικό μπορείτε να τρέξετε το πρόγραμμα κάπως έτσι:

mpirun -np ^cluster_size^ xterm -hold -e ^binary_file^ & 

Με το παραπάνω θα τρέχετε κάθε node του cluster σε ξεχωριστό τερματικό. Εάν δεν έχετε εγκατεστημένο το xterm μπορείτε να χρησιμοποιήσετε τον terminal emulator που έρχεται με την διανομή σας παρόλα αυτά με το xterm θα μπορείτε να τρέχετε το πρόγραμμάσας χωρίς να κλείνει το τερματικό με το πέρας αυτού.