使用Microsoft HPC Pack 2008 SDK运行MPI程序遇1722连接错误求助
解决HPC Pack 2008 MPI程序无法连接smpd manager的问题
你遇到的是HPC Pack 2008 MPI环境中smpd服务通信故障,错误码1722对应RPC服务器不可用,这是smpd(Microsoft消息传递守护进程)的典型问题。下面是一步步的排查和解决方法:
1. 检查smpd服务状态
HPC Pack的MPI依赖smpd管理进程调度,先确认服务是否正常运行:
- 右键开始菜单,打开Windows终端(管理员)或命令提示符(管理员)
- 执行命令:
sc query smpd- 如果输出显示
STATE: 1 STOPPED,先启动服务:sc start smpd - 为避免重启后服务停止,设置自动启动:
sc config smpd start= auto(注意start=后面必须加空格)
- 如果输出显示
2. 配置smpd用户权限
smpd需要验证用户权限才能允许MPI程序连接,把当前用户添加到授权列表:
- 在管理员终端执行:
smpset -user <你的本地用户名> -pass <你的用户密码>- 若为域账户,格式改为:
smpset -user DOMAIN\你的用户名 -pass <你的密码>
- 若为域账户,格式改为:
3. 放行smpd的防火墙端口
错误日志提到的56041是smpd默认通信端口,需确保防火墙不拦截:
- 可临时关闭Windows防火墙测试(若能正常运行,说明是防火墙问题)
- 或添加永久规则:打开Windows Defender防火墙 → 高级设置 → 入站规则 → 新建规则,允许
C:\Program Files\Microsoft HPC Pack 2008\Bin\smpd.exe的所有连接
4. 验证MPI环境与编译配置
- 确认HPC Pack 2008的Bin目录已加入系统PATH(如
C:\Program Files\Microsoft HPC Pack 2008\Bin),避免调用其他版本的mpiexec/smpd - 检查编译命令是否正确链接HPC Pack的MPI库,以x64环境为例:
cl /EHsc ReadText.cpp /I"C:\Program Files\Microsoft HPC Pack 2008\Include" /link /LIBPATH:"C:\Program Files\Microsoft HPC Pack 2008\Lib\x64" msmpi.lib
5. 手动启动smpd调试
若自动启动的smpd有异常,尝试手动启动并指定端口:
- 管理员终端执行:
smpd -d -p 56041(-d为调试模式,会输出详细日志) - 保持该窗口打开,再开一个管理员终端运行你的MPI命令:
mpiexec -n 1 ReadText.exe
如果以上步骤都未解决,可查看debug输出中的RPC相关日志,进一步定位是端口绑定失败还是用户权限验证问题。
内容的提问来源于stack exchange,提问作者daggett




