煤矿安全监控系统中不同归约操作的比较与发展趋势

13.14 不同类型归约操作的简单对比 本节对归约操作组和归约并散发操作进行了简单的比较,希望通过对比能够加深对各种归约操作类型的理解,并正确使用这些操作。归约操作的效果是接收缓冲区中数据的改变,而这种改变直接与各个进程发送缓冲区中的数据密切相关。下面通过说明不同类型归约前后各个进程发送缓冲区与接收缓冲区中的数据关系,来展示归约操作的最终效果。发送缓冲区数据单元归约到进程0的情况如下: 进程2: A2 B2 C2 进程1: A1 B1 C1 进程0: A0 B0 C0 归约后: 进程0: A0+B0+C0 A1+B1+C1 A2+B2+C2 图64展示了归约前后发送与接收缓冲区的对比。简单的归约操作只有ROOT进程的接收缓冲区在归约后有意义,其它进程的接收缓冲区内容无意义。ROOT进程接收缓冲区的数据需要所有进程发送缓冲区中的数据。 MPI_SCAN函数原型如下: MPI_SCAN(sendbuf, recvbuf, count, datatype, op, comm) 参数解释如下: - sendbuf: 发送消息缓冲区的起始地址 - recvbuf: 接收消息缓冲区的起始地址 - count: 输入缓冲区中元素的个数 - datatype: 输入缓冲区中元素的类型 - op: 操作 - 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) SENDBUF(*), RECVBUF(*) INTEGER COUNT, DATATYPE, OP, COMM, IERROR
pdf 文件大小:926.2KB