Compartir a través de


función MPI_Scatter

Dispersa los datos de un miembro en todos los miembros de un grupo. La función MPI_Scatter realiza el inverso de la operación que realiza la función MPI_Gather .

Sintaxis

int MPIAPI MPI_Scatter(
  _In_  void         *sendbuf,
        int          sendcount,
        MPI_Datatype sendtype,
  _Out_ void         *recvbuf,
        int          recvcount,
        MPI_Datatype recvtype,
        int          root,
        MPI_Comm     comm
);

Parámetros

  • sendbuf [in]
    Identificador de un búfer que contiene los datos que va a enviar el proceso raíz.

    El parámetro sendbuf se omite para todos los procesos no raíz.

    Si el parámetro comm hace referencia a un intracomunicador, puede especificar una opción local especificando MPI_IN_PLACE en el proceso raíz. Se omiten los parámetros recvcount y recvtype . El vector disperso todavía se considera que contiene n segmentos, donde n es el tamaño del grupo; el segmento que corresponde al proceso raíz no se mueve.

  • sendcount
    Número de elementos del búfer de envío. Si sendcount es cero, la parte de datos del mensaje está vacía.

    El parámetro sendcount se omite para todos los procesos no raíz.

  • sendtype
    Tipo de datos de cada elemento del búfer.

    El parámetro sendcount se omite para todos los procesos no raíz.

  • recvbuf [out]
    Identificador de un búfer que contiene los datos recibidos en 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 de los elementos del búfer de recepción.

  • root
    Rango del proceso de envío dentro del comunicador especificado.

  • 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_SCATTER(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNT, RECVTYPE, ROOT, COMM, IERROR)
        <type> SENDBUF(*), RECVBUF(*)
        INTEGER SENDCOUNT, SENDTYPE, RECVCOUNT, RECVTYPE, ROOT, COMM, IERROR

Comentarios

El efecto de la función MPI_Scatter es como si el proceso raíz envía un mensaje mediante la función MPI_Send . Este mensaje se divide en n segmentos iguales, uno para cada miembro del grupo. El segmento ise envía al proceso iésima del grupo.

Si comm es un intracomunicador, el resultado es como si la raíz ejecutó n operaciones MPI_Send(sendbuf + i*sendcount*extent(sendtype), sendcount, sendtype, I, …)de envío; y cada proceso ejecutó una recepción, MPI_Recv(recvbuf, recvcount, recvtype, i,…).

La firma de tipo especificada por los parámetros sendcount y sendtype para el proceso raíz debe ser igual a la firma de tipo especificada por los parámetros recvcount y recvtype para todos los procesos. Por lo tanto, la cantidad de datos que se envían debe ser igual a la cantidad de datos que se reciben entre cualquier par de procesos. Todavía se permiten asignaciones de tipos distintas entre remitente y receptor.

Todos los parámetros de función son significativos en el proceso raíz, solo los parámetros recvbuf, recvcount, recvtype, root y comm son significativos en los demás procesos. Los parámetros raíz y comm deben ser idénticos en todos los procesos.

La especificación de recuentos y tipos no debe hacer que ninguna ubicación de la raíz se lea más de una vez.

Si el parámetro comm hace referencia a un intercomunicador, la llamada implica todos los procesos del intercomunicador, pero con un grupo, grupo A, que define el proceso raíz. Todos los procesos del otro grupo, grupo B, establecen el mismo valor en el parámetro raíz , es decir, la clasificación del proceso raíz del grupo A. El proceso raíz establece el valor MPI_ROOT en el parámetro raíz . Todos los demás procesos del grupo A establecen el valor MPI_PROC_NULL en el parámetro raíz . Los datos se transmiten desde el proceso raíz a todos los procesos del grupo B. Los parámetros de búfer de los procesos del grupo B deben ser coherentes con el parámetro de búfer del proceso raíz.

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_Gather

MPI_Gatherv

MPI_Scatterv