MPI的使用小感

本文介绍了在基于VTK的分布式数据并行显示中如何利用MPI进行数据传输。主要涉及MPI_Gatherv、MPI_Bcast、MPI_Recv和MPI_Ssend等函数,用于数据收集、广播和点对点通信。还提到了同步和就绪通信模式,并强调了MPI初始化和最终化的重要性。
摘要由CSDN通过智能技术生成

我在做基于VTK的分布式数据的并行显示的时候,由于每个节点可能其上的数据并不一定最后显示在这个节点对应的屏幕上面,所以我们需要在整个流水线的最后把画出来的图形再进行重新的分配,这个时候我就要用到MPI。

MPI是多点接口(Multi Point Interface)的简称。我谈谈我用它做了什么,我也没有用到什么复杂的功能,主要就是用它的数据传输的功能,主要用到以下几个函数:

MPI_Gatherv(Localinfo,ssize,MPI_DOUBLE,totalinfo,rcounts,displs,MPI_DOUBLE,root,MPI_COMM_WORLD);

这个函数是一个N->1的函数,主要用来某个节点要收集其他所有其他节点的信息,但是需要注意的是,得到的总数据中,它会包含自己本地的数据,由于我只在头结点用过这个函数,所以自己的数据会在数组的最前面,但是我不知道其他节点使用的情况下,本地数据是不是会按顺序放。

MPI_Bcast(info,size,MPI_DOUBLE,0,MPI_COMM_WORLD);

这个函数呢是用来1->N的,也就是某个节点要把一份数据发到所有的其他节点,供他们使用的时候用,我这里是头结点把其他节点的数据集合后,进行处理,然后发给其他节点使用。

MPI_Recv(&info,1,MPI_INT,send,tag,MPI_COMM_WORLD,&status);

MPI_Ssend(&info,1,MPI_INT,recv,tag,MPI_COMM_WORLD);

这两个函数是一对,1->1使用的,根据tag的值识别为一对,我这里使用的Ssend模式是同步通信模式,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值