- 博客(7)
- 收藏
- 关注
原创 Sendrecv Usage
有时候,一个进程需要给另一个进程发送数据,同时接受第三个进程的数据。如果是Send和Recv来实现,需要开启两次通讯域。MPI提供了Sendrecv来以开启一次通讯域的成本来达到上述目的。该函数的具体代码如下: MPI::COMM_WORLD.Sendrecv( &dSecondData, sizeof(dSecondData)/sizeof(double),
2009-08-07 17:46:00
998
3
原创 Send / Recv Usage(2) - Refactoring
觉得每次生成新的MPI类型是一件很麻烦的事情,于是重构了一下代码使得该过程更方便一点。#include "Class_mpi.h"#include class CTestSendRecv{public: CTestSendRecv(){Init();} void Init() { m_d =5.6; m_f =8.2f; m_n =11;
2009-08-04 23:41:00
677
原创 Send / Recv Usage(2)
上一次尝试了使用Send/Recv传递简单的build-in类型的数据。 有时候人们需要一次性传递多种不同类型不同数量的build-in类型数据,通常将数据组织成struct或class来实现。对于这种需求MPI提供了多种支持方式,如MPI_Type_vector、MPI_Type_indexed和MPI_Type_struct等。MPI_Type_struct可能是最通用的自定义类型生成
2009-08-02 21:28:00
1500
原创 Send / Recv Usage(1)
Send和Recv是两个点对点的消息通讯函数,一个用来发送数据,一个用来接收数据。MPI对build-in类型数据之间的交换提供了良好的支持。 下面的代码将使用第2个进程发送数据,第1个进程接收数据,数据是一个double型的数组:int main(int argc, char* argv[]){ Cmpi mpi; const int nMsgTag =999; /
2009-07-28 17:58:00
821
原创 The difference between iostream and stdio in MPI
在获取机器信息的时候,发现了iostream和stdio在MPI中的输出不一样。 下面分别使用这两种IO对机器名称、当前进程号和总进程数,运行环境是具有三核的PC,使用两个核来运行MPI程序。按照预想的结果,应该是随机输出每一个进程的机器名称与当前进程号和总进程数的输出信息,每一个进程的输出信息应该是完整的顺序输出机器名称、当前进程号和总进程数。 1 首先是使用iostrea
2009-07-27 00:05:00
656
原创 MPI Simpler
每次都要显示调用 MPI::Init(argc,argv) 和 MPI::Finalize(),就像是语法括号一样,倒也不麻烦。只不过这两者通常相隔较远,视觉上看得有些累。我是个懒人,看得不顺眼,用得不顺手就想改。 首先,决定写个类把它封装起来,将这两者分别放置在Constructor和Destructor中,这样调用时只需要生成一个对象就能实现自动调用Init和Fina
2009-07-24 10:45:00
817
原创 Parallel Era - MPI Configuration
并行时代已经到来,我猛然觉得自己有点落伍了,自身对此方面的知识可以用贫瘠来形容。亡羊补牢,为时未晚。三日前,开始着手调查相关资料,先从集群多进程入手,选择了MPI(Message Passing Interface)作为实践对象。就像STL一样,作为一个标准,MPI有多家厂商提供了实现,其中最常用的是MPICH和Open MPI。MPI为C/C++/Fortran这三种语言的提供了接口,需要进行科
2009-07-20 23:50:00
1024
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人