Οδηγι ες Χρη σης του MPICH στα Νέα LinuxXX.di.uoa.gr Ακολουθη στε τις οδηγι ες με την σειρά. Επιβεβαιώστε ότι κάθε βη μα έχει ολοκληρωθει σωστά. Α. Δοκιμη του Περιβάλλοντος Εργασι ας Προσθέστε στο τέλος του αρχει ου ~/.cshrc setenv MPICH_HOME /usr/local/mpich3 set path=($mpich_home/bin $path) Δοκιμάστε αν το περιβάλλον έχει δημιουργηθει source.cshrc which mpicc (επιστρε φει: /usr/local/mpich3/bin/mpicc) which mpiexec (επιστρε φει: /usr/local/mpich3/bin/mpiexec) which mpptest (επιστρε φει: /usr/local/mpich3/bin/mpptest) which gcc (επιστρε φει: /usr/bin/gcc) Την επόμενη φορά που θα κάνετε login θα πάρει αυτές τις ρυθμι σεις αυτόματα. Β. Το MPICH και η επικοινωνι α μέσω RSA Για να εκτελεστει ένα παράλληλο πρόγραμμα απαιτει ται επικοινωνι α μεταξυ των μηχανών στις οποι ες πρόκειται να εκτελεστου ν οι MPI διεργασι ες. Η επικοινωνι α κρυπτογραφει ται με τοv κρυπταλγόριθμο ασυ μμετρου κλειδιου RSA και για να πραγματοποιηθει απαιτου νται οι παρακάτω ενέργειες: α. Δημιουργη στε ένα ζευ γος κλειδιών RSA με ssh-keygen -t rsa Ζητάει όνομα αρχει ου. Πατη στε enter. Ζητάει να ορι σετε ένα passphrase, πατη στε enter (η ένα string, αλλά όχι τον κωδικό σας) και στην ερώτηση επιβεβαι ωσης πάλι enter (η το string που δώσατε πριν). Στον φάκελο ~/.ssh θα έχουν δημιουργηθει τα αρχει α id_rsa, id_rsa.pub και (ι σως) known_hosts. β. Πλοηγηθει τε στο φάκελο ~/.ssh (cd ~/.ssh) και αντιγράψτε το αρχει ο id_rsa.pub στο authorized_keys
cp id_rsa.pub authorized_keys Tα permissions για τα αρχει α πρέπει να ει ναι (εμφανι ζονται με την εντολη ls -l): -rw-r--r-- authorized_keys -rw------- id_rsa -rw-r--r-- id_rsa.pub -rw-r--r-- known_hosts Σε περι πτωση που δεν ει ναι αυτά τα permissions, οι αντι στοιχες εντολές για να αλλάξουν ει ναι: chmod 644 authorized_keys chmod 600 id_rsa chmod 644 id_rsa.pub chmod 644 known_hosts γ. Τρέξτε το script askdate.csh στον φάκελο Configuration και δώστε 'yes' σε όλα τα ερωτη ματα για προσθη κη των μηχανών linux01-linux30. Το αρχει ο περιέχει εντολές της μορφη ς ssh linuxχχ.di.uoa.gr date (όπου ΧΧ από 01 έως 30) Σε περι πτωση που δεν επιτρέπει να τρέξει αλλάξτε τα permissions: chmod 744 askdate.csh δ. Η διαδικασι α έχει ολοκληρωθει. Για έλεγχο ξανατρέξτε το script. Κανονικά δεν πρέπει να σας ζητηθει επιβεβαι ωση, απλά να δι νει την ημερομηνι α από κάθε μηχανη. Αν υπάρχουν μηχανές που δεν επέστρεψαν την ημερομηνι α σημαι νει ότι δεν λειτουργου ν και δεν πρέπει να τις χρησιμοποιη σετε στα επόμενα βη ματα. Τα βη ματα α-γ.της ενότητας Β χρειάζονται να γι νουν μόνο μι α φορά. Το δ προτει νεται να το εκτελει τε πριν από κάθε χρη ση του MPI, ώστε να διαπιστώνετε ποιες μηχανές ει ναι διαθέσιμες και ποιες όχι (σημειώστε τις για να μην τις χρησιμοποιη σετε σε επόμενο στάδιο). Γ. Μεταγλώττιση Η μεταγλώττιση ενός ΜΡΙ προγράμματος γραμμένο σε γλώσσα C, γι νεται με την εντολη mpicc. Η εντολη αυτη δέχεται τις εξη ς παραμέτρους: -help Δι νει μια συ ντομη βοηθητικη περιγραφη της εντολη ς mpicc -echo Δει χνει τι ακριβώς κάνει το πρόγραμμα -o Συνδέει το εξαγόμενο από την μεταγλώττιση αρχει ο με τις βιβλιοθη κες και δημιουργει το εκτελέσιμο. Μεταγλωττι στε ένα πρόγραμμα mpiprog.c (όπου για mpiprog.c δοκιμάστε το ring.c) mpicc -ο ring ring.c
Δ. Εκτέλεση ΜΡΙ Προγραμμάτων σε μια μηχανη Τρέξτε το πρώτο παράλληλο πρόγραμμα που δημιουργει 4 διεργασι ες στη μηχανη που έχετε συνδεθει mpiexec n 4 ring E. Εκτέλεση ΜΡΙ Προγραμμάτων σε Πολλές Μηχανές 1. Χρειάζεται ένα αρχει ο κειμένου machines που περιέχει τα ονόματα των μηχανών (π.χ. linux01). Σας δι δεται το αρχει ο machines (στον φάκελο Execution) με όλες της μηχανές που έχει γι νει εγκατάσταση του mpich, όπου το όνομα της μηχανη ς ακολουθει ται από «:4» που δηλώνει ότι θα ξεκινάνε 4 διεργασι ες σε κάθε μηχανη. Αν κάποιες μηχανές δεν δουλευ ουν, συ μφωνα με τα αποτελέσματα από το βη μα Β.δ. Τις διαγράφετε. 2.Δημιουργη στε <n> διεργασι ες στις μηχανές του αρχει ου machines (οι διεργασι ες μοιράζονται κυκλικά στις μηχανές που ορι ζονται): mpiexec f machines n <n> ring ΣΤ. Εκτι μηση Απόδοσης Αρχιτεκτονικη ς με το mpptest Μέτρηση και αξιολόγηση της απόδοσης της επικοινωνι ας latency (ts) και bandwidth (tw) με το mpptest.το mpptest ει ναι ένα εκτελέσιμο MPI πρόγραμμα το οποι ο εξετάζει στοιχει α απόδοσης της επικοινωνι ας στο MPI. Παι ρνει αρκετές παραμέτρους mpptest -help Δει τε και πειραματιστει τε. Για μικρη επι δειξη 1.Εκτελέστε το αρχει ο mpptest με την mpiexec: mpiexec n 2 mpptest //μπορει τε να προσθέσετε παραμέτρους Θα σας δώσει κάτι σαν set default set font variable set curve window y 0.15 0.90 set order d d d x y d title left 'time (us)', bottom 'Size (bytes)', top 'Comm Perf for MPI (linux24)', 'type = blocking' #p0 p1 dist len ave time (us) rate 0 1 1 0 0.176430 0.00 //από εδώ προκυ πτει το latency 0.176430 0 1 1 32 0.209808 152.520e+6
0 1 1 64 0.216961 294.984e+6 0 1 1 96 0.212193 452.419e+6 0 1 1 128 0.226498 565.127e+6 0 1 1 160 0.224113 713.924e+6 0 1 1 192 0.236034 813.441e+6 0 1 1 224 0.238419 939.524e+6 0 1 1 256 0.250340 1022.611e+6 0 1 1 288 0.247955 1161.500e+6 0 1 1 320 0.264645 1209.169e+6 0 1 1 352 0.259876 1354.491e+6 0 1 1 384 0.276566 1388.459e+6 0 1 1 416 0.269413 1544.098e+6 0 1 1 448 0.276566 1619.869e+6 0 1 1 480 0.278950 1720.740e+6 0 1 1 512 0.278950 1835.456e+6 0 1 1 544 0.283718 1917.396e+6 0 1 1 576 0.288486 1996.627e+6 0 1 1 608 0.288486 2107.551e+6 0 1 1 640 0.286102 2236.962e+6 0 1 1 672 0.288486 2329.399e+6 0 1 1 704 0.283718 2481.336e+6 0 1 1 736 0.293255 2509.762e+6 0 1 1 768 0.295639 2597.762e+6 0 1 1 800 0.305176 2621.440e+6 0 1 1 832 0.307560 2705.164e+6 0 1 1 864 0.317097 2724.721e+6 0 1 1 896 0.329018 2723.258e+6 0 1 1 928 0.326633 2841.105e+6 0 1 1 960 0.331402 2896.785e+6 0 1 1 992 0.333786 2971.964e+6 0 1 1 1024 0.352859 2902.005e+6 //και από εδώ το bandwidth plot square join wait new page Αν το τρέξετε με παραμέτρους για γραφικη απεικόνιση mpiexec n 2 mpptest gnuplot > out.gpl θα δημιουργηθου ν δυ ο αρχει α. Το out.gpl, το οποι ο περιέχει τις απαραι τητες gnuplot εντολές και το αρχει ο κειμένου mppout.gpl, το οποι ο περιέχει τα δεδομένα του γραφη ματος. 2.Χρησιμοποιη στε το πρόγραμμα gnuplot, για να δει τε το γράφημα: gnuplot out.gpl από το οποίο μπορείτε να δείτε και οπτικά το latency και bandwidth. Αν έχετε συνδεθεί με ssh client (π.χ. putty) δεν θα μπορείτε να δείτε την γραφική απεικόνιση (χρειάζεται να ορίσετε DISPLAY και xhost)
Ζ. Επισκόπηση και Εκτι μηση Απόδοσης Προγραμμάτων με το mpip Συνδέουμε το πρόγραμμα προς αξιολόγηση με το mpip (http://mpip.sourceforge.net/) mpicc -o ring ring.c -L/usr/local/mpip-3.4.1/lib -lmpip -lm -lbfd liberty και εκτελούμε, όπως στο βήμα Ε2. mpiexec f machines n 8 ring -verbose Εκτός από την έξοδο που δίνει το πρόγραμμα θα δημιουργηθεί ένα αρχείο στον τρέχοντα κατάλογο με όνομα Name.P.C.A.mpiP Name Name of executable (στο παράδειγμα ring) P - number of processes (στο παράδειγμα 8) C - εσωτερικός αριθμός (Collector PID) A - αύξων αριθμός (δίνει πάντα 1;) mpip: Storing mpip output in [./ring.8.14493.1.mpip]. Τυπικό Περιεχόμενο @ mpip @ Command :./ring -verbose @ Version : 3.4.1 @ MPIP Build date : Jan 8 2018, 10:26:05 @ Start time : 2018 01 09 16:58:52 @ Stop time : 2018 01 09 16:58:52 @ Timer Used : PMPI_Wtime @ MPIP env var : [null] @ Collector Rank : 0 @ Collector PID : 14493 @ Final Output Dir :. @ Report generation : Single collector task @ MPI Task Assignment : 0 linux01 @ MPI Task Assignment : 1 linux01 @ MPI Task Assignment : 2 linux01 @ MPI Task Assignment : 3 linux01 @ MPI Task Assignment : 4 linux02 @ MPI Task Assignment : 5 linux02 @ MPI Task Assignment : 6 linux02 @ MPI Task Assignment : 7 linux02 @--- MPI Time (seconds) --------------------------------------------------- Task AppTime MPITime MPI% 0 0.0117 0.0114 96.93
1 0.0229 0.0229 99.89 2 0.0234 0.0234 99.94 3 0.0116 0.0115 99.79 4 0.0527 0.0526 99.83 5 0.0527 0.0526 99.87 6 0.0526 0.0526 99.92 7 0.0529 0.0528 99.85 * 0.28 0.28 99.75 @--- Callsites: 3 --------------------------------------------------------- ID Lev File/Address Line Parent_Funct MPI_Call 1 0 0x404ec1 [unknown] Recv 2 0 0x404eef [unknown] Wait 3 0 0x404e8d [unknown] Isend @--- Aggregate Time (top twenty, descending, milliseconds) ---------------- Call Site Time App% MPI% COV Recv 1 237 84.68 84.90 0.66 Wait 2 41.4 14.78 14.82 2.82 Isend 3 0.804 0.29 0.29 0.99 @--- Aggregate Sent Message Size (top twenty, descending, bytes) ---------- Call Site Count Total Avrg Sent% Isend 3 64 256 4 100.00 @--- Callsite Time statistics (all, milliseconds): 24 --------------------- Name Site Rank Count Max Mean Min App% MPI% Isend 3 0 8 0.0362 0.0114 0.002 0.78 0.81 Isend 3 1 8 0.0362 0.00647 0.00175 0.23 0.23 Isend 3 2 8 0.02 0.00397 0.00125 0.14 0.14 Isend 3 3 8 0.221 0.0307 0.00175 2.13 2.13 Isend 3 4 8 0.0232 0.00472 0.00125 0.07 0.07 Isend 3 5 8 0.0257 0.00481 0.0015 0.07 0.07 Isend 3 6 8 0.0235 0.00453 0.00125 0.07 0.07 Isend 3 7 8 0.244 0.0338 0.0025 0.51 0.51 Isend 3 * 64 0.244 0.0126 0.00125 0.29 0.29 Recv 1 0 8 10.9 1.4 0.002 95.87 98.91 Recv 1 1 8 22 2.85 0.00475 99.51 99.62 Recv 1 2 8 23.3 2.91 0.00225 99.75 99.80 Recv 1 3 8 11.3 1.41 0.0015 97.52 97.72 Recv 1 4 8 41.5 6.56 0.0015 99.72 99.89 Recv 1 5 8 41.5 6.57 0.002 99.76 99.89 Recv 1 6 8 41.5 6.57 0.00175 99.82 99.90 Recv 1 7 8 11 1.41 0.00175 21.32 21.35 Recv 1 * 64 41.5 3.71 0.0015 84.68 84.90 Wait 2 0 8 0.0118 0.00406 0.00225 0.28 0.29 Wait 2 1 8 0.0187 0.00444 0.00175 0.16 0.16 Wait 2 2 8 0.00325 0.00184 0.00125 0.06 0.06 Wait 2 3 8 0.006 0.00209 0.0015 0.14 0.15 Wait 2 4 8 0.00675 0.0025 0.0015 0.04 0.04 Wait 2 5 8 0.004 0.00222 0.00125 0.03 0.03 Wait 2 6 8 0.00375 0.00206 0.00125 0.03 0.03 Wait 2 7 8 41.3 5.16 0.0015 78.02 78.14 Wait 2 * 64 41.3 0.648 0.00125 14.78 14.82 @--- Callsite Message Sent statistics (all, sent bytes) ------------------- Name Site Rank Count Max Mean Min Sum
Isend 3 0 8 4 4 4 32 Isend 3 1 8 4 4 4 32 Isend 3 2 8 4 4 4 32 Isend 3 3 8 4 4 4 32 Isend 3 4 8 4 4 4 32 Isend 3 5 8 4 4 4 32 Isend 3 6 8 4 4 4 32 Isend 3 7 8 4 4 4 32 Isend 3 * 64 4 4 4 256 @--- End of Report --------------------------------------------------------