γουμε από το μενού Project, Build All ή στο πληκτρολόγιο πα-
τάμε Ctrl+B. Το αποτέλεσμα της μεταγλώττισης και της δια-
σύνδεσης εμφανίζεται στην Όψη Console.
Για να εκτελέσουμε τον παράλληλο κώδικα, επιλέγουμε στο
μενού Run το Run Configurations. Στο παράθυρο διαλόγου
που ανοίγει, επιλέγουμε με διπλό κλικ το Parallel Application
και τότε δημιουργείται ένα νέο σύνολο ρυθμίσεων
(Configuration) για το έργο λογισμικού mpiHello. Στην καρτέ-
λα Resources ορίζουμε τον αριθμό διεργασιών σε τέσσερις,
αφού η συστοιχία μας αποτελείται από τέσσερις υπολογιστές.
Στην καρτέλα Application, πατάμε το πλήκτρο Browse του
Application program και εντοπίζουμε το εκτελέσιμο αρχείο
της εφαρμογής mpiHello (είναι το mpiHello και βρίσκεται στη
θέση /mpiuser/workspace/mpiHello/Debug).
Πατάμε το Run και ο παράλληλος κώδικας εκτελείται στην
τοπική μας συστοιχία. Στην Όψη Console βλέπουμε τα αποτε-
λέσματα της επιτυχούς εκτέλεσης του παράλληλου κώδικα
(εικόνα 3).
Δημιουργία έργου λογισμικού και εκτέλεση κώδικα
OpenMP
Δημιουργούμε ένα νέο έργο λογισμικού C/C++. Από το
μενού File επιλέγουμε New, Project. Στην καρτέλα Select a
wizard του παραθύρου New Project επιλέγουμε C/C++ και C
Project. Πατάμε το Next και επιλέγουμε το OpenMP Hello
World C Project με Toolchain το Linux GCC. Δίνουμε όνομα
openmpHello και πατάμε Next. Στα Basic Settings μπορούμε
να καταχωρίσουμε το όνομά μας ως Author και με Next πάμε
στην καρτέλα OpenMP Project Settings, όπου απενεργοποι-
ούμε και ενεργοποιούμε εκ νέου το Add OpenMP project
settigns to this project, ώστε να ενεργοποιηθεί το Use default
information, το οποίο απενεργοποιούμε. Ορίζουμε ως Include
path τη διαδρομή /usr/include. Πατάμε το πλήκτρο Next, ενώ
στην καρτέλα Select Configurations το Finish.
Το νέο έργο λογισμικού έχει δημιουργηθεί και μπορούμε
να το εξερευνήσουμε από την Όψη Project Explorer της Προ-
οπτικής C/C++. Μεταγλωττίζουμε και δημιουργούμε το εκτε-
λέσιμο πρόγραμμα επιλέγοντας από το μενού Project, Build
All.
Για να εκτελέσουμε τον OpenMP κώδικα δεν απαιτείται δια-
χειριστής εργασιών, αφού ο κώδικας εκτελείται με πολλαπλά
νήματα του ίδιου επεξεργαστή. Πριν από την εκτέλεση πρέπει
να ορίσουμε το πλήθος των νημάτων που θα χρησιμοποιη-
θούν μέσω της μεταβλητής OMP_NUM_THREADS. Επιλέγου-
με στο μενού Run > Run Configurations και κάνουμε διπλό
κλικ στο C/C++ Application. Στην καρτέλα Main εντοπίζουμε
το εκτελέσιμο αρχείο πατώντας στο Search Project. Στο πα-
ράθυρο που ανοίγει παρατηρούμε ότι έχει γίνει αυτόματα η
επιλογή του openmpHello και πατάμε ΟΚ. Επιλέγουμε την
καρτέλα Environment και εκεί πατάμε New. Ορίζουμε στο πα-
ράθυρο New Environment Variable μία νέα μεταβλητή συστή-
ματος, με Name το OMP_NUM_THREADS και Value τον αριθ-
μό νημάτων που επιθυμούμε, έστω 10. Στο παράθυρο Run
Configurations πατάμε Apply και μετά Run. Τα αποτελέσματα
της εκτέλεσης εμφανίζονται στο πλαίσιο Console (Εικόνα 4).
Γράφοντας το δικό μας κώδικα
Στις οδηγίες αυτού του τεύχους χρησιμοποιούμε έτοιμα
δείγματα κώδικα στοιχειωδών παράλληλων εφαρμογών, τα
οποία προσφέρει το Eclipse PTP. Για να γράψουμε το δικό
μας κώδικα ακολουθούμε σχεδόν τα ίδια βήματα, με τη δια-
φορά ότι κατά τη δημιουργία ενός έργου λογισμικού επιλέ-
γουμε MPI ή OpenMP Empty C Project. Το έργο λογισμικού
που δημιουργείται δεν περιλαμβάνει πηγαία αρχεία κώδικα.
Κάνουμε δεξί κλικ στο φάκελο του έργου στην Όψη Project
Explorer, επιλέγουμε New > Source Folder και στο Folder
Name βάζουμε ένα όνομα, έστω src. Κατόπιν κάνουμε δεξί
κλικ στο φάκελο src, επιλέγουμε New, Source File και δίνουμε
ένα όνομα στο νέο αρχείο, έστω main.c. Με διπλό κλικ πάνω
στο όνομά του ανοίγουμε το πηγαίο αρχείο, όπου γράφουμε
το δικό μας κώδικα.
Υβριδικό... π
Ως εφαρμογή ας δοκιμάσουμε να υπολογίσουμε την τιμή
του αριθμού π, δημιουργώντας ένα νέο έργο λογισμικού
υβριδικού παράλληλου κώδικα MPI και OpenMP. Σε αυτό το
καινοτόμο μοντέλο, πέρα από το χωρισμό ενός υπολογισμού
σε διεργασίες, έχουμε και χωρισμό κάθε διεργασίας σε νήμα-
τα. Έτσι, αντιμετωπίζουμε το παράλληλο σύστημα εκτέλεσης
του κώδικα ως κατανεμημένη κοινόχρηστη μνήμη, συνδυάζο-
ντας τη μεταβίβαση μηνυμάτων με την πολυνηματική επεξερ-
γασία.
Στο Eclipse PTP δημιουργούμε ένα νέο έργο λογισμικού
(μενού File > New > C Project), με όνομα MPIOpenMP-pi.
Επιλέγουμε ως τύπο τον MPI Empty C Project και ως αλυσίδα
εργαλείων την Linux GCC. Πατάμε Next και απενεργοποιούμε
Linux Labs – Εclipse + PTP
Linux Inside
76
Εκτέλεση παράλληλου κώδικα MPI στο περιβάλλον του
Eclipse.
3
Εκτέλεση παράλληλου κώδικα OpenMP στο περιβάλλον του
Eclipse.
4