Condividi tramite


funzione MPI_Iscatter

Dispersione dei dati da un membro in tutti i membri di un gruppo in modo non bloccato. Questa funzione esegue l'inverso dell'operazione eseguita dalla funzione MPI_Igather.

Sintassi

int MPIAPI MPI_Iscatter(
  _In_opt_  const void         *sendbuf,
  _In_             int         sendcount,
  _In_            MPI_Datatype sendtype,
  _Out_opt_       void         *recvbuf,
  _In_            int          recvcount,
  _In_            MPI_Datatype recvtype,
  _In_            int          root,
  _In_            MPI_Comm     comm,
  _Out_           MPI_Request  *request
);

Parametri

  • sendbuf [in, facoltativo]
    Puntatore a un buffer che contiene i dati da inviare al processo radice.

    Questo parametro viene ignorato per tutti i processi non radice.

    Se il parametro comm fa riferimento a un intracommunicator, è possibile specificare un'opzione sul posto specificando MPI_IN_PLACE nel processo radice. I parametri recvcount e recvtype vengono ignorati. Il vettore a dispersione è ancora considerato contenere n segmenti, dove n è la dimensione del gruppo; il segmento che corrisponde al processo radice non viene spostato.

  • sendcount [in]
    Numero di elementi nel buffer di invio. Se sendcount è zero, la parte dei dati del messaggio è vuota.

    Questo parametro viene ignorato per tutti i processi non radice.

  • sendtype [in]
    Tipo di dati di ogni elemento nel buffer.

    Questo parametro viene ignorato per tutti i processi non radice.

  • recvbuf [out, facoltativo]
    Handle in un buffer contenente i dati ricevuti in ogni processo. Il numero e il tipo di dati degli elementi nel buffer vengono specificati nei parametri recvcount e recvtype .

  • recvcount [in]
    Numero di elementi nel buffer di ricezione. Se il conteggio è zero, la parte dei dati del messaggio è vuota.

  • recvtype [in]
    Tipo di dati MPI degli elementi nel buffer di ricezione.

  • radice [in]
    Classificazione del processo di ricezione all'interno del comunicatore specificato.

  • comm [in]
    Handle del comunicatore MPI_Comm.

  • richiesta [out]
    Handle MPI_Request che rappresenta l'operazione di comunicazione.

Valore restituito

Restituisce MPI_SUCCESS sull'esito positivo. In caso contrario, il valore restituito è un codice di errore.

In Fortran il valore restituito viene archiviato nel parametro IERROR .

Fortran

    MPI_ISCATTER(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNT, RECVTYPE, ROOT, COMM, REQUEST, IERROR)
        <type> SENDBUF(*), RECVBUF(*)
        INTEGER SENDCOUNT, SENDTYPE, RECVCOUNT, RECVTYPE, ROOT, COMM, REQUEST, IERROR

Commenti

Una chiamata senza blocco avvia un'operazione di riduzione collettiva che deve essere completata in una chiamata di completamento separata. Dopo l'avvio, l'operazione può procedere indipendentemente da qualsiasi calcolo o da altre comunicazioni nei processi partecipanti. In questo modo, le operazioni di riduzione senza blocco possono attenuare possibili effetti di sincronizzazione delle operazioni di riduzione eseguendole in "background".

Tutte le chiamate di completamento (ad esempio , MPI_Wait) sono supportate per operazioni di riduzione non bloccabili.

Requisiti

Prodotto

Microsoft MPI v7

Intestazione

Mpi.h; Mpif.h

Libreria

Msmpi.lib

DLL

Msmpi.dll

Vedi anche

Funzioni collettive MPI

MPI_Datatype

MPI_Scatter

MPI_Test

MPI_Testall

MPI_Testany

MPI_Testsome

MPI_Wait

MPI_Waitall

MPI_Waitany

MPI_Waitsome