Boost C++ 库

...世界上最受推崇和设计最精良的 C++ 库项目之一。 Herb SutterAndrei Alexandrescu,《C++ 编码标准

PrevUpHomeNext

第 23 章。 Boost.MPI

Douglas Gregor

Matthias Troyer

根据 Boost 软件许可协议 1.0 版分发。(请参阅随附文件 LICENSE_1_0.txt 或在 <ulink url="https://boost.ac.cn/LICENSE_1_0.txt"> https://boost.ac.cn/LICENSE_1_0.txt </ulink>)中复制)

目录

介绍
入门指南
MPI 实现
配置和构建
使用 Boost.MPI
教程
点对点通信
集体操作
用户定义的数据类型
通信器
线程
将结构与内容分离
性能优化
从 C MPI 映射到 Boost.MPI
参考
头文件 <boost/mpi.hpp>
头文件 <boost/mpi/allocator.hpp>
头文件 <boost/mpi/cartesian_communicator.hpp>
头文件 <boost/mpi/collectives.hpp>
头文件 <boost/mpi/collectives_fwd.hpp>
头文件 <boost/mpi/communicator.hpp>
头文件 <boost/mpi/config.hpp>
头文件 <boost/mpi/datatype.hpp>
头文件 <boost/mpi/datatype_fwd.hpp>
头文件 <boost/mpi/environment.hpp>
头文件 <boost/mpi/exception.hpp>
头文件 <boost/mpi/graph_communicator.hpp>
头文件 <boost/mpi/group.hpp>
头文件 <boost/mpi/inplace.hpp>
头文件 <boost/mpi/intercommunicator.hpp>
头文件 <boost/mpi/nonblocking.hpp>
头文件 <boost/mpi/operations.hpp>
头文件 <boost/mpi/packed_iarchive.hpp>
头文件 <boost/mpi/packed_oarchive.hpp>
头文件 <boost/mpi/python.hpp>
头文件 <boost/mpi/request.hpp>
头文件 <boost/mpi/skeleton_and_content.hpp>
头文件 <boost/mpi/skeleton_and_content_fwd.hpp>
头文件 <boost/mpi/status.hpp>
头文件 <boost/mpi/timer.hpp>
Python 绑定
快速入门
传输用户定义的数据
集体操作
骨架/内容机制
C++/Python MPI 兼容性
参考
设计理念
性能评估
修订历史
致谢

Boost.MPI 是一个用于高性能并行应用程序中消息传递的库。Boost.MPI 程序是一个或多个进程,这些进程可以通过发送和接收单个消息(点对点通信)或通过作为组进行协调(集体通信)来进行通信。与线程环境中的通信或使用共享内存库不同,Boost.MPI 进程可以分布在许多不同的机器上,这些机器可能具有不同的操作系统和底层架构。

Boost.MPI 不是一个全新的并行编程库。相反,它是标准消息传递接口(MPI)的 C++ 友好接口,MPI 是用于高性能分布式计算的最流行的库接口。MPI 定义了一个库接口,可从 C、Fortran 和 C++ 获得,并且有许多 MPI 实现。虽然存在 MPI 的 C++ 绑定,但它们提供的功能比 C 绑定少。Boost.MPI 库提供了 MPI 的另一种 C++ 接口,该接口更好地支持现代 C++ 开发风格,包括完全支持用户定义的数据类型和 C++ 标准库类型、用于集体算法的任意函数对象,以及使用现代 C++ 库技术来保持最高效率。

目前,Boost.MPI 支持 MPI 1.1 中的大部分功能。Boost.MPI 中的轻量级抽象允许人们轻松地将其与对底层 C MPI 库的调用结合使用。Boost.MPI 目前支持

  • 通信器:Boost.MPI 支持 MPI 通信器的创建、销毁、克隆和拆分,以及进程组的操作。
  • 点对点通信:Boost.MPI 支持使用发送和接收操作,以及阻塞和非阻塞接口,对原始数据类型和用户定义的数据类型进行点对点通信。
  • 集体通信:Boost.MPI 支持集体操作,例如 reducegather,同时支持内置和用户定义的数据类型以及函数对象。
  • MPI 数据类型:Boost.MPI 可以使用 Boost.Serialization 库为用户定义的类型构建 MPI 数据类型。
  • 将结构与内容分离:Boost.MPI 可以传输复杂数据结构(列表、映射等)的形状(或“骨架”),然后单独传输其内容。此功能优化了需要在大型静态数据结构中多次传输数据的情况。

Boost.MPI 可以通过其原生 C++ 绑定或其替代的 Python 接口进行访问。


PrevUpHomeNext