2016-04-04 8 views
0

私はAndroid用にクロスコンパイルされたMPICHを設定しました。mpiexecが "mkstemp failed"というエラーをスローするこのファイルまたはディレクトリはありません

$./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のシステムは、以下のようにパラメータが「n」は1よりも大きい場合は、エラーを次のように応答が

$./mpiexec -n 1 -launcher=fork ./mpi_hello_world        
Hello world from processor zero, rank 0 out of 1 processors 

を次のように私は、単一のプロセスを生成するとき それが正常に動作しますアンドロイドに作成されている一時ファイルの名前に関連していますか?助けてください。

+1

ここで問題点や解決策がわかりませんが、現時点ではMPI開発者とAndroid開発者の共通点はおそらくあなただけなので、十分に掘り下げなければならないと言います。 MPICHがやろうとしていることについて、Androidの人々があなたを助けることができるように、より多くの情報を入手してください。しかし、最初のスタブは、あなたが使っているAndroidのインストールにmkstempという名前のプログラムがないことです。パスを追加するか、代替案を見つけ出す必要があるかもしれません。 –

+0

共有メモリをサポートしないMPICHを構築する場合、 'mkstemp'機能は必要ありません。 '--with-device = ch3:sock'を設定行に追加してみてください。ただし、このビルドではノード内転送のパフォーマンスが低下します。 – kraffenetti

+0

@kraffenetti、コメントありがとう、私はすでに--with-device = ch3:sockオプションを使用しています。 –

答えて

0

問題は、Androidファイルシステムでは共有メモリ通信の一時ファイルを作成するための/ tmpおよび/ dev/shmディレクトリがないことです。そのため、mkstemp()は失敗します。あなたがsuである間にmkdirそれらの権限を設定し、ch3:nemesisが動作します。

関連する問題