【文件属性】:
文件名称:数据收集-grid layout in css
文件大小:1018KB
文件格式:PDF
更新时间:2024-07-05 18:55:30
MPI
§5.3 数据收集
数据收集指各个进程 (包括根进程) 将自己的一块数据发送给根进程, 根进程将这些数据合并成
一个大的数据块.
§5.3.1 收集相同长度数据块 MPI Gather
C
int MPI_Gather(void *sendbuf, int sendcount,
MPI_Datatype sendtype, void *recvbuf,
int recvcount, MPI_Datatype recvtype, int root,
MPI_Comm comm)
Fortran 77
MPI_GATHER(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF,
+ RECVCOUNT, RECVTYPE, ROOT, COMM, IERR)
SENDBUF(*), RECVBUF(*)
INTEGER SENDCOUNT, SENDTYPE, RECVCOUNT, RECVTYPE, ROOT,
+ COMM, IERR
所有进程 (包括根进程) 将 sendbuf 中的数据发送给根进程, 根进程将这些数据按进程号的顺序
依次接收到 recvbuf 中. 发送和接收的数据类型与长度必须相配, 即发送和接收使用的数据类型必须
具有相同的类型序列. 参数 recvbuf, recvcount 和 recvtype 仅对根进程有意义.
假设 NPROCS 为通信器中的进程数, MYRANK 为进程号, 则 MPI_Gather 相当于:
CALL MPI_SEND(SENDBUF, SENDCOUNT, SENDTYPE, ROOT, ...)
IF ( MYRANK .EQ. ROOT ) THEN
DO I=0, NPROCS-1
CALL MPI_RECV( RECVBUF + I*RECVCOUNT*extent(RECVTYPE),
+ RECVCOUNT, RECVTYPE, I, ...)
ENDDO
ENDIF
43