0

我已经为 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 上创建的临时文件的名称有关?请帮忙。

4

1 回答 1

0

问题是在 Android 文件系统上,您没有 /tmp 和 /dev/shm 目录,这对于创建共享内存通信的临时文件至关重要。因此, mkstemp() 将失败。当你是 su 时 mkdir 他们,设置权限和 ch3:nemesis 将工作。

于 2016-08-16T11:28:44.880 回答