Boost C++ 库

...世界上最受推崇和设计最精巧的 C++ 库项目之一。 Herb SutterAndrei Alexandrescu, C++ Coding Standards

第 23 章 Boost.MPI - Boost C++ 函数库
PrevUpHomeNext

第 23 章 Boost.MPI

Douglas Gregor

Matthias Troyer

根据 Boost Software License, Version 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> 了解副本)

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