MPI_Allgather función
Recopila datos de todos los miembros de un grupo y envía los datos a todos los miembros del grupo. La función MPI_Allgather es similar a la función MPI_Gather , salvo que envía los datos a todos los procesos en lugar de solo a la raíz. Las reglas de uso de MPI_Allgather corresponden a las reglas de MPI_Gather.
Sintaxis
int MPIAPI MPI_Allgather(
_In_ void *sendbuf,
_In_ int sendcount,
_In_ MPI_Datatype sendtype,
_Out_ void *recvbuf,
int recvcount,
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. Se omiten los parámetros sendcount y sendtype . 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 [in]
Número de elementos del búfer especificado en el parámetro sendbuf . Si sendcount es cero, la parte de datos del mensaje está vacía.sendtype [in]
El tipo de datos MPI de los elementos del búfer de envío.recvbuf [out]
Puntero a un búfer que contiene los datos recibidos 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 .recvcount
Número de elementos del búfer de recepción. Si el recuento es cero, la parte de datos del mensaje está vacía.recvtype
Tipo de datos MPI de los elementos del búfer de recepción.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_ALLGATHER(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNT, RECVTYPE, COMM, IERROR)
<type> SENDBUF(*), RECVBUF(*)
INTEGER SENDCOUNT, SENDTYPE, RECVCOUNT, RECVTYPE, COMM, IERROR
Comentarios
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_ALLGATHER(...)
es como si todos los procesos ejecutaron n llamadas a MPI_Gather(sendbuf,sendcount,sendtype,recvbuf,recvcount,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, 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, grupo B. Por el contrario, la concatenación de los datos 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.
El número de elementos que envían los procesos del grupo A no tiene que ser igual al número de elementos enviados por los procesos del grupo B. En concreto, solo puede mover datos en una dirección especificando sendcount == 0 para la comunicación en la dirección inversa.
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 |