我正在研究用于科学计算的MPI应用程序。我正在处理我们的分发流程,它提出了MPI版本的问题。
我在网上的某些地方读到MPI应该使用与应用程序相同的编译器套件构建,但没有真正解释原因。
所以我想知道MPI版本一旦编译后定义了什么?它只是源包的版本,还是源包的版本加上编译器套件及其用于编译MPI的版本?
答案 0 :(得分:0)
MPI植入的版本是绝对必须的。典型示例是版本之间发生变化的类型。
您还应该使用相同的编译器版本编译所有涉及的库 - 尤其是MPI。典型示例是特定于编译器的库。一个编译器使用内置优化版本替换对memcpy
的调用。如果您尝试链接不同的编译器,但它没有在其库中提供该优化函数,则会出现链接器错误。系统库通常很好,但对于高度优化的构建版本和C ++代码,这些类型的库ABI(应用程序二进制接口)不兼容是常见的,非常痛苦。