mpiexec 抛出错误“mkstemp 失败,没有这样的文件或目录”
Posted
技术标签:
【中文标题】mpiexec 抛出错误“mkstemp 失败,没有这样的文件或目录”【英文标题】:mpiexec throws error "mkstemp failed No such file or directory" 【发布时间】:2016-04-04 13:35:35 【问题描述】:我已经为 android 交叉编译了 MPICH 并对其进行了配置。 当我按如下方式生成单个进程时,它工作正常
$./mpiexec -n 1 -launcher=fork ./mpi_hello_world
Hello world from processor zero, rank 0 out of 1 processors
但是,如果参数“n”大于 1,Android 系统会响应如下错误:
$./mpiexec -n 2 -launcher=fork ./mpi_hello_world
Fatal error in MPI_Init: Other MPI error, error stack:
MPIR_Init_thread(474).................:
MPID_Init(190)........................: channel initialization failed
MPIDI_CH3_Init(89)....................:
MPID_nem_init(272)....................:
MPIDI_CH3I_Seg_commit(327)............:
MPIU_SHMW_Seg_create_and_attach(897)..:
MPIU_SHMW_Seg_create_attach_templ(610): mkstemp failed No such file or directory
这可能与在 android 上创建的临时文件的名称有关?请帮忙。
【问题讨论】:
我不确定这里的问题或解决方案是什么,但我不得不说,此时 MPI 开发人员和 Android 开发人员的交集可能只有你,所以你会有深入挖掘以获取有关 MPICH 正在尝试做什么的更多信息,以便 Android 人员可以为您提供帮助。虽然,第一个问题是您正在使用的 Android 安装中没有名为 mkstemp 的程序。您可能需要添加路径或找出替代方法。 如果您在没有共享内存支持的情况下构建 MPICH,则不需要mkstemp
功能。尝试将--with-device=ch3:sock
添加到您的配置行。但是,在此构建中,您将失去节点内传输的性能。
@kraffenetti ,感谢您的评论,我已经在使用 --with-device=ch3:sock 选项。
您可以从 MPICH 主目录发布您的 config.log
吗? MPID_nem_init(272)
不应出现在 ch3:sock
构建中。
【参考方案1】:
问题在于,在 Android 文件系统上,您没有 /tmp 和 /dev/shm 目录,这对于创建用于共享内存通信的临时文件至关重要。因此, mkstemp() 将失败。在你是 su 的时候 mkdir 他们,设置权限和 ch3:nemesis 就可以了。
【讨论】:
以上是关于mpiexec 抛出错误“mkstemp 失败,没有这样的文件或目录”的主要内容,如果未能解决你的问题,请参考以下文章
以 mpiexec 启动的程序是不是知道它是以 mpiexec 启动的?
mpiexec 和 python mpi4py 给出等级 0 和大小 1