mpirun启动pin.sh做线程绑定时报Exec format错误如何解决
错误成因
报错核心为Exec format error(执行格式错误),Open MPI调用execve系统调用尝试启动pin.sh时失败,常见原因有两类:
- 脚本缺少shebang声明:
pin.sh文件开头未指定对应脚本解释器(如#!/bin/bash、#!/bin/sh),系统无法识别脚本的执行格式,无法自动唤起对应解释器运行脚本。 - 脚本无执行权限:即使存储路径正确,若
pin.sh未设置可执行权限,系统会判定其为不可执行文件,触发格式错误。
解决方法
可按以下任意一种方案操作:
标准修复方案(推荐)
- 在
pin.sh第一行添加对应脚本的shebang声明,例如Bash脚本添加:
若为其他类型脚本,替换为对应解释器路径即可(如Python脚本写#!/bin/bash#!/usr/bin/env python3)。 - 为
pin.sh添加可执行权限:chmod +x /home/user/myapp/bin/pin.sh
操作完成后即可使用你原来的
mpirun命令正常启动。- 在
临时免修改方案
不需要调整pin.sh属性,直接在mpirun命令中显式指定解释器启动即可:mpirun --bind-to none -np 128 bash pin.sh myapp_mpi apprun -resethway -noconfout -nsteps 8000 -s benchData.tpr -cpo state.cpt -e ener.edr -dlb no -pin off -v
注意:请确认
pin.sh脚本内已经正确将所有传入参数($@)透传给后续启动的myapp_mpi进程,避免应用出现参数缺失异常。
内容的提问来源于stack exchange,提问作者kiriloff
相关产品推荐
相关产品推荐

