Ανταλλαγι Μθνυμάτων. Κϊςτασ Διαμαντάρασ Τμιμα Πλθροφορικισ ΤΕΙ Θεςςαλονίκθσ

Σχετικά έγγραφα
Επικοινωνία. Message-Passing Interface (MPI) Βασικές Κλήσεις για Sockets. Μοντέλο Μεταβίβασης Μηνυµάτων. Μοντέλα Παράλληλου Υπολογισµού

Ε-85: Ειδικά Θέµατα Λογισµικού

Κατανεμημένος και Παράλληλος Προγραμματισμός MPI. MPI Απλές εντολές 03/13/2016. Οδηγίες αποστολής / παραλαβής μηνυμάτων, Υπολογισμός του π (

ύο μηχανισμοί απαιτούνται: 1. Μία μέθοδος για τη δημιουργία διεργασιών

Non-blocking Επικοινωνίεσ και Buffering. Κώςτασ Διαμαντάρασ ΤΕΙ Θεςςαλονίκθσ 2011

MPI: Βαςικζσ Εντολζσ Επικοινωνίασ. Κώςτασ Διαμαντάρασ Τμιμα Πλθροφορικισ ΤΕΙ Θεςςαλονίκθσ 2011

Εισαγωγή. E-03: Λειτουργικά Συστήµατα ΙΙ 6. Εαρινό Εξάµηνο SUN RPC. Κλήση Αποµακρυσµένων ιαδικασιών (RPC) Σύνδεση: Port Mapper.

Αρχιτεκτονική κοινής μνήμης


Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας

Τφποι δεδομζνων MPI. Κώςτασ Διαμαντάρασ Τμιμα Πλθροφορικισ ΤΕΙ Θεςςαλονίκθσ

Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας

Message Passing Interface (MPI)

Υπολογισμοί Μεταβίβασης Μηνυμάτων

Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας

Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Μεταβίβαση μηνυμάτων. Κεφάλαιο 5 (νέο βιβλίο) Κεφάλαιο 8 (παλιές σημειώσεις)

Συστήµατα Παράλληλης Επεξεργασίας. Message Passing Interface (MPI)

Message Passing Interface (MPI)

Κεφάλαιο VIΙΙ Β. Δημακόπουλος

Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας

MPI: Message Passing Interface

MPI: Message Passing Interface

Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας

MPI: Message Passing Interface

Παράλληλα και Κατανεµηµένα Συστήµατα. Εισαγωγή

Message Passing Interface (MPI)

Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας

Δομζσ Αφαιρετικότθτα ςτα Δεδομζνα

Message Passing Interface MPI. Κϊςτασ Διαμαντάρασ Τμιμα Πλθροφορικισ ΤΕΙ Θεςςαλονίκθσ

Προγραµµατισµός µε ανταλλαγή µηνυµάτων Ι. Εισαγωγή στο MPI. Εφαρµογές Ανεξάρτητου Παραλληλισµού.

ΕΚΔΟΣΗ 1.0 ΟΚΤΩΒΡΙΟΣ, 2017 ΕΙΣΑΓΩΓΗ ΣΤΑ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ ΕΙΣΑΓΩΓΗ ΣΤO MESSAGE PASSING INTERFACE - MPI ΕΠΙΜΕΛΕΙΑ: Β. ΤΣΑΚΑΝΙΚΑΣ, Β.

ΠΡΟΓΡΑΜΜΑΣΙΜΌ ΤΠΟΛΟΓΙΣΏΝ. Κεφάλαιο 8 Η γλϊςςα Pascal

Δομθμζνοσ Προγραμματιςμόσ. Βαγγζλθσ Οικονόμου Εργαςτιριο 9

Επιστημονικοί Υπολογισμοί - Μέρος ΙΙΙ: Παράλληλοι Υπολογισμοί

Message Passing Interface (MPI)

Δείκτεσ Διαχείριςθ Μνιμθσ. Βαγγζλθσ Οικονόμου Διάλεξθ 8

EM 361: Παράλληλοι Υπολογισμοί

Κατανεμημένος και Παράλληλος Προγραμματισμός MPI. Γρήγορος οδηγός αναφοράς 1/4/2017

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ. Της φοιτήτριας Αριστέας Χρονοπούλου Αρ. Μητρώου: 01 / Επιβλέπων Καθηγητής Αθανάσιος Μάργαρης

Επιμερισμός δεδομένων

Υ07 Παράλληλα Συστήματα /5/2016 Προγραμματισμός με μεταβίβαση μηνυμάτων

16. Πίνακεσ και Συναρτήςεισ

17. Πολυδιάςτατοι πίνακεσ

Το Message Passing Interface (MPI) και η υποστήριξή του στο EGEE Grid

Παράλληλος προγραµµατισµός

Λ10 Παράλληλος & Κατανεμημένος Προγραμματισμός 2009

Το Message Passing Interface (MPI) και η υποστήριξή του στο EGEE Grid. Vangelis Koukis 01-GRNET and HG EKT admin team

30/4/2012 Συστήματα κατανεμημένης μνήμης και ο προγραμματισμός τους (Ι) Β. Δημακόπουλος

Ειδικά Θζματα Βάςεων Δεδομζνων

Το Message Passing Interface (MPI) και η υποστήριξή του στο EGEE Grid

ΛΕΙΣΟΤΡΓΙΚΆ ΤΣΉΜΑΣΑ. 7 θ Διάλεξθ Διαχείριςθ Μνιμθσ Μζροσ Γ

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας

Εγχειρίδιο Χρήςησ Προςωποποιημζνων Υπηρεςιών Γ.Ε.ΜΗ. (Εθνικό Τυπογραφείο)

Καρβέλης Φώτης ΓΟΝΙΔΙΩΜΑΤΙΚΗ ΒΙΒΛΙΟΘΗΚΗ

5 ΜΕΘΟΔΟΙ - ΠΑΡΑΜΕΤΡΟΙ

Εγχειρίδιο Χρήςησ Προςωποποιημζνων Υπηρεςιών Γ.Ε.ΜΗ. (Εθνικό Τυπογραφείο)

Προγραμματισμός με Μεταβίβαση Μηνυμάτων

ΕΡΓΑΣΗΡΙΑΚΗ ΑΚΗΗ 4.1

ΕΚΔΟΣΗ 1.1 ΑΠΡΙΛΙΟΣ, 2018 ΕΙΣΑΓΩΓΗ ΣΤΑ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ ΤΟ ΠΡΩΤΟΚΟΛΛΟ ECHO ΕΠΙΜΕΛΕΙΑ: Β. ΤΣΑΚΑΝΙΚΑΣ, Β. ΤΑΜΠΑΚΑΣ

Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων. 15. Πίνακεσ ΙI. Ιωάννθσ Κατάκθσ. ΕΠΛ 032: Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων

ΕΦΑΡΜΟΓΕ ΒΑΕΩΝ ΔΕΔΟΜΕΝΩΝ ΣΗ ΝΟΗΛΕΤΣΙΚΗ. Φιλιοποφλου Ειρινθ

Σ ΤΑΤ Ι Σ Τ Ι Κ Η. Statisticum collegium V

ΕΚΔΟΣΗ 1.0 ΟΚΤΩΒΡΙΟΣ, 2017 ΕΙΣΑΓΩΓΗ ΣΤΑ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ ΤΟ ΠΡΩΤΟΚΟΛΛΟ TARRY ΕΠΙΜΕΛΕΙΑ: Β. ΤΣΑΚΑΝΙΚΑΣ, Β. ΤΑΜΠΑΚΑΣ

Δείκτεσ απόδοςθσ υλικών

ΕΦΑΡΜΟΓΖσ ΒΆΕΩΝ ΔΕΔΟΜΖΝΩΝ ΚΑΙ ΔΙΑΔΙΚΣΥΟΤ. Ειρινθ Φιλιοποφλου

Χεμπιανά μοντζλα μάκθςθσ. Κϊςτασ Διαμαντάρασ Τμιμα Πλθροφορικισ ΤΕΙ Θεςςαλονίκθσ

Ιδιότθτεσ πεδίων Γενικζσ.

Βαγγζλθσ Οικονόμου Διάλεξθ 7. Συναρτιςεισ Μζροσ 2ο

Περιεχόμενα. χολι Χοροφ Αντιγόνθ Βοφτου - Πολιτικι Διαχείριςθσ Cookie 1

Ένα πρόβλθμα γραμμικοφ προγραμματιςμοφ βρίςκεται ςτθν κανονικι μορφι όταν:

Περίληψη. Υπερυπολογιστές. Υπολογιστικά προβλήµατα. TOP 500 (Ιούνιος 2007) TOP 500 (Ιούνιος 2009) Ε-85: Ειδικά Θέµατα Λογισµικού

ΛΕΙΣΟΤΡΓΙΚΆ ΤΣΉΜΑΣΑ. 3 ο Εργαςτιριο υγχρονιςμόσ Διεργαςιϊν

Ενδεικτική Οργάνωςη Ενοτήτων. Α Σάξη. Διδ. 1 ΕΝΟΣΗΣΑ 1. 6 Ομαδοποίθςθ, Μοτίβα,

Αςφάλεια και Προςταςία Δεδομζνων

ΕΝΟΤΗΤΑ 2: ΤΟ ΛΟΓΙΣΜΙΚΟ ΤΟΥ ΥΠΟΛΟΓΙΣΤΗ. ΚΕΦΑΛΑΙΟ 5: Γνωριμία με το λογιςμικό του υπολογιςτι

Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας

Λ10 Παράλληλος & Κατανεμημένος Προγραμματισμός Μάθημα 8 ο & 9 ο 1 & 8/12/2009

Ρρογραμματιςμόσ Μεκόδων Επίλυςθσ Ρροβλθμάτων. 18. Αλφαριθμητικά. Ιωάννθσ Κατάκθσ. ΕΡΛ 032: Ρρογραμματιςμόσ Μεκόδων Επίλυςθσ Ρροβλθμάτων

Τα Δίκτυα Perceptron και ADALINE. Κϊςτασ Διαμαντάρασ Τμιμα Πλθροφορικισ ΤΕΙ Θεςςαλονίκθσ

x n D 2 ENCODER m - σε n (m 2 n ) x 1 Παραδείγματα κωδικοποιθτϊν είναι ο κωδικοποιθτισ οκταδικοφ ςε δυαδικό και ο κωδικοποιθτισ BCD ςε δυαδικό.

Βάςεισ Δεδομζνων Ι. Ενότθτα 10: Συνακροιςτικζσ ςυναρτιςεισ. Δρ. Σςιμπίρθσ Αλκιβιάδθσ Σμιμα Μθχανικών Πλθροφορικισ ΣΕ

Εργαςτιριο Πικανοτιτων Σθμειϊςεισ προγραμματιςμοφ: βαςικζσ γνϊςεισ ανάπτυξθσ εφαρμογϊν. Κϊςτασ Αρβανιτάκθσ

Ε-85: Ειδικά Θέµατα Λογισµικού

Οντοκεντρικόσ Προγραμματιςμόσ

ΠΑΝΕΠΙΣΤΗΜΙΟΥ ΠΕΛΟΠΟΝΝΗΣΟΥ ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ

Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας

Virtualization. Στο ςυγκεκριμζνο οδηγό, θα παρουςιαςτεί η ικανότητα δοκιμήσ τησ διανομήσ Ubuntu 9.04, χωρίσ την ανάγκη του format.

GNSS Solutions guide. 1. Create new Project

ΦΤΛΛΟ ΕΡΓΑΙΑ ΤΠΗΡΕΙΑ ΗΛΕΚΣΡΟΝΙΚΟΤ ΣΑΥΤΔΡΟΜΕΙΟΤ

Πολυπλέκτες. 0 x 0 F = S x 0 + Sx 1 1 x 1

Οδηγός χρήσης Blackboard Learning System για φοιτητές

Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων. 20. Αρχεία. Ιωάννθσ Κατάκθσ. ΕΠΛ 032: Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων

ΕΦΑΡΜΟΓΕ ΒΑΕΩΝ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΔΙΑΔΙΚΣΤΟΤ. Φιλιοποφλου Ειρινθ

Probleme de transmitere în modul standard. MPI - Message Passing Interface. Comunicarea punct la punct

3/5/2012 Συστήματα κατανεμημένης μνήμης και ο προγραμματισμός τους (ΙI) Β. Δημακόπουλος

Το Δίκτυο Multi-Layer Perceptron και ο Κανόνασ Back-Propagation. Κϊςτασ Διαμαντάρασ Τμιμα Πλθροφορικισ ΤΕΙ Θεςςαλονίκθσ

Εγχειρίδιο Χρήςησ Προςωποποιημζνων Υπηρεςιών Γ.Ε.ΜΗ. (Περιφέρειες)

ΛΕΙΤΟΥΓΙΚΆ ΣΥΣΤΉΜΑΤΑ. 5 ο Εργαςτιριο Ειςαγωγι ςτθ Γραμμι Εντολϊν

Transcript:

Ανταλλαγι Μθνυμάτων Κϊςτασ Διαμαντάρασ Τμιμα Πλθροφορικισ ΤΕΙ Θεςςαλονίκθσ

Στζλνω και λαμβάνω μθνφματα Θέματα: Προσ ποιόν ςτζλνονται τα δεδομζνα; Τι ςτζλνεται; Πϊσ ο δζκτθσ αναγνωρίηει τα δεδομζνα; 2

Πζραςμα μθνυμάτων Αποςτολι μθνφματοσ point-to-point: send(dest, type, address, length) dest είναι ζνασ ακζραιοσ που αναπαριςτά τθ διεργαςία που κα λάβει το μινυμα. type είναι ζνασ κετικόσ ακζραιοσ τον οποίο ο παραλιπτθσ μπορεί να χρθςιμοποιιςει για να επιλζξει μθνφματα. (address, length) περιγράφει ζνα ενιαίο χϊρο ςτθ μνιμθ που περιζχει το μινυμα προσ αποςτολι. 3 Αποςτολι μθνφματοσ προσ όλουσ (global): broadcast(type, address, length)

Ο Buffer Στζλνοντασ και λαμβάνοντασ μόνο μια ςυνεχι ςειρά από bytes: Κρφβει από το hardware τθν πραγματικι δομι των δεδομζνων Απαιτεί πακετάριςμα διεςπαρμζνων δεδομζνων Γραμμζσ ενόσ πίνακα αποκθκευμζνου κατά ςτιλεσ Συλλογζσ διαφορετικϊν τφπων δομϊν δεδομζνων Εμποδίηει τθν επικοινωνία μεταξφ μθχανϊν με διαφορετικζσ αναπαραςτάςεισ των τφπων των δεδομζνων (πχ το μικοσ ενόσ integer, ι ενόσ double, κλπ) 4

Γενικεφοντασ τον buffer Στο MPI ο buffer ορίηεται από starting address, datatype, και count Datatype = elementary (όλοι τα datatypes τθσ C ι Fortran) array από datatypes Strided blocks από datatypes Δεικτοδοτθμζνο (indexed) array με blocks από datatypes Γενικι δομι Τα Datatypes δθμιουργοφνται αναδρομικά. Οι οριςμοί των βαςικϊν datatypes επιτρζπει ετερογενι επικοινωνία. Βζλτιςτθ χριςθ ειδικοφ hardware ορίηοντασ τφπουσ δεδομζνων 5

Τφποι δεδομζνων Ο απλόσ τφποσ είναι πολφ περιοριςτικόσ. Συχνά χρθςιμοποιοφμε overloading για να επιτφχουμε τθν απαραίτθτθ ευελιξία. Προβλιματα: - κάτω από τον ζλεγχο του χριςτθ - επιτρζπονται wild cards (MPI_ANY_TAG) - ςυγκροφςεισ χριςθσ τθσ βιβλιοκικθσ με άλλουσ χριςτεσ ι άλλεσ βιβλιοκικεσ 6

Ορκι χριςθ επικοινωνίασ 7

Λανκαςμζνθ χριςθ επικοινωνίασ 8

Επικοινωνία ςε αναμονι 9

Λανκαςμζνθ επικοινωνία με αναμονι 10

Λφςθ ςτο πρόβλθμα του τφπου Διαφορετικό context επικοινωνίασ για κάκε οικογζνεια μθνυμάτων. Χρθςιμοποιείται για τθν τοποκζτθςθ μθνυμάτων ςτθν ουρά (queueing) και το ταίριαςμα (matching) των send και receive. Απαγόρευςθ wild cards, για αςφάλεια Οι τφποι (tags, ςτο MPI) διατθροφνται για κανονικι χριςθ (wild cards OK) 11

Περιοριςμοί ςτθν επικοινωνία Ξεχωριςτά γκρουπ διεργαςιϊν δουλεφουν ςε ξεχωριςτά υπο-προβλιματα - Επικυμθτζσ οι τοπικζσ μεταβλθτζσ ςτισ διεργαςίεσ - Ο κοινόσ χϊροσ διευκφνςεων δυςκολεφει το modularity - Τα μθνφματα από τθν εφαρμογι διαχωρίηονται από τα εςωτερικά μθνφματα τθσ βιβλιοκικθσ. - Η γνϊςθ των τφπων μθνυμάτων τθσ βιβλιοκικθσ είναι ανεπικφμθτθ -Ο ςυγχρονιςμόσ πριν και μετά από τισ κλιςεισ ςτισ ςυναρτιςεισ βιβλιοκικθσ είναι ανεπικφμθτοσ 12

Το βαςικό send/receive του MPI Το βαςικό (blocking) send: MPI_Send( start, count, datatype, dest, tag, comm ) Και το receive: MPI_Recv(start, count, datatype, source, tag, comm, status) Τα source, tag, και count του μθνφματοσ που ελιφκθ πραγματικά μπορεί να ανακτθκεί από το status. Δφο απλζσ ςυλλογικζσ ςυναρτιςεισ: MPI_Bcast(start, count, datatype, root, comm) MPI_Reduce(start, result, count, datatype, operation, root, comm) 13

Παίρνοντασ πλθροφορία για το μινυμα που ελιφκθ MPI_Status status; MPI_Recv(..., &status );... status.mpi_tag;... status.mpi_source; MPI_Get_count( &status, datatype, &count ); Τα MPI_TAG και MPI_SOURCE χρθςιμοποιοφνται κυρίωσ όταν ζχουμε MPI_ANY_TAG και/ι MPI_ANY_SOURCE ςτο receive. Το MPI_Get_count χρθςιμοποιείται για να δοφμε πόςα data του ςυγκεκριμζνου τφπου ελιφκθςαν. 14

Οι 6 βαςικζσ ςυναρτιςεισ Το MPI είναι πολφ απλό. 6 ςυναρτιςεισ αρκοφν για να γράψεισ τα περιςςότερα προγράμματα: 1. MPI_Init 2. MPI_Finalize 3. MPI_Comm_size 4. MPI_Comm_rank 5. MPI_Send 6. MPI_Recv 15

Συλλογικι επικοινωνία Η ςυνάρτθςθ MPI_Bcast ςτζλνει data από μια διεργαςία προσ όλεσ τισ άλλεσ (broadcast) Η ςυνάρτθςθ MPI_Reduce ςυνδυάηει δεδομζνα από όλεσ τισ διεργαςίεσ (ακροίηοντάσ τα ςτθν περίπτωςθ αυτι) και επιςτρζφει το αποτζλεςμα ςε μια μόνο διεργαςία 16

Παράδειγμα (υπολογιςμόσ του π) #include "mpi.h" #include <math.h> int main(argc,argv) int argc; char *argv[]; { int done = 0, n, myid, numprocs, i, rc; double PI25DT = 3.141592653589793238462643; double mypi, pi, h, sum, x, a; MPI_Init(&argc,&argv); MPI_Comm_size(MPI_COMM_WORLD,&numprocs); MPI_Comm_rank(MPI_COMM_WORLD,&myid); 17

while (!done) { if (myid == 0) { printf("enter the number of intervals: (0 quits) "); scanf("%d",&n); } MPI_Bcast(&n, 1, MPI_INT, 0, MPI_COMM_WORLD); if (n == 0) break; h = 1.0 / (double) n; sum = 0.0; for (i = myid + 1; i <= n; i += numprocs) { x = h * ((double)i - 0.5); sum += 4.0 / (1.0 + x*x); } mypi = h * sum; MPI_Reduce(&mypi, &pi, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD); if (myid == 0) printf("pi is approximately %.16f, Error is %.16f\n", pi, fabs(pi - PI25DT)); } /* end while */ MPI_Finalize(); } /* end program */ 18

Συλλογικζσ επικοινωνίεσ ςτο MPI Η επικοινωνία γίνεται ςτο εςωτερικό ενόσ γκρουπ διεργαςιϊν. Τα γκρουπ φτιάχνονται «με το χζρι». Χριςθ ςυναρτιςεων MPI group-manipulation ι ρουτίνεσ MPI topologydefinition. Δε χρθςιμοποιοφνται Message tags. Αντ αυτοφ χριςθ διαφορετικϊν communicators. Καμία ςυλλογικι επικοινωνία non-blocking. Τρία είδθ ςυλλογικισ επικοινωνίασ: - ςυγχρονιςμόσ - μετακίνθςθ δεδομζνων - ςυλλογικζσ πράξεισ 19

Συγχρονιςμόσ MPI_Barrier(comm) Η ςυνάρτθςθ αυτι μπλοκάρει τθ διεργαςία που τθν καλεί μζχρι να τθν καλζςουν όλεσ οι διεργαςίεσ που ανικουν ςτον communicator comm. 20

Διακζςιμοι τφποι ςυλλογικισ επικοινωνίασ 21

Διακζςιμοι τφποι ςυλλογικϊν υπολογιςμϊν 22

Συλλογικζσ ρουτίνεσ Allgather Allgatherv Allreduce Alltoall Alltoallv Bcast Gather Gatherv Reduce ReducedScatter Scan Scatter Scatterv 23

Συλλογικζσ ρουτίνεσ (2) Οι ςυναρτιςεισ All δίνουν δεδομζνα ςε όλεσ τισ διεργαςίεσ. Οι ςυναρτιςεισ V επιτρζπουν διαφορετικοφ μεγζκουσ δεδομζνα. Οι ςυναρτιςεισ Allreduce, Reduce, ReduceScatter, και Scan παίρνουν τόςο built-in όςο και user-defined ςυναρτιςεισ ςυνδυαςμοφ 24

Συλλογικζσ ςυναρτιςεισ υπολογιςμοφ MPI Name Λειτοσργία MPI name Λειτοσργία MPI_MAX maximum MPI_LXOR Λογικό XOR MPI_MIN minimum MPI_BAND Bitwise AND MPI_PROD γινόμενο MPI_BOR Bitwise OR MPI_SUM άθροισμα MPI_BXOR Bitwise XOR MPI_LAND Λογικό AND MPI_MAXLOC Max & Θέση MPI_LOR Λογικό OR MPI_MINLOC Min & Θέση 25

Ορίςτε τθ δικι ςασ ςυλλογικι πράξθ MPI_Op_create(user_function, commute, op) MPI_Op_free(op) user_function(invec, inoutvec, len, datatype) Η ςυνάρτθςθ user_function εκτελεί: for i from 0 to len-1 inoutvec[i] = invec[i] op inoutvec[i]; Η user_function μπορεί να μην ζχει τθν αντιμετακετικι ιδιότθτα (π.χ. πολλαπλαςιαςμόσ πινάκων). 26