Laboratorul 11 - Funcții de comunicare și de sincronizare în MPI
📄️ Funcții nonblocante
Până acum în cadrul laboratoarelor de MPI ați lucrat cu funcții de comunicare blocante (MPISend, MPIRecv). În cadrul comunicării blocante, funcțiile de send și de receive se blochează până când buffer-ul folosit pentru transmisia de mesaje poate fi refolosit, mai precis în felul următor:
📄️ Alte funcții de schimb de mesaje
MPISsend și MPIIssend
📄️ Barieră distribuită
În MPI există conceptul de barieră, care este similar ca funcționalitate cu cea din pthreads și din Java threads. Mai precis, bariera din MPI asigură faptul că niciun proces din cadrul comunicatorului nu poate trece mai departe de punctul în care este plasată bariera decât atunci când toate procesele din comunicator ajung în acel punct.
📄️ Structuri în MPI
În MPI putem să schimbăm date de tipul struct. Putem să facem acest lucru creând mai întâi un nou tip de date MPI (MPI_Datatype), folosind MPI_Type_create_struct căruia îi precizăm numărul câmpurilor de fiecare tip și mărimea lor din structură, așezarea câmpurilor în memorie (folosind offsets și MPI_Aint).
📄️ Exerciții
Schelet laborator