The difference between iostream and stdio in MPI

 

在获取机器信息的时候,发现了iostream和stdio在MPI中的输出不一样。

 

下面分别使用这两种IO对机器名称、当前进程号和总进程数,运行环境是具有三核的PC,使用两个核来运行MPI程序。按照预想的结果,应该是随机输出每一个进程的机器名称与当前进程号和总进程数的输出信息,每一个进程的输出信息应该是完整的顺序输出机器名称、当前进程号和总进程数。

 

1 首先是使用iostream获取机器信息的函数代码

 

输出结果如下:

Machine Name:   Justin
Machine Name:   Justin
Current Process ID:  0
Total Number of Processes: 2
Current Process ID:  1
Total Number of Processes: 2

 

有时候输出结果是:

Machine Name:                   Justin
Machine Name:                   Justin
Current Process ID:             1
Current Process ID:             0
Total Number of Processes:      2
Total Number of Processes:      2

 

可以看出,使用iostream的代码输出的结果与我们的预想不同,两个进程的stream似乎相互纠缠在一起,有较大的随机性。

 

2 接下来,测试一下使用iostream获取机器信息的函数代码

 

输出结果如下: 

Machine Name:                   Justin
Current Process ID:             0
Total Number of Processes:      2
Machine Name:                   Justin
Current Process ID:             1
Total Number of Processes:      2

 

再测试一下多次运行的结果,都比较稳定,只是当前进程号出现的顺序不一样。

可以看出stdio输出结果相对稳定。

 

出现此想象的原因,还期待MPI高手来解惑。

 

注:

GetMachineName(),GetTotalProcessCount(),GetCurrentProcessId()是对MPI相应函数的简单包装,具体实现请参见http://blog.csdn.net/Rabbit_2001/archive/2009/07/24/4376075.aspx

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值