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 与 mpirun

如何在程序中返回 mpiexec -n 参数?

mpiexec 和 python mpi4py 给出等级 0 和大小 1

如何检测我的应用程序是不是由 MS MPI mpiexec 启动?

OpenMPI:简单的 2 节点设置