【问题标题】:Should MPI be built with the same compiler suite as the application是否应该使用与应用程序相同的编译器套件构建 MPI
【发布时间】:2018-01-23 02:26:45
【问题描述】:

我正在开发用于科学计算的 MPI 应用程序。我正在处理我们的分发过程,它提出了 MPI 版本的问题。

我在网上的某些地方读到 MPI 应该使用与应用程序相同的编译器套件构建,但没有真正解释原因。

所以我想知道,一旦 MPI 被编译,它的定义是什么?仅仅是源码包的版本,还是源码包的版本加上编译器套件及其已经用于编译MPI的版本?

【问题讨论】:

  • 如果您使用 Fortran 模块(例如 use mpiuse mpi_f08),那么这很容易。 Fortran 模块不可互操作,因此必须使用相同的编译器(供应商和版本)来构建 MPI 和应用程序。

标签: parallel-processing compilation mpi


【解决方案1】:

MPI 植入的版本是绝对必须的。一个典型的例子是类型在版本之间发生了变化。

您还应该使用相同的编译器版本编译所有涉及的库 - 特别是 MPI。一个典型的例子是特定于编译器的库。一个编译器用内置的优化版本替换了对memcpy 的调用。如果您尝试与不同的编译器链接,该编译器未在其库中提供该优化函数,则会出现链接器错误。系统库通常没问题,但对于高度优化的构建以及 C++ 代码,这类库 ABI(应用程序二进制接口)不兼容很常见且非常痛苦。

【讨论】:

    猜你喜欢
    • 2013-08-05
    • 2012-03-07
    • 1970-01-01
    • 2021-12-23
    • 2012-08-08
    • 1970-01-01
    • 1970-01-01
    • 2015-04-11
    • 2016-04-03
    相关资源
    最近更新 更多