Microsoft MPI Release Notes
This document contains the release notes for the current versions of Microsoft MPI (MS-MPI) for Windows.
MS-MPI v10.1.3 (June 2023)
MS-MPI v10.1.3 includes the following improvements and fixes. Download MS-MPI v10.1.3 from the Microsoft Download Center.
- Fix for assigning affinities to mpi worker processes on Windows 11 and Windows Server 2022. On these OSes affinities are being assigned through CPU sets, and not through Affinity masks.
The MS-MPI v10.1.3 SDK is also available on nuget.
MS-MPI v10.1.2 (November 2019)
MS-MPI v10.1.2 includes the following improvements and fixes. Download MS-MPI v10.1.2 from the Microsoft Download Center.
- Signed benchmark executables
- Binaries built to satisfy APIScan requirements
The MS-MPI v10.1.2 SDK is also available on nuget.
MS-MPI v10.1.1 (September 2019)
MS-MPI v10.1.1 includes the following improvements and fixes. Download MS-MPI v10.1.1 from the Microsoft Download Center.
- Support arguments passed to MsmpiLaunchSvc
- Fix the bug in mpiexec double quote parsing
- Fix for SAL annotations
- Add option for msmpi installer to uninstall from a command line
- Fix for non-conformant integer representation in mpif header file leading to errors with gfortran
The MS-MPI v10.1.1 SDK is also available on nuget.
MS-MPI v10.0 (October 2018)
MS-MPI v10.0 includes the following improvements and fixes. Download MS-MPI v10.0 from the Microsoft Download Center.
Support all RMA operations
Support for utilizing multiple processor groups
Include IMB-MPI1 and IMB-NBC benchmarks
Add option in mpiexec/smpd to redirect logs
Remove nonstandard intrinsics/types to support usage with MinGW/gFortran
Fix a bug in core dump creation
Fix a bug in MPI_THREAD_MULTIPLE mode
Fix a bug in MSMPILaunchSvc that prevents saving credentials
The MS-MPI v10.0 SDK is also available on nuget.
MS-MPI v9.0.1 (March 2018)
MS-MPI v9.0.1 includes the following improvements and fixes. Download MS-MPI v9.0.1 from the Microsoft Download Center.
Fix for a bug in mpiexec code that causes a deadlock during startup on Windows 7 systems.
Fix for a bug that prevents smpd from spawning processes across all processor groups.
Fix for return values for MPI_Win_Get_Attr for dynamic window.
Fix for a bug during named pipe creation in smpd.
MS-MPI v9.0 (February 2018)
MS-MPI v9.0 includes the following new features, improvements, and fixes.
Support for MPI_Win_allocate.
Support for MPI_Win_create_dynamic, MPI_Win_attach, and MPI_Win_detach.
Support for MPI_Win_flush.
Support for MPI_NO_OP.
Partial support for MPI_Rput, MPI_Rget, and MPI_Raccumulate.
A bug in RMA error reporting.
A bug in MS-MPI v7 and v8 that causes deadlock on MPI_Finalize in certain conditions.
The MS-MPI v9.0 SDK is also available on nuget.
MS-MPI v8.1 (June 2017)
MS-MPI v8.1 includes the following new features, improvements, and fixes.
Support for MPI_Comm_spawn and MPI_Comm_spawn_multiple.
Support Unicode mpiexec command line arguments and applications command line.
Support falling back to NTLM for MS-MPI runtime security requirements.
Support multiple processor groups when running smpd daemon or the MS-MPI Launch service.
A bug in MS-MPI v8 that might cause crashes due to overflow when using collectives.
A bug in MS-MPI v8 that might cause a deadlock in MPI_Alltoallv.
A bug in MS-MPI v8 that cause undefined behavior when dealing with large files.
The MS-MPI v8.1 SDK is also available on nuget.
MS-MPI v8 (January 2017)
MS-MPI v8 includes the following new features, improvements, and fixes.
Complete support for all non-blocking collectives.
Support for MPI_Reduce_scatter_block.
Performance improvement for MPI_Alltoallv and MPI_Alltoallw.
A bug in MS-MPI v7 that causes missing information in the event source for the MSMPI Launch Service
A bug in MS-MPI v7.1 that causes a hang in MSMPI Launch Service.
A bug in MS-MPI v7 that can results in a bad port string returned from MPI_Open_port.
The MS-MPI v8 SDK is also available on nuget.
MS-MPI v7.1 (June 2016)
MS-MPI v7.1 includes the following notable improvements and fixes to MS-MPI v7.
Setup is now more resilient and will not fail when previous uninstallations did not successfully clean up the Registry.
A bug in MS-MPI v7 is fixed that causes jobs to fail when a large number of MPI jobs are executed concurrently on the same set of nodes.
Authentication automatically falls back to NTLM if Kerberos authentication fails in an environment with partial or misconfigured Kerberos support.
mpiexec supports Unicode characters in the command line and no longer has a hard-coded limit for command line length. Long path notation (\\?\) is also supported.
The MS-MPI v7.1 SDK is also available on nuget.
MS-MPI v7 (November 2015)
MS-MPI v7 is the successor to the MS-MPI v6. Download MS-MPI v7 from the Microsoft Download Center.
New features
MS-MPI v7 includes the following new features, improvements, and fixes.
Support for additional non-blocking collective operations: MPI_Iallreduce, MPI_Iscatter, MPI_Iallgather, MPI_Iscatterv, and MPI_Igatherv. These are in addition to the already supported MPI_Ibcast, MPI_Ireduce, MPI_Igather and MPI_Ibarrier.
Support for configuring the port range for Network Direct connections by using the MSMPI_ND_PORT_RANGE environment variable
Revamped process management (mpiexec/smpd) for better reliability and performance
Performance improvements for collective operations
MPI launch service - MS-MPI v7 introduces the MS-MPI launch service, which allows the launching of MPI processes for local and remote machines with user-provided credentials. The MS-MPI redistributable package installs the MS-MPI launch service in Manual mode. To start the service, run the following command:
sc start MSMPILaunchSvc [options]
These are the options you can pass to the launch service at service start:
-p | -port <port> - Change the port that launch service is listening on.
-g | -group <group name> - Only allow members of the specified group to run MPI applications. If not specified, the default is authenticated users.
New mpiexec options for launch service - There are two new options to mpiexec (-pwd and -savecreds) that allow you to provide the necessary credentials for launching processes using the launch service. The -pwd option allows specifying the password for the submitting users in non-interactive scenarios (e.g., using a script or scheduled task). In this case the password is provided in clear text. The -savecreds option causes the provided credentials (if specified with -pwd) to be securely stored on all the hosts specified in the mpiexec command line.
For example, the following command will prompt for the user's password and ask the user if he or she wants to store it on the specified machines host1 and host2, then launch three processes, one on host1 and two on host2:
mpiexec –hosts 2 host1 1 host2 2 –wdir C:\MpiTests mpiapp.exe [parameters]
As another example, the following command will authenticate the user using the provided password, store it on the specified machines host1 and host2, then launch three processes, one on host1 and two on host2:
mpiexec –hosts 2 host1 1 host2 2 –wdir C:\MpiTests -pwd <password> -savecreds mpiapp.exe [parameters]
After you run mpiexec with the -savecreds option on a set of nodes, you do not have to provide the password on subsequent runs for those nodes unless the password is changed. If the user is running in interactive mode, mpiexec prompts for the password if the launch service is running and the password has not been provided or previously saved with the -savecreds option.
HPC Pack compatibility
MS-MPI v7 is compatible with HPC Pack 2012 R2 and later. If you are running a compatible version of HPC Pack that has an earlier version of MS-MPI, you can upgrade MS-MPI to v7.
MS-MPI v6 (May 2015)
MS-MPI v6 is the successor to the MS-MPI v5 redistributable package (released in November 2014).
New features
MS-MPI v6 includes the following new features, improvements, and fixes.
Non-blocking collective operations including MPI_Ibcast, MPI_Ireduce, MPI_Igather and MPI_Ibarrier.
Multi-job affinity support so that multiple affinitized MPI jobs can co-exist on a single machine without overlapping the cores they run on. The MPI runtime now detects that there are existing jobs pinned to cores, and will launch subsequent jobs on cores that are not currently in use.
The feature is exposed as a new option to mpiexec (-affinity_auto or –aa) and is designed to work both under job schedulers such as Microsoft HPC Pack and in standalone SDK mode.
As an example, to run two 8 core jobs on a single 16 core machine you could use the following command line:
mpiexec –cores 8 –affinity_auto –affinity_layout sequential myapp.exe
, ormpiexec –c 8 –aa –al seq myapp.exe
Support for multi-threaded applications by enabling the use of MPI_THREAD_MULTIPLE when calling MPI_Init_thread. This is designed to allow hybrid applications using OMP or other threading models to more easily leverage the MPI runtime.
The minimum supported server for this feature is Windows Server 2012. The minimum supported client for this feature is Windows 8.
New features from the MPI 3.0 standard including:
- Support for MPI_Mprobe, MPI_Mrecv, MPI_Improbe, and MPI_Imrecv
- Support for MPI_COUNT, to allow large datatypes to be properly represented in MPI_STATUS structures
- Support for MPI_Type_create_hindexed_block
- Support for MPI_Dist_graph_create, MPI_Dist_graph_create_adjacent, MPI_Dist_graph_neighbors, and MPI_Dist_graph_neighbors_count
HPC Pack compatibility
MS-MPI v6 is compatible with HPC Pack 2012 R2 and later. If you are running a compatible version of HPC Pack that has an earlier version of MS-MPI, you can upgrade MS-MPI to v6.
Changes to default settings
MS-MPI v6 changes the following mpiexec default settings:
- MSMPI_ND_ZCOPY_THRESHOLD is set to -1, disabling zcopy. This can be reenabled by setting MSMPI_ND_ZCOPY_THRESHOLD=0 in the mpiexec command line, or via cluscfg setenvs (if you are using Microsoft HPC Pack).
- MSMPI_HA_COLLECTIVE is set to all, enabling hierarchical collectives by default. This can be disabled by setting MSMPI_HA_COLLECTIVE=off, again through the mpiexec command line or externally.
Deprecated features
We are deprecating the built in auto-tuning functionality in this version with the intention of moving the auto-tuner into a separate utility in an upcoming release.