mi sono leggermente confuso riguardo al concetto di sincrono - asincrono nel contesto di bloccare & operazioni non bloccanti (in OpenMPI) da qui:immidiate vs comunicazione sincrona in openmpi
link 1 : MPI_Isend è non necessariamente asincrono (in modo che possa sincrona?)
link 2 : The MPI_Isend() e MPI_Irecv() sono la comunicazione pri ASYNCHRONOUS miti di MPI.
ho già superato il precedente di sincronizzazione - asincrono - blocco - domande non bloccanti su StackOverflow (asynchronous vs non-blocking), ma erano di nessun aiuto per me. Per quanto ne so:
- immidiate (MPI_ISEND): metodo restituisce & esegue riga successiva -> non bloccante
- Standard/non immediata (MPI_SEND): per i grandi messaggi che blocca fino al trasferimento completa
- A sincroni blocchi operazione (http://www.cs.unc.edu/~dewan/242/s07/notes/ipc/node9.html)
- Un asincroni funzionamento è non bloccante (http://www.cs.unc.edu/~dewan/242/s07/notes/ipc/node9.html)
così come & perché MPI_ISEND potrebbe bloccare (link 1), così come non bloccante (link 2)? cioè, che cosa si intende per asincrono & sincrono MPI_ISEND qui? nasce
confusione simili riguardo MPI_SSEND & MPI_ISSEND, poiché la S in MPI_ S SEND significa sincrono (o blocco) e: -
- MPI_SSEND: blocco di trasmissione sincrona fino alla ricezione dei dati processo remoto & ack è ricevuto dal mittente,
- MPI_ISSEND: significa sincro sincrono se ND
anche la mmediate I è non-blocking, Quindi, come si può MPI_ IS SEND essere S ynchronous & ritorno ho ubito?
Immagino che sia necessaria maggiore chiarezza in sincrono & nel contesto del blocco & non bloccante comunicazione OpenMPI. Un esempio pratico o analogia a questo riguardo sarà molto utile.
Stavo cercando di capire la stessa cosa, e ho finito per scrivere esempi per ciascuna modalità di invio, qui: https://gist.github.com/deborasetton/9f8597d85a4d314ace17. A volte è utile guardare il codice reale per vedere le differenze. – dsetton