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
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_dynamic、 MPI_Win_attach和 MPI_Win_detach。
支持 MPI_Win_flush。
支持 MPI_NO_OP。
部分支持 MPI_Rput、 MPI_Rget和 MPI_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_spawn 和 MPI_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_Alltoallv和MPI_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_Iallreduce、 MPI_Iscatter、 MPI_Iallgather、 MPI_Iscatterv和 MPI_Igatherv。 这些是已支持的MPI_Ibcast、MPI_Ireduce、MPI_Igather和MPI_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 命令行中指定的所有主机上。
例如,以下命令将提示用户输入密码,并询问用户是否要将密码存储在指定的计算机 host1 和 host2 上,然后启动三个进程,一个在 host1 和 host2 上启动两个进程:
mpiexec –hosts 2 host1 1 host2 2 –wdir C:\MpiTests mpiapp.exe [parameters]
另一个示例是,以下命令将使用提供的密码对用户进行身份验证,将其存储在指定的计算机 host1 和 host2 上,然后启动三个进程,一个在 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_Ibcast、 MPI_Ireduce、 MPI_Igather 和 MPI_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 标准的新功能包括:
- 支持 MPI_Mprobe、 MPI_Mrecv、 MPI_Improbe和 MPI_Imrecv
- 支持 MPI_COUNT,允许在 MPI_STATUS 结构中正确表示大型数据类型
- 支持 MPI_Type_create_hindexed_block
- 支持 MPI_Dist_graph_create、 MPI_Dist_graph_create_adjacent、 MPI_Dist_graph_neighbors和 MPI_Dist_graph_neighbors_count
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 命令行或外部禁用此功能。
弃用的功能
我们将弃用此版本中的内置自动优化功能,目的是在即将发布的版本中将自动优化器移动到单独的实用工具中。