background image

 

38 

 

αποστολή δεδομένων πραγματοποιείται με την εντολή comm.send() και η λήψη των δεδομένων 

γίνεται με την χρήση της comm.recv(). 

 

Σχήμα 17 Παράδειγμα επικοινωνίας από σημείου σε σημείο μεταξύ της διεργασίας μηδέν και ένα με τις εντολές 

comm.send() και comm.recv()

Στο παραπάνω σχήμα (

Σχήμα 17

) παρουσιάζεται η αποστολή της τιμής της μεταβλητής variable  

από την διεργασία μηδέν στην διεργασία ένα, όπου αποθηκεύεται στη μεταβλητή variable2.  

Η συλλογική επικοινωνία των διεργασιών αφορά στην ανταλλαγή δεδομένων πολλών 

διεργασιών  με  μία  εντολή.  Η  συλλογική  επικοινωνία  εφαρμόζεται  με  αρκετές  διαφορετικές 

εντολές, τόσο για να μοιράσει μια διεργασία τα δεδομένα της στις υπόλοιπες, όσο και για να 

συγκεντρωθούν τα δεδομένα όλων των διεργασιών σε μια. Παρακάτω, παρουσιάζεται η εντολή 

comm.bcast(). 

 

Σχήμα 18 Παράδειγμα συλλογικής επικοινωνίας με την εντολή comm.bcast() με την οποία η διεργασία μηδέν 

στέλνει την τιμή της μεταβλητής data  στις υπόλοιπες διεργασίες. 

Η εντολή comm.bcast() στέλνει την τιμή της μεταβλητής data από την διεργασία μηδέν σε όλες 

τις  υπόλοιπες  διεργασίες.  Στην  κατηγορία  των  εντολών  συλλογικής  επικοινωνίας  υπάρχει 

ακόμα η εντολή comm.scatter(), η οποία μοιράζει έναν πίνακα σε ίσα κομμάτια για κάθε μια 

από τις διεργασίες, η εντολή comm.gather(), που λειτουργεί αντίστροφα και συγκεντρώνει τις 

τιμές  από  όλες  τις  διεργασίες  σε  μία  διεργασία,  και  η  εντολή  comm.allgather(),  κατά  την 

εκτέλεση  της  οποίας  όλες  οι  διεργασίες  στείλουν  μια    μεταβλητή  σε  όλες  τις  υπόλοιπες 

διεργασίες.