《并行计算的编程模型》一1.9 其他特性

简介: 本节书摘来华章计算机《并行计算的编程模型》一书中的第1章 ,第1.9节, [(美)帕万·巴拉吉(Pavan Balaji)编著;张云泉等译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.9 其他特性

MPI为大规模并行软件开发和应用提供丰富的函数库。MPI提供一种创新的特性,即为每个MPI函数提供其他的执行方式,从而实现在原有MPI函数中执行特殊代码。若采用PMPI接口,MPI函数存在其他的执行方式,即MPI分析接口。例如,PMPI_Bcast函数是MPI_Bcast函数的另一种执行方式。PMPI提供的函数与MPI中的函数参数和功能一致,区别在于用户通过PMPI可定义自己的MPI函数,如图1-13程序示例所示。若采用图1-13中代码编译程序,当调用MPI_Bcast函数时,将执行用户自定义的MPI_Bcast函数,即统计和打印所有进程执行MPI_Bcast函数前的等待时间。

screenshot

MPI支持MPI混合编程和线程级并行程序。用户需要明确指定MPI进程和线程间交互关系。MPI提供四种线程交互安全级别,如下所示:
MPI_THREAD_SINGLE:一个进程只能有一个线程。
MPI_THREAD_FUNNELED:一个进程可以拥有多个线程,但只有进行MPI初始化的线程可以调用MPI函数。
MPI_THREAD_SERIALIZED:一个进程可以拥有多个线程,但同时只有一个线程可以调用MPI函数。
MPI_THREAD_MULTIPLE:一个进程可以拥有多个线程,多个线程可以同时调用MPI函数。
用户必须调用MPI_Init_thread函数指定线程安全级别,MPI实现会返回支持的线程安全级别。用户需要负责管理线程安全级别,MPI提供函数的线程安全级别不一定支持高于MPI_THREAD_SINGLE级别,但MPI中标注线程安全的函数支持MPI_THREAD_MULTIPLE级别。用户在编写线程级并行程序时,不要超过MPI函数的线程安全级别,以免引起潜在的程序运行问题。
MPI提供动态创建进程和独立进程间通信功能,例如通过MPI_Comm_spawn或者MPI_Comm_spawn_multiple函数派生子进程,通过MPI_Comm_connect、MPI_Comm_accept或者MPI_Join函数实现独立进程间通信。
MPI提供邻居聚合通信函数,例如MPI_Neighbor_allgather和MPI_Neighbor_alltoall函数等,在笛卡尔拓扑或者图像虚拟处理拓扑中实现邻居进程间聚合通信。邻居聚合通信主要应用于需要邻近进程间通信的程序,以及上千个进程的大规模稀疏通信方式中。
MPI还提供能够揭示MPI内部特性的功能,可为MPI开发提供帮助,例如导出数据类型和利用MPI_Request获取任意非阻塞式操作状态等功能。MPI-3提供新的特性,如MPI_T接口,可访问MPI函数内部变量,从而控制MPI实现方式或者导出性能信息。

相关文章
|
并行计算
《并行计算的编程模型》一1.11 总结
本节书摘来华章计算机《并行计算的编程模型》一书中的第1章 ,第1.11节, [(美)帕万·巴拉吉(Pavan Balaji)编著;张云泉等译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1022 0
|
并行计算 算法 API
《并行计算的编程模型》一导读
对于正在编程的程序员,编程模型可被看作一台虚拟机,并可通过编程语言和函数库实现。如果某个编程模型成为计算机科学研究中的热点,需要具有以下特性:高效性(易于描述各种抽象算法)、移植性(兼容各种硬件计算平台)、高性能(高效均衡地利用硬件平台的计算能力)、通用性(广泛地描述各种算法)。
3303 0
|
并行计算
《并行计算的编程模型》一1.3 点对点通信
本节书摘来华章计算机《并行计算的编程模型》一书中的第1章 ,第1.3节, [(美)帕万·巴拉吉(Pavan Balaji)编著;张云泉等译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1294 0
|
并行计算 索引
《并行计算的编程模型》一2.3.1 开始和结束
本节书摘来华章计算机《并行计算的编程模型》一书中的第2章 ,第2.3.1节, [(美)帕万·巴拉吉(Pavan Balaji)编著;张云泉等译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1062 0
|
存储 并行计算 API
《并行计算的编程模型》一3.2 设计理念和根据
本节书摘来华章计算机《并行计算的编程模型》一书中的第3章 ,第3.2节, [(美)帕万·巴拉吉(Pavan Balaji)编著;张云泉等译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1028 0
|
并行计算 API
《并行计算的编程模型》一2.5.1 GASNet工具
本节书摘来华章计算机《并行计算的编程模型》一书中的第2章 ,第2.5.1节, [(美)帕万·巴拉吉(Pavan Balaji)编著;张云泉等译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
972 0
|
并行计算
《并行计算的编程模型》一3.5.2 RMA函数使用
本节书摘来华章计算机《并行计算的编程模型》一书中的第3章 ,第3.5.2节, [(美)帕万·巴拉吉(Pavan Balaji)编著;张云泉等译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1161 0
|
并行计算 程序员 API
《并行计算的编程模型》一2.2 GASNet概述
本节书摘来华章计算机《并行计算的编程模型》一书中的第2章 ,第2.2节, [(美)帕万·巴拉吉(Pavan Balaji)编著;张云泉等译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1195 0
|
并行计算 安全
《并行计算的编程模型》一2.2.1 相关术语
本节书摘来华章计算机《并行计算的编程模型》一书中的第2章 ,第2.2.1节, [(美)帕万·巴拉吉(Pavan Balaji)编著;张云泉等译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
969 0