You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Termux Ubuntu环境运行MPI程序报错:PMIx服务器监听线程启动失败求助

解决Termux Ubuntu环境中运行Python MPI程序的PMIx权限错误

问题场景

在Termux的Ubuntu环境中执行命令:

mpirun --allow-run-as-root -np 1 python3 index.py

出现权限相关错误导致PMIx服务启动失败,报错信息如下:

root@localhost:~/capstone/mpi# mpirun --allow-run-as-root -np 1 python3 index.py
[localhost:18945] opal_ifinit: ioctl(SIOCGIFHWADDR) failed with errno=13
[localhost:18945] pmix_ifinit: ioctl(SIOCGIFHWADDR) failed with errno=13
[localhost:18945] ptl_tool: problems getting address for index 122 (kernel index -1)
--------------------------------------------------------------------------
The PMIx server's listener thread failed to start. We cannot
continue.
--------------------------------------------------------------------------

Python代码本身无逻辑问题:

from mpi4py import MPI

comm = MPI.COMM_WORLD
worker = comm.Get_rank()
size = comm.Get_size()

print(f"Worker {worker} of Size {size}")

错误原因

Termux中的Ubuntu容器默认没有CAP_NET_RAW权限,导致MPI无法调用ioctl(SIOCGIFHWADDR)获取部分网络接口的硬件地址,进而引发PMIx初始化失败。

解决方案

方案1:指定PMIx仅使用回环接口

运行命令时添加环境变量,强制PMIx只使用回环接口(lo),避免检测无权限访问的网络接口:

PMIX_MCA_pmix_iface_include=lo mpirun --allow-run-as-root -np 1 python3 index.py

方案2:排除无权限的网络接口

创建或修改OpenMPI配置文件~/.openmpi/mca-params.conf,添加以下内容(替换成环境中实际无权限的接口名称,比如docker0、eth0等):

opal_if_exclude = docker0,eth0
pmix_if_exclude = docker0,eth0

保存后重新执行原命令即可。

方案3:强制使用TCP和本地通信组件

使用mpiexec替代mpirun,并指定通信组件为self(本地)和tcp:

mpiexec --allow-run-as-root --mca btl self,tcp -np 1 python3 index.py

内容的提问来源于stack exchange,提问作者user24471273

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 20:11:07