【问题标题】:installing OpenMPI or MPICH2 in MSYS2-MinGW在 MSYS2-MinGW 中安装 OpenMPI 或 MPICH2
【发布时间】:2020-06-25 23:31:45
【问题描述】:

我想将 MPI 的任何 FLOSS 实现(即 OpenMPI 或 MPICH2)与我的 MSYS-MinGW 环境和编译器一起使用。请注意,我知道 Microsoft MPI SDK mingw64/mingw-w64-x86_64-msmpi,您可以使用

pacman -Ss msmpi

并安装

pacman -S msmpi

但我想知道是否可以安装任何开源实现。我试着搜索

pacman -Ss mpi

但是要手动检查的结果太多,openmpimpich2 搜索查询不会返回任何结果。所以我的问题是:

  • 是随 MinGW 或 MSYS2 提供的 MPI 的任何 FLOSS 实现
  • 如果不是如何安装它们?

P.S.1. Cygwin 确实有 some openmpi 相关的包,所以奇怪的是为什么 MSYS2,AFIK 是 Cygwin 的分支,没有!

P.S.2. MPICH2 二进制文件可用here,但它们远远落后于其他平台的最新版本。真是悲哀!

P.S.3. 惊讶Microsoft's MPI implementation 实际上是开源的!它似乎是 MPICH 的一个分支,或者至少与它兼容。

【问题讨论】:

标签: mpi mingw openmpi msys2 mpich


【解决方案1】:

MSYS2 的主要目标是为您提供一个构建本地 Windows 应用程序的环境。

因此,它很自然地会将绑定导出到本机 Microsoft MPI 实现,而不提供其他 MPI 实现的端口,例如依赖于完整 POSIX 层的 OpenMPI 或 MPICH。

来自How does MSYS2 differ from Cygwin

MSYS2 试图为构建本地 Windows 软件提供环境。 MSYS2 提供了大量包含此类软件的软件包,以及用于其开发的库。由于大部分软件使用与 unix 世界紧密耦合的 GNU 构建工具,因此该环境也是 POSIX 兼容的,实际上是基于 Cygwin。

Cygwin 试图将与 POSIX 兼容的环境引入 Windows,以便大多数在 unices 上运行的软件无需任何重大修改即可在 Cygwin 上构建和运行。 Cygwin 提供了大量包含此类软件的软件包,以及用于其开发的库。

关于 MSYS2 如何利用 Cygwin 和 POSIX 兼容层主要提供 build 环境中所需的工具端口,该页面上有更多详细信息,主要是为了支持类似 POSIX 的构建系统(例如如 autoconf、make、meson 等),同时主要旨在公开这些工具以支持构建 Windows 原生二进制文件和移植应用程序以在 Windows 上原生运行。

【讨论】:

  • 谢谢。但我仍然不相信为什么 OpenMPI 和 MPICH2 不应该与 MSYS2-MinGW 一起编译/在 MSYS2-MinGW 内部编译。您是说 MSYS2 与 POSIX 兼容,但 OpenMPI/MPICH2 需要“完整的 POSIX 层”。那么 MSYS2 中缺少什么来阻止该软件的完整端口?
  • @Foad 我将 OpenMPI 和 MPICH2 主要归类为 libraries 以链接到您正在构建或移植的程序。因此,要使用这些库,您需要您的程序使用 POSIX 仿真层。但是 MSYS2 是一个 POSIX 仿真层,适用于您的 build 环境,而不是您使用它构建的二进制文件。如果您希望构建的二进制文件使用 POSIX 仿真层,您需要的是 Cygwin...
猜你喜欢
  • 1970-01-01
  • 2012-02-01
  • 2021-10-23
  • 1970-01-01
  • 2014-12-04
  • 2016-07-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多