MPI_SCAN(sendbuf, recvbuf, count, datatype, op, comm)
INsendbuf发送消息缓冲区的起始地址(可选数据类型)
OUT recvbuf接收消息缓冲区的起始地址(可选数据类型)
INcount输入缓冲区中元素的个数(整型)
INdatatype 输入缓冲区中元素的类型(句柄)
INop 操作(句柄)
INcomm 通信域(句柄)
int MPI_Scan(void* sendbuf, void* recvbuf, int count, MPI_Datatype datatype, MPI_Op
op, MPI_Comm comm)
MPI_SCAN(SENDBUF, RECVBUF, COUNT, DATATYPE, OP, COMM, IERROR)
<type> SENDBUF(*), RECVBUF(*)
INTEGER COUNT, DATATYPE, OP, COMM, IERROR

可以将扫描看作是一种特殊的归约,即每一个进程都对排在它前面的进程进行归约操作。MPI_SCAN调用的结果是,对于每一个进程i,它对进程0,...,i的发送缓冲区的数据进行指定的归约操作,结果存入进程i的接收缓冲区。
也可以换一个角度,将扫描操作看作是每一个进程i发送缓冲区中的数据与它前面的进程i-1接收缓冲区中的数据进行指定的归约操作后,将结果存入进程i的接收缓冲区;而进程i接收缓冲区中的数据用来和进程i+1发送缓冲区中的数据进行归约。进程0接收缓冲区中的数据就是发送缓冲区的数据。