Boost C++ 库

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

设计理念 - Boost C++ 函数库
PrevUpHomeNext

Parallel MPI 库的设计理念非常简单:既要方便又要高效。MPI 是一个为高性能应用程序而构建的库,但它是以 FORTRAN 为中心、注重性能的设计,从 C++ 的角度来看,这使得它相当不灵活:在一个进程与其他进程之间传递字符串很不方便,需要多个消息和显式的缓冲;在一个进程与其他进程之间传递字符串容器需要额外的手动管理;而传递一个从字符串到字符串容器的映射则会令人非常沮丧。Parallel MPI 库允许使用相同的简单 send()recv() 原语来传递所有这些数据类型。同样,像 reduce() 这样的集体操作允许任意数据类型和函数对象,非常类似于 C++ 标准库。

为方便而提供的高级抽象不应对应用程序的性能产生影响。例如,通过 send 发送一个整数必须与调用 MPI_Send 一样高效,这意味着它必须通过一个简单的 MPI_Send 调用来实现;同样,一个使用 std::plus<int> 的整数 reduce() 必须通过对使用 MPI_SUM 操作的整数进行 MPI_Reduce 调用来实现:任何低于此标准的操作都会影响性能。本质上,这就是“不为不使用的东西付费”的原则:如果用户不传输字符串,他/她就不应承担与字符串相关的开销。

有时,要实现最大的性能意味着要放弃方便的抽象,并使用更低级的原语来实现某些功能。因此,始终可以从 Boost.MPI 的抽象中提取足够的信息,以最大限度地减少将 Boost.MPI 与 C MPI 库进行接口所需的努力。


PrevUpHomeNext