【发布时间】: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构建中。
标签: android cross-platform mpi mpich mkstemp