MPI_Allgatherv función
Recopila una cantidad variable de datos de cada miembro de un grupo y envía los datos a todos los miembros del grupo. La función MPI_Allgatherv es similar al MPI_Gatherv, salvo que todos los procesos reciben el resultado, en lugar de simplemente la raíz. Cada proceso recibe el bloque de datos que se envía desde el proceso jy se coloca en el bloque jdel búfer recvbuf. Estos bloques no tienen que tener el mismo tamaño.
Sintaxis
int MPIAPI MPI_Allgatherv(
_In_ void *sendbuf,
int sendcount,
MPI_Datatype sendtype,
_Out_ void *recvbuf,
_In_ int *recvcounts,
_In_ int *displs,
MPI_Datatype recvtype,
MPI_Comm comm
);
Parámetros
sendbuf [in]
Puntero a los datos que se van a enviar a todos los procesos del grupo. El número y el tipo de datos de los elementos del búfer se especifican en los parámetros sendcount y sendtype . Cada elemento del búfer corresponde a un proceso del grupo.Si el parámetro comm hace referencia a un intracomunicador, puede especificar una opción local especificando MPI_IN_PLACE en todos los procesos. Los parámetros sendcount y sendtype se omiten. Cada proceso escribe datos en el elemento de búfer de recepción correspondiente. El nºproceso envía datos al nºelemento del búfer de recepción.
sendcount
Número de elementos de datos que este proceso envía en el búfer especificado en el parámetro sendbuf . Si un elemento de sendcount es cero, la parte de datos del mensaje de ese proceso está vacía.sendtype
Tipo de datos MPI de los elementos del búfer de envío.recvbuf [out]
Puntero a un búfer que contiene los datos que se reciben de cada proceso. El número y el tipo de datos de los elementos del búfer se especifican en los parámetros recvcount y recvtype .recvcounts [in]
Número de elementos de datos de cada proceso de comunicador en el búfer de recepción.displs [in]
Ubicación, relativa al parámetro recvbuf , de los datos de cada proceso de comunicador.En las matrices de parámetrosrecvbuf, recvcounts y displs, el nºelemento de cada matriz hace referencia a los datos recibidos del proceso de comunicador n.
recvtype
El tipo de datos MPI de cada elemento del búfer.comm
Identificador del comunicador MPI_Comm.
Valor devuelto
Devuelve MPI_SUCCESS si se realiza correctamente. De lo contrario, el valor devuelto es un código de error.
En Fortran, el valor devuelto se almacena en el parámetro IERROR .
Fortran
MPI_ALLGATHERV(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNTS,DISPLS, RECVTYPE,COMM, IERROR)
<type> SENDBUF(*), R.ECVBUF(*)
INTEGER SENDCOUNT, SENDTYPE, RECVCOUNTS(*), DISPLS(*), RECVTYPE, COMM, IERROR
Comentarios
Las reglas de uso de MPI_Allgatherv corresponden a las reglas de MPI_Gatherv.
La firma de tipo asociada al parámetro sendtype en un proceso debe ser igual a la firma de tipo asociada al parámetro recvtype en cualquier otro proceso.
Si el parámetro comm hace referencia a un intracomunicador, el resultado de una llamada a MPI_Allgatherv(...)
es como si todos los procesos ejecutaron llamadas a MPI_GatherV(sendbuf,sendcount,sendtype,recvbuf,recvcounts,displs,recvtype,root,comm)
, para root = 0 , ..., n-1
.
Si el parámetro comm hace referencia a un intercomunicador, cada proceso de un grupo, por ejemplo, el grupo A, contribuye al número de elementos de datos especificados en el parámetro sendcount . Estos datos se concatenan y el resultado se almacena en cada proceso del otro grupo, el grupo B. Por el contrario, la concatenación de los datos de los procesos del grupo B se almacena en cada proceso del grupo A. Los parámetros de búfer de envío del grupo A deben ser coherentes con los parámetros de búfer de recepción del grupo B y viceversa.
Requisitos
Producto |
Paquete redistribuible DE HPC Pack 2012 MS-MPI, HPC Pack 2008 R2 MS-MPI Redistributable Package, HPC Pack 2008 MS-MPI Redistributable Package o HPC Pack 2008 Client Utilities |
Encabezado |
Mpi.h; Mpif.h |
Biblioteca |
Msmpi.lib |
Archivo DLL |
Msmpi.dll |