How to Handle Different SMPD Versions with Different Versions of the Intel® MPI Library


The Simple Multi-Purpose Daemon (SMPD) is used by the Intel® MPI Library for Windows* in job startup and management. The SMPD is typically handled as a Windows* service and is set at install time by the Intel® MPI Library. However, if you are using multiple MPI versions, this can lead to a mismatch between the version of MPI used for a job and the version of SMPD used by the system. This article provides information about how to identify and resolve this problem.


If you see an error message such as:

Aborting: unable to connect to <hostname>, smpd version mismatch

You are using a version of mpiexec that is expecting a different version of SMPD.


Ideally, all systems in the cluster should be using the same version of SMPD.  If a node is using a different version of SMPD, then each node should be set to the same version using:

<impi_installation_folder><version><arch>smpd.exe -install

With the same version and architecture used on each node.  This must be run as administrator, as it will modify the system services to use the executable called.

If you are only using one system, and are not the administrator of the system, you can attempt to use the mpiexec that is compatible with the SMPD installed.  First, you need to find which SMPD executable is actually in use by your system.  Windows* typically runs SMPD as a system service, and you can check the Services list to determine the location of the executable in use.  The SMPD provided with the Intel® MPI Library can also query this value by running:

<impi_installation_folder><version><arch>smpd.exe -get binary

This will return the full path to the binary in use, and does not need administrative privileges to run.

Once you have found the SMPD in use, you can use the mpiexec that corresponds to this SMPD.  The mpiexec.exe in the same folder will be intended to run with this version of SMPD.  Try using this mpiexec to avoid the SMPD version mismatch. The mpivars.bat file in the folder with smpd.exe will set your environment variables appropriately to use this version.

If you are unable to use this version of mpiexec, you can also set the environment variable I_MPI_SMPD_VERSION_CHECK to "disable".  This will allow the mismatched version to run, with a warning at start similar to:

Warning: smpd version mismatch: 4.1 != 3.1

Disabling the check will also work for systems with differing SMPD versions.

For more complete information about compiler optimizations, see our Optimization Notice.

1 comment


It's nice that there's an article for this. Why can't each intel mpi runtime version have its own Windows service name? For example "Intel(R) MPI Library Process Manager 4.0" and "Intel(R) MPI Library Process Manager 5.0". It seems like that would remove the need for running these special commands. The versions would work side by side. 

Add a Comment

Have a technical question? Visit our forums. Have site or software product issues? Contact support.