função MPI_Scatter
Dispersa dados de um membro em todos os membros de um grupo. A função MPI_Scatter executa o inverso da operação executada pela função MPI_Gather .
Sintaxe
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]
O identificador para uma memória intermédia que contém os dados a serem enviados pelo processo de raiz.O parâmetro sendbuf é ignorado para todos os processos não raiz.
Se o parâmetro de comunicação fizer referência a um intracomunicador, pode especificar uma opção no local ao especificar MPI_IN_PLACE no processo de raiz. Os parâmetros recvcount e recvtype são ignorados. O vetor disperso ainda é considerado como contendo n segmentos, em que n é o tamanho do grupo; o segmento que corresponde ao processo de raiz não é movido.
sendcount
O número de elementos na memória intermédia de envio. Se a conta de envio for zero, a parte de dados da mensagem está vazia.O parâmetro sendcount é ignorado para todos os processos não raiz.
sendtype
O tipo de dados de cada elemento na memória intermédia.O parâmetro sendcount é ignorado para todos os processos não raiz.
recvbuf [out]
O identificador para uma memória intermédia que contém os dados que são recebidos em cada processo. O número e o tipo de dados dos elementos na memória intermédia são especificados nos parâmetros recvcount e recvtype .conta de recvcount
O número de elementos na memória intermédia de receção. Se a contagem for zero, a parte de dados da mensagem está vazia.recvtype
O tipo de dados dos elementos na memória intermédia de receção.raiz
A classificação do processo de envio no comunicador especificado.vírgula
O identificador do MPI_Comm communicator.
Valor devolvido
Devolve MPI_SUCCESS com êxito. Caso contrário, o valor devolvido é um código de erro.
Em Fortran, o valor devolvido é armazenado no 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
Observações
O efeito da função MPI_Scatter é como se o processo de raiz enviasse uma mensagem com a função MPI_Send . Esta mensagem é dividida em n segmentos iguais, um para cada membro do grupo. O ith segmento é enviado para oith processo no grupo.
Se o comm for um intracomunicador, o resultado é como se a raiz executasse n operações MPI_Send(sendbuf + i*sendcount*extent(sendtype), sendcount, sendtype, I, …)
de envio; e cada processo executasse uma receção, MPI_Recv(recvbuf, recvcount, recvtype, i,…)
.
A assinatura de tipo especificada pelos parâmetros sendcount e sendtype para o processo de raiz tem de ser igual à assinatura de tipo especificada pela conta de recvcount e os parâmetros de recvtype para todos os processos. Por conseguinte, a quantidade de dados enviados tem de ser igual à quantidade de dados recebidos entre qualquer par de processos. Ainda são permitidos mapas de tipos distintos entre o remetente e o recetor.
Todos os parâmetros da função são significativos no processo de raiz, apenas os parâmetros recvbuf, recvcount, recvtype, root e comm são significativos nos outros processos. Os parâmetros de raiz e de comm têm de ser idênticos em todos os processos.
A especificação de contagens e tipos não deve fazer com que qualquer localização na raiz seja lida mais do que uma vez.
Se o parâmetro de comunicação fizer referência a um intercomunicador, a chamada envolve todos os processos no intercomunicador, mas com um grupo, grupo A, que define o processo de raiz. Todos os processos no outro grupo, grupo B, definem o mesmo valor no parâmetro raiz , ou seja, a classificação do processo de raiz no grupo A. O processo de raiz define o valor MPI_ROOT no parâmetro raiz . Todos os outros processos no grupo A definem o valor MPI_PROC_NULL no parâmetro raiz . Os dados são transmitidos do processo de raiz para todos os processos no grupo B. Os parâmetros de memória intermédia dos processos no grupo B têm de ser consistentes com o parâmetro de memória intermédia do processo de raiz.
Requisitos
Produto |
HPC Pack 2012 MS-MPI Redistributable Package, HPC Pack 2008 R2 MS-MPI Redistributable Package, HPC Pack 2008 MS-MPI Redistributable Package ou HPC Pack 2008 Client Utilities |
Cabeçalho |
Mpi.h; Mpif.h |
Biblioteca |
Msmpi.lib |
DLL |
Msmpi.dll |