Sections
Σύντομες οδηγίες για τη χρήση του (Open)MPI
Στους υπολογιστές των εργαστηρίων έχουν εγκατασταθεί τουλάχιστον 3 πακέτα που υλοποιούν το MPI. Εξ ορισμού, χρησιμοποιείτε το OpenMPI, που είναι ανοικτού κώδικα και υλοποιεί τις κλήσεις του MPI-2. Εδώ παρουσιάζονται σύντομες οδηγίες για να μπορέσει κάποιος να το χρησιμοποιήσει. Περισσότερες πληροφορίες υπάρχουν στο παραπάνω site του OpenMPI καθώς και στα manual pages (εκτελέστε "man mpirun" ή "man mpicc").
ΡΥΘΜΙΣΕΙΣ SSH ΓΙΑ ΤΗΝ ΠΡΩΤΗ ΧΡΗΣΗ
Κατά την εκτέλεση του προγράμματός σας, γίνεται χρήση του ssh προκειμένου να τρέξουν οι διεργασίες σε πολλαπλούς υπολογιστές. Για να γίνει αυτό όμως, θα πρέπει να μην σας ζητάει password το ssh όταν συνδέεται από το ένα μηχάνημα στο άλλο. Απαιτείται ειδική διαδικασία ώστε να γίνει αυτό. Για να δείτε αν πρέπει να κάνετε αυτή τη διαδικασία, δοκιμάστε το εξής: ας πούμε ότι δουλεύετε στο μηχάνημα hp6000ws03. Εκτελέσετε ssh προς ένα άλλο μηχάνημα, π.χ.
% ssh hp6000ws02 ls
Αν δεν σας ζητηθεί password τελειώσατε, αλλιώς, θα πρέπει να κάνετε τη
διασικασία ρύθμισης του ssh που δίνεται παρακάτω. Η ρύθμιση
γίνεται μία φορά και ισχύει για πάντα.
Ρύθμιση του ssh ώστε να μη ζητάει password:
|
Δημιουργια κομβων εικονικου cluster
Θα πρέπει να δημιουργήσετε ένα αρχείο με τα μηχανήματα που θέλετε να συμμετέχουν στον εικονικό παράλληλο υπολογιστή σας (ένα όνομα σε κάθε γραμμή του αρχείου). Για παράδειγμα, θα μπορούσατε να έχετε το παρακάτω αρχείο, που ας πούμε ότι ονομάζεται "mynodes" και το οποίο δημιουργεί ένα παράλληλο σύστημα με τρεις κόμβους, συμπεριλαμβανομένου και του υπολογιστή στον οποίο βρίσκεστε:
localhost hp6000ws01 hp6000ws02
Προσέξετε, σε όλα τα μηχανήματα που αναφέρονται στο αρχείο αυτό να έχετε κάνει πριν τουλάχιστον μία φορά ssh, ώστε να μη ζητείται password.
Μεταγλωττιση προγραμματων (compilation)
Σε κάθε πρόγραμμα C θα πρέπει να γίνεται:
#include
Μεταγλώττιση γίνεται με την εντολή mpicc, η οποία αναλαμβάνει να περιλάβει όλα τα απαραίτητα αρχεία και βιβλιοθήκες:
% mpicc <αρχείο C>
Εδώ μπορείτε να βρείτε ένα δοκιμαστικό αρχείο, στο οποίο δύο διεργασίες ανταλλάσουν διαρκώς μηνύματα.
Αν το πρόγραμμά σας κάνει χρήση και του OpenMP (υβριδικός προγραμματισμός), κατά τη μεταγλώττιση θα πρέπει να περάσετε και το όρισμα -fopenmp διότι εσωτερικά το mpicc χρησιμοποιεί τον μεταφραστή gcc ο οποίος απαιτεί το συγκεκριμένο όρισμα προκειμένου να αναγνωρίσει και να μεταφράσει οδηγίες του OpenMP:
% mpicc -fopenmp <αρχείο C>
Εκτελεση προγραμματων
Η εκτέλεση γίνεται μέσω του mpirun. Γράψτε:
% mpirun -np N -hostfile mynodes <εκτελέσιμο αρχείο>
όπου N είναι ο αριθμός των διεργασιών που θέλετε να
δημιουργηθούν. Οι διεργασίες μοιράζονται και εκτελούνται στους κόμβους του
εικονικού cluster που προσδιορίσατε στο αρχείο mynodes.
Πώς μοιράζονται οι διεργασίες:
Αν το πλήθος των διεργασιών (N) είναι μεγαλύτερο από το
πλήθος των μηχανημάτων, η διαμοίραση των εργασιών γίνεται κυκλικά.
Στο παραπάνω αρχείο mynodes, η 1η διεργασία θα εκτελεστεί στο
localhost, η 2η στο hp6000ws01,
η 3η στο hp6000ws02, η 4η στο localhost, κ.ο.κ.
Ειδικότερο μοίρασμα σε πολυπύρηνα συστήματα:
Αν κάποιος κόμβος διαθέτει πολλούς πυρήνες, θα μπορούσατε να κατανείμετε
τις διεργασίες διαφορετικά (αν θέλετε). Για να γίνει αυτό, θα πρέπει
το MPI να γνωρίζει όχι μόνο τα ονόματα των κόμβων αλλά και το πλήθος των
συνεχόμενων διεργασιών που θέλετε καθένας να πάρει (συνήθως, ίσο με το
πλήθος των πυρήνων του). Για παράδειγμα, αν οι παραπάνω κόμβοι είναι
4-πύρηνοι, μπορείτε να ορίσετε το αρχείο "mynodes" ως εξής:
localhost slots=4 hp6000ws01 slots=4 hp6000ws02 slots=4
Τότε, οι 4 πρώτες διεργασίες θα εκτελεστούν στο
localhost, οι 4 επόμενες στο hp6000ws01,
οι 4 επόμενες στο hp6000ws02, οι 4 επόμενες στο localhost,
κ.ο.κ.
Για περισσότερες πληροφορίες, man mpirun.