《MPI并行程序设计实例教程》PART1.MPI并行环境及编码模型
1.并行编程模式-消息传递:
具有通用功能的消息传递库有PICL、PVM、PARMACS、P4、MPI等;面向特定系统定制的消息传递库有MPL、NX、CMMD等。
消息传递模型的主要缺点是:要求在编程过程中参与显式的数据划分和进程间同步,因此会需在解决数据依赖、预防死锁上话费较大精力。
2.MPI消息传递通信的基本概念
- 缓存区
MPI环境定义了3种缓存区:
应用缓冲区 | 指保存将要发送或接受的数据的地址空间,既消息格式定义的内容部分。 |
系统缓冲区 | MPI环境为通信所准备的存储空间。 |
用户向系统注册的缓冲区 | 指用户使用某些API(MPI_Bsend)时,在程序中显式申请的存储空间,然后注册到MPI环境中供通信使用。 |
- 通信子(communicator)
通信子是MPI环境管理进程及通信的基本设施。(eg:MPI_COMM_WORLD)。对某个进程的操作必须放在通信子内方可有效。
- 通信协议:
MPI环境采用以下通信协议:
立即通信协议(Eager) | 总是假定目标进程具备保存消息数据的能力。注:该方式减少了同步延迟,简化编程,但需要相当数量的缓冲区。 |
集中通信协议(Rendezvous) | 在目标准备好后,才可执行发送动作。注:该方式可确保可靠和安全,并提供消除多次数据的可能,但增加了编程复杂性(需结合wait/test等机制),同时也带来了同步延迟(等待进程许可需要时间)。 |
断消息协议(Short) | 消息数据与信封封装在一起发送。 |
From:《MPI并行程序设计实例教程》
张武生 等著 清华大学出版社
More:http://blog.donews.com/me1105/archive/2011/02/10/115.aspx