DAP

Από DistrSys

Το Περιβάλλον Κατανεμημένων Αλγόριθμων (Distributed Algorithms Platform) είναι ένα λογισμικό για την υλοποίηση, έλεγχο και προσομοίωση κατανεμημένων αλγόριθμων. Το περιβάλλον προσφέρει εναλλακτικές προσεγγίσεις για την ανάπτυξη ασύρματων και κινητών αλγόριθμων.


Πίνακας περιεχομένων

Γενικά


Ιστορικό

Η πρώτη έκδοση του DAP (ονομαζόταν LEP-DAP) αναπτύχθηκε στα πλαίσια του Ευρωπαϊκού IST προγράμματος ερευνητικού έργου ALCOM-FT (αρ.συμβολαίου IST-1999-14186), στο πλαίσιο εργασία 2, παραδοτέα D7, D17, D25.

Αρχικά το περιβάλλον ήταν βασισμένο στην βιβλιοθήκη LEDA ως προς το γραφικό περιβάλλον, τις δομές δεδομένων και τους αλγόριθμους που χρησιμοποιήθηκαν για την υλοποίηση. Στην δεύτερη έκδοση του DAP βασικός στόχος ήταν η απεξάρτηση της μηχανής εκτέλεσης από την βιβλιοθήκη LEDA και η χρήση της βιβλιοθήκης BOOST. Επίσης έγιναν αρκετές βελτιώσεις και αλλαγές στο εσωτερικό της μηχανής καθώς επίσης και στο σύστημα προσομοίωσης κινητών σταθμών

Τεχνικές Αναφορές & Δημοσιεύσεις

Μελλοντικές Κατευθύνσεις

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

Οδηγίες Εγκατάστασης & Χρήση

Αναλυτικές οδηγίες εγκατάστασης για περιβάλλον unix/linux δίνονται στην σελίδα του συστήματος DAP:Οδηγίες Εγκατάστασης. Εφόσον το περιβάλλον εγκατασταθεί με επιτυχία, στην σελίδα DAP:Οδηγίες Χρήσης δίνονται οδηγίες για την χρήση του λογισμικού από έναν "απλό" χρήστη του συστήματος.


Αρχιτεκτονική


Περιβάλλον Εργασίας


Ανάπτυξη Αλγόριθμων

Κάποια συμβουλές για όταν γράφετε αλγορίθμους για το DAP


1) Όταν θέλετε να στείλετε ένα μήνυμα που έχει παραπάνω από ένα πεδία πχ έστω ότι μια διεργασία θέλει να στείλει τον κωδικό της και μια άλλη μεταβλητή counter:

int myCode = dap.getMyID();

int counter = 0;

StringMessage mesg;

mesg << myCode;

mesg << " ";

mesg << counter;

// send message


Η διεργασία που θα παραλάβει το μήνυμα θα πρέπει να επεξεργαστεί το μήνυμα κατάλληλα για να ξεχωρίσει τα πεδία πχ:

StringMessage recv;

dap.receive(senderID, recv, tag, true);

string s = recv.toString();

// Ακολουθεί επεξεργασία του s


2) Αν μια διεργασία έχει παραπάνω από έναν γείτονες και θέλει να στείλει μηνύματα σε όλους:

include <vector>

...

vector<int> neighbors;

dap.getMyNeighbors(neighbors, "out");

...

for(int j=0; j<neighbors.size(); j++)

dap.send(-1, v[j], msg, tag);


Σημείωση: Όταν στέλνετε ένα μήνυμα καλύτερα τα πεδία msg και tag να μην είναι κενά γιατί μπορεί το DAP να κολλήσει.

περιβάλλον DAP