The difference between iostream and stdio in MPI

来源:互联网 发布:淘宝如何分类宝贝 编辑:程序博客网 时间:2024/05/29 14:34

 

在获取机器信息的时候,发现了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

原创粉丝点击