Compartir a través de


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 proceso envía datos al 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

Consulte también

Funciones colectivas de MPI

MPI_Datatype

MPI_Allgather