Microsoft MPI 发行说明

本文档包含适用于 Windows 的当前版本的 Microsoft MPI (MS-MPI) 的发行说明。

MS-MPI v10.1.3 (2023 年 6 月)

MS-MPI v10.1.3 包括以下改进和修复。 从 Microsoft 下载中心下载 MS-MPI v10.1.3。

  • 修复了为 Windows 11 和 Windows Server 2022 上的 mpi 工作进程分配相关性的问题。 在这些 OS 上,相关性是通过 CPU 集而不是通过相关性掩码分配的。

NUget 上也提供 MS-MPI v10.1.3 SDK。

MS-MPI v10.1.2 (2019 年 11 月)

MS-MPI v10.1.2 包括以下改进和修复。 从 Microsoft 下载中心下载 MS-MPI v10.1.2。

  • 已签名的基准可执行文件
  • 为满足 APIScan 要求而构建的二进制文件

nuget 上也提供 MS-MPI v10.1.2 SDK。

MS-MPI v10.1.1 (2019 年 9 月)

MS-MPI v10.1.1 包括以下改进和修补程序。 从 Microsoft 下载中心下载 MS-MPI v10.1.1。

  • 传递给 MsmpiLaunchSvc 的支持参数
  • 修复 mpiexec 双引号分析中的 bug
  • SAL 批注修复
  • 为 msmpi 安装程序添加从命令行卸载的选项
  • 修复 mpif 头文件中导致 gfortran 错误的不符合整数表示形式的问题

nuget 上也提供了 MS-MPI v10.1.1 SDK。

MS-MPI v10.0 (2018 年 10 月)

MS-MPI v10.0 包括以下改进和修复。 从 Microsoft 下载中心下载 MS-MPI v10.0。

  • 支持所有 RMA 操作

  • 支持使用多个处理器组

  • 包括 IMB-MPI1 和 IMB-NBC 基准

  • 在 mpiexec/smpd 中添加用于重定向日志的选项

  • 删除非标准内部函数/类型以支持使用 MinGW/gFortran

  • 修复核心转储创建中的 bug

  • 修复MPI_THREAD_MULTIPLE模式下的 bug

  • 修复了 MSMPILaunchSvc 中阻止保存凭据的 bug

NUget 上也提供 MS-MPI v10.0 SDK。

MS-MPI v9.0.1 (2018 年 3 月)

MS-MPI v9.0.1 包括以下改进和修复。 从 Microsoft 下载中心下载 MS-MPI v9.0.1。

  • 修复 了 mpiexec 代码中导致 Windows 7 系统上启动时出现死锁的 bug。

  • 修复了阻止 smpd 跨所有处理器组生成进程的 bug。

  • 修复了动态窗口 MPI_Win_Get_Attr 的返回值。

  • 修复 了在 smpd 中创建命名管道期间出现的 bug。

MS-MPI v9.0 (2018 年 2 月)

MS-MPI v9.0 包括以下新功能、改进和修补程序。

  • 支持 MPI_Win_allocate

  • 支持 MPI_Win_create_dynamicMPI_Win_attachMPI_Win_detach

  • 支持 MPI_Win_flush

  • 支持 MPI_NO_OP

  • 部分支持 MPI_RputMPI_RgetMPI_Raccumulate

  • RMA 错误报告中的 bug。

  • MS-MPI v7 和 v8 中的 bug,在某些条件下导致 MPI_Finalize 死锁。

  • NUget 上也提供 MS-MPI v9.0 SDK

MS-MPI v8.1 (2017 年 6 月)

MS-MPI v8.1 包括以下新功能、改进和修补程序。

  • 支持 MPI_Comm_spawnMPI_Comm_spawn_multiple

  • 支持 Unicode mpiexec 命令行参数和应用程序命令行。

  • 支持回退到 NTLM 以满足 MS-MPI 运行时安全要求。

  • 运行 smpd 守护程序或 MS-MPI 启动服务时,支持多个处理器组。

  • MS-MPI v8 中的一个 bug,在使用集合时可能导致溢出而崩溃。

  • MS-MPI v8 中的 bug,可能导致 MPI_Alltoallv出现死锁。

  • MS-MPI v8 中的 bug,在处理大型文件时导致未定义的行为。

  • NUget 上也提供 MS-MPI v8.1 SDK

MS-MPI v8 (2017 年 1 月)

MS-MPI v8 包括以下新功能、改进和修补程序。

  • 对所有非阻塞集合的完全支持。

  • 支持 MPI_Reduce_scatter_block

  • MPI_AlltoallvMPI_Alltoallw的性能改进。

  • MS-MPI v7 中的 bug,导致 MSMPI 启动服务的事件源中缺少信息

  • MS-MPI v7.1 中的 bug,导致 MSMPI 启动服务挂起。

  • MS-MPI v7 中的 bug,可能导致从 MPI_Open_port 返回错误的端口字符串。

  • MS-MPI v8 SDK 也可用于 nuget。

MS-MPI v7.1 (2016 年 6 月)

MS-MPI v7.1 包括以下对 MS-MPI v7 的显著改进和修复。

  • 安装程序现在更具复原能力,在以前的卸载未成功清理注册表时不会失败。

  • 修复了 MS-MPI v7 中的 bug,当在同一组节点上并发执行大量 MPI 作业时,会导致作业失败。

  • 如果 Kerberos 身份验证在支持部分 Kerberos 或错误配置 Kerberos 的环境中失败,身份验证会自动回退到 NTLM。

  • mpiexec 支持命令行中的 Unicode 字符,并且不再对命令行长度进行硬编码限制。 还支持长路径表示法 (\\?\) 。

  • NUget 上也提供 MS-MPI v7.1 SDK

MS-MPI v7 (2015 年 11 月)

MS-MPI v7 是 MS-MPI v6 的后续版本。 从 Microsoft 下载中心下载 MS-MPI v7。

新增功能

MS-MPI v7 包括以下新功能、改进和修补程序。

  • 支持其他非阻塞性集体操作MPI_IallreduceMPI_IscatterMPI_IallgatherMPI_IscattervMPI_Igatherv。 这些是已支持的MPI_Ibcast、MPI_IreduceMPI_IgatherMPI_Ibarrier

  • 支持使用 MSMPI_ND_PORT_RANGE 环境变量配置网络直接连接的端口范围

  • 改进了 (mpiexec/smpd) 的进程管理,以提高可靠性和性能

  • 集体操作的性能改进

  • MPI 启动服务 - MS-MPI v7 引入了 MS-MPI 启动服务,该服务允许使用用户提供的凭据为本地和远程计算机启动 MPI 进程。 MS-MPI 可再发行组件包在手动模式下安装 MS-MPI 启动服务。 若要启动该服务,请运行以下命令:

    sc start MSMPILaunchSvc [options]

    以下是可以在服务启动时传递给启动服务的选项:

    • -p | -port <port> 端口 - 更改启动服务正在侦听的端口。

    • -g | -group <组名称> - 仅允许指定组的成员运行 MPI 应用程序。 如果未指定,则默认为经过身份验证的用户。

  • 启动服务的新 mpiexec 选项 - mpiexec (-pwd-savecreds) 有两个新选项,可用于提供使用启动服务启动进程所需的凭据。 -pwd 选项允许在非交互式方案中为提交用户指定密码, (例如使用脚本或计划任务) 。 在这种情况下,密码以明文形式提供。 如果使用 -pwd) 指定,则 -savecreds 选项 (提供的凭据安全地存储在 mpiexec 命令行中指定的所有主机上。

    例如,以下命令将提示用户输入密码,并询问用户是否要将密码存储在指定的计算机 host1host2 上,然后启动三个进程,一个在 host1host2 上启动两个进程:

    mpiexec –hosts 2 host1 1 host2 2 –wdir C:\MpiTests mpiapp.exe [parameters]

    另一个示例是,以下命令将使用提供的密码对用户进行身份验证,将其存储在指定的计算机 host1host2 上,然后启动三个进程,一个在 host1 上,两个进程在 host2 上:

    mpiexec –hosts 2 host1 1 host2 2 –wdir C:\MpiTests -pwd <password> -savecreds mpiapp.exe [parameters]

    在一组节点上使用 -savecreds 选项运行 mpiexec 后,除非更改了密码,否则不必在这些节点的后续运行时提供密码。 如果用户在交互模式下运行,则 mpiexec 会提示输入密码,前提是启动服务正在运行,并且尚未提供密码,或者之前未使用 -savecreds 选项保存密码。

HPC Pack 兼容性

MS-MPI v7 与 HPC Pack 2012 R2 及更高版本兼容。 如果运行的 HPC Pack 的兼容版本具有早期版本的 MS-MPI,则可以将 MS-MPI 升级到 v7。

MS-MPI v6 (2015 年 5 月)

MS-MPI v6 是 2014 年 11 月) 日发布的 MS-MPI v5 可再发行程序包 (的后续版本。

新增功能

MS-MPI v6 包括以下新功能、改进和修补程序。

  • 非阻塞性集体操作 ,包括 MPI_IbcastMPI_IreduceMPI_IgatherMPI_Ibarrier

  • 多作业相关性支持 ,使多个关联 MPI 作业可以共存于一台计算机上,而不会重叠运行它们的核心。 MPI 运行时现在检测到存在固定到核心的现有作业,并将在当前未使用的核心上启动后续作业。

    此功能作为 mpiexec (-affinity_auto–aa) 的新选项公开,旨在同时在作业计划程序(如 Microsoft HPC Pack)下和独立 SDK 模式下运行。

    例如,若要在单个 16 核计算机上运行两个 8 核作业,可以使用以下命令行:

    mpiexec –cores 8 –affinity_auto –affinity_layout sequential myapp.exe

    mpiexec –c 8 –aa –al seq myapp.exe

  • 支持多线程应用程序 ,方法是在调用 MPI_Init_thread 时启用 MPI_THREAD_MULTIPLE。 这旨在允许使用 OMP 或其他线程模型的混合应用程序更轻松地利用 MPI 运行时。

    此功能支持的最低服务器为 Windows Server 2012。 此功能支持的最低客户端是Windows 8。

  • MPI 3.0 标准的新功能包括:

HPC Pack 兼容性

MS-MPI v6 与 HPC Pack 2012 R2 及更高版本兼容。 如果运行的 HPC Pack 的兼容版本具有早期版本的 MS-MPI,则可以将 MS-MPI 升级到 v6。

对默认设置的更改

MS-MPI v6 更改以下 mpiexec 默认设置:

  • MSMPI_ND_ZCOPY_THRESHOLD设置为 -1,禁用 zcopy。 这可以通过在 mpiexec 命令行中设置 MSMPI_ND_ZCOPY_THRESHOLD=0 来重新启用,如果使用的是 Microsoft HPC Pack) ,则可以通过 cluscfg setenvs (重新启用。
  • MSMPI_HA_COLLECTIVE设置为 all,默认启用分层集合。 可以通过设置 MSMPI_HA_COLLECTIVE=off,再次通过 mpiexec 命令行或外部禁用此功能。

弃用的功能

我们将弃用此版本中的内置自动优化功能,目的是在即将发布的版本中将自动优化器移动到单独的实用工具中。

社区资源

Microsoft MPI

MPI 参考