C语言MPI程序在Cygwin中mpirun运行报错求助
Cygwin下MPI程序编译正常但运行报错的解决方法
问题描述
在Cygwin控制台环境下编译C语言MPI Hello World程序,使用mpicc file.c -o file编译无报错,但执行mpirun -np 2 ./file时出现以下错误:
[DESKTOP-3F9P53V:01959] [[INVALID],INVALID] FORCE-TERMINATE AT Not found:-13 - error /pub/devel/openmpi/v4.0/openmpi-4.1.5-1.x86_64/src/openmpi-4.1.5/orte/mca/plm/rsh/plm_rsh_component.c(335)
当前配置:
- 已安装Cygwin相关包(见附图)
- 已下载MinGW并添加至用户环境变量
- Cygwin的bin目录已添加至环境变量
解决步骤
1. 安装rsh/SSH相关依赖包
错误提示来自OpenMPI的rsh组件,说明Cygwin缺少远程登录相关工具,需安装以下包:
rshrsh-serveropenssh
打开Cygwin的setup.exe,搜索上述包并选择安装,完成后重启Cygwin终端。
2. 配置本地SSH免密登录
OpenMPI需要无密码访问本地节点来启动进程,执行以下步骤:
- 在Cygwin终端生成SSH密钥:
ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa - 将公钥添加到授权列表:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys chmod 700 ~/.ssh - 测试本地SSH登录:
确保无需输入密码即可登录,若成功则退出登录。ssh localhost
3. 指定OpenMPI进程启动代理
运行程序时,显式指定使用SSH作为进程启动代理:
mpirun --mca plm rsh --mca plm_rsh_agent ssh -np 2 ./file
或者使用isolated模式(仅适用于单节点测试):
mpirun --mca plm isolated -np 2 ./file
4. 排查环境变量冲突
由于同时配置了MinGW和Cygwin,可能存在工具链冲突:
- 确保Cygwin的
bin目录在环境变量中的优先级高于MinGW的目录 - 或者在Cygwin终端中临时移除MinGW的环境变量,再运行MPI程序
5. 验证OpenMPI包完整性
确认已安装完整的OpenMPI组件:
openmpi(核心运行库)openmpi-devel(开发头文件和编译工具)openmpi-libs(依赖库)
若缺失,通过Cygwin setup.exe补充安装,避免仅安装部分组件导致的运行错误。
内容的提问来源于stack exchange,提问作者dacian
相关产品推荐
相关产品推荐

