《并行计算的编程模型》一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实现方式或者导出性能信息。

相关文章
|
存储 分布式数据库 API
技术好文:VisualC++查看文件被哪个进程占用
技术好文:VisualC++查看文件被哪个进程占用
|
12月前
|
人工智能 自然语言处理 算法
开源更新|语音生成大模型CosyVoice升级2.0版本
开源更新|语音生成大模型CosyVoice升级2.0版本
|
并行计算 C语言 C++
《并行计算的编程模型》一1.2 MPI基础
本节书摘来华章计算机《并行计算的编程模型》一书中的第1章 ,第1.2节, [(美)帕万·巴拉吉(Pavan Balaji)编著;张云泉等译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
2405 0
|
并行计算
《并行计算的编程模型》一1.7 单边通信
本节书摘来华章计算机《并行计算的编程模型》一书中的第1章 ,第1.7节, [(美)帕万·巴拉吉(Pavan Balaji)编著;张云泉等译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
3001 0
|
并行计算
《并行计算的编程模型》一3.5 远程内存访问:put和get
本节书摘来华章计算机《并行计算的编程模型》一书中的第3章 ,第3.5节, [(美)帕万·巴拉吉(Pavan Balaji)编著;张云泉等译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1178 0
|
并行计算 API
《并行计算的编程模型》一3.1 引言
本节书摘来华章计算机《并行计算的编程模型》一书中的第3章 ,第3.1节, [(美)帕万·巴拉吉(Pavan Balaji)编著;张云泉等译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1084 0
|
并行计算 算法
《并行计算的编程模型》一1.6 聚合通信
本节书摘来华章计算机《并行计算的编程模型》一书中的第1章 ,第1节, [(美)帕万·巴拉吉(Pavan Balaji)编著;张云泉等译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
2237 0
|
并行计算
《并行计算的编程模型》一3.5.2 RMA函数使用
本节书摘来华章计算机《并行计算的编程模型》一书中的第3章 ,第3.5.2节, [(美)帕万·巴拉吉(Pavan Balaji)编著;张云泉等译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1342 0
|
存储 并行计算
《并行计算的编程模型》一3.3 OpenSHMEM存储模型
本节书摘来华章计算机《并行计算的编程模型》一书中的第3章 ,第3.3节, [(美)帕万·巴拉吉(Pavan Balaji)编著;张云泉等译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
3270 0
|
并行计算 C++
《并行计算的编程模型》一2.1 研究背景与动机
本节书摘来华章计算机《并行计算的编程模型》一书中的第2章 ,第2.1节, [(美)帕万·巴拉吉(Pavan Balaji)编著;张云泉等译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1246 0