MPI的使用小感
来源:互联网 发布:网络电视破解版 编辑:程序博客网 时间:2024/06/05 03:33
我在做基于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模式是同步通信模式,所谓同步通信模式,就是不论接收端是否启动了接受动作,发送端都可在任何时机启动发送操作。但发送端需等待接收端的接收动作发起并开始接收数据之后才可能结束。即发送动作的结束不仅意味着发送缓冲区已经可以用去其他用途,而且还表示接收端也可执行了一定程度的接收工作。对阻塞的同步通信模式而言,它实际上相当于提供了一个同步通信的约束,即双方进程到达一个确定的同步点之后,通信才可结束。
在函数上与普通的点对点不同在于要声明一个MPI_Status status;
还有一个模式就绪通信模式,这个模式需要接收端接收操作先启动,注意如果没有启动,就直接会报错。我开始就使用了这个模式,导致总是报错。
还有在使用MPI的时候,我们都要写一个状态文件:
int localProcess,nProcess;
MPI_Init(&argc,&argv);
MPI_Comm_rank(MPI_COMM_WORLD,&localProcess);
MPI_Comm_size(MPI_COMM_WORLD,&nProcess);
非常明显,它其实就是得到一共有多少节点,当前节点是第几个节点,
并且初始化
最后我们还需要:
MPI_Finalize();
一个程序中如果MPI_Finalize();,之后就不能再从新MPI_Init(&argc,&argv);了。所以在使用的时候一般放在main函数中,在最后结束。
- MPI的使用小感
- windows MS-MPI 的使用
- Visual Studio 2008 使用MPI的设置
- Open MPI 的配置和使用
- windows上MS-MPI的使用
- 使用MPI传递类的对象
- MPI 使用小结
- 使用MPI实现直方图
- ubuntu环境MPI使用
- 使用MPI 计算积分
- 使用 Boost 的 IPC 和 MPI 库进行并发编程
- 使用 Boost 的 IPC 和 MPI 库进行并发编程
- 使用 Boost 的 IPC 和 MPI 库进行并发编程
- 使用 Boost 的 IPC 和 MPI 库进行并发编程
- 使用 Boost 的 IPC 和 MPI 库进行并发编程
- 使用 Boost 的 IPC 和 MPI 库进行并发编程
- 使用 Boost 的 IPC 和 MPI 库进行并发编程
- 使用 Boost 的 IPC 和 MPI 库进行并发编程
- Java获取客户端的真实IP地址
- 用excel设置模板,然后根据模板导出数据形成报表
- Hibernate 单边多对多关系 @ManyToMany
- oracle中 decode()函数简介
- 怎样用服务器搭载应用
- MPI的使用小感
- android 获取SD卡状态信息
- linux中shell变量$#,$@,$0,$1,$2的含义解释
- SQLite基本语句
- PAT 数据结构 09-散列2. QQ帐户的申请与登陆(25)
- 各种排序
- 微信开放平台,申请移动应用
- 递归程序设计
- 【日常学习】【读入优化】codevs2555 a+b=?题解