fonction MPI_Igatherv
Collecte les données variables de tous les membres d’un groupe vers un membre de manière non bloquante.
Syntaxe
int MPIAPI MPI_Igatherv(
_In_opt_ const void *sendbuf,
_In_ int sendcount,
_In_ MPI_Datatype sendtype,
_Out_opt_ void *recvbuf,
_In_opt_ const int recvcounts[],
_In_opt_ const int displs[],
_In_ MPI_Datatype recvtype,
_In_ int root,
_In_ MPI_Comm comm,
_Out_ MPI_Request *request
);
Paramètres
sendbuf [in, facultatif]
Handle vers une mémoire tampon qui contient les données à envoyer au processus racine.Si le paramètre comm fait référence à un intracommunicateur, vous pouvez spécifier une option sur place en spécifiant MPI_IN_PLACE dans tous les processus. Les paramètres sendcount et sendtype sont ignorés. Chaque processus entre des données dans l’élément de mémoire tampon de réception correspondant. Le nièmeprocessus envoie des données au nièmeélément de la mémoire tampon de réception. Les données envoyées par le processus racine sont supposées être à l’emplacement correct dans la mémoire tampon de réception.
sendcount [in]
Nombre d’éléments dans la mémoire tampon d’envoi. Si sendcount est égal à zéro, la partie données du message est vide.sendtype [in]
Type de données de chaque élément dans la mémoire tampon.recvbuf [out, facultatif]
Handle vers une mémoire tampon sur le processus racine qui contient les données reçues de chaque processus, y compris les données envoyées par le processus racine. Ce paramètre n’est significatif qu’au niveau du processus racine. Le paramètre recvbuf est ignoré pour tous les processus non racines.recvcounts[] [in, facultatif]
Nombre d’éléments reçus de chaque processus. Chaque élément du tableau correspond au rang du processus d’envoi. Si le nombre est égal à zéro, la partie données du message est vide. Ce paramètre n’est significatif qu’au niveau du processus racine.displs[] [in, facultatif]
Emplacement, par rapport au paramètre recvbuf , des données de chaque processus de communication. Les données reçues du processus j sont placées dans la mémoire tampon de réception des éléments displs[j] de décalage du processus racine à partir du pointeur sendbuf .Dans les tableaux de paramètres recvbuf, recvcounts et displs , le nièmeélément de chaque tableau fait référence aux données reçues du nièmeprocessus communicateur.
Ce paramètre n’est significatif qu’au niveau du processus racine.
recvtype [in]
Type de données de chaque élément dans la mémoire tampon. Ce paramètre n’est significatif qu’au niveau du processus racine.root [in]
Classement du processus de réception dans le communicateur spécifié.comm [in]
Handle de communicateur MPI_Comm.request [out]
Handle MPI_Request représentant l’opération de communication.
Valeur retournée
Retourne MPI_SUCCESS en cas de réussite. Sinon, la valeur de retour est un code d’erreur.
Dans Fortran, la valeur de retour est stockée dans le paramètre IERROR .
Fortran
MPI_IGATHERV(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNTS, DISPLS, RECVTYPE,
ROOT, COMM, REQUEST, IERROR)
<type> SENDBUF(*), RECVBUF(*)
INTEGER SENDCOUNT, SENDTYPE, RECVCOUNTS(*), DISPLS(*), RECVTYPE, ROOT, COMM, REQUEST, IERROR
Remarques
Un appel non bloquant lance une opération de réduction collective qui doit être effectuée dans un appel d’achèvement distinct. Une fois lancée, l’opération peut progresser indépendamment de tout calcul ou autre communication au niveau des processus participants. De cette façon, les opérations de réduction non bloquantes peuvent atténuer les effets de synchronisation possibles des opérations de réduction en les exécutant en « arrière-plan ».
Tous les appels d’achèvement (par exemple, MPI_Wait) sont pris en charge pour les opérations de réduction non bloquantes.
Configuration requise
Produit |
Microsoft MPI v7 |
En-tête |
Mpi.h ; Mpif.h |
Bibliothèque |
Msmpi.lib |
DLL |
Msmpi.dll |