2013-07-24 73 views
3

我試圖創建一個Java GUI來控制和運行MPI進程。我可以從命令行運行MPI進程,但無法通過Java Process Builder運行。從Java ProcessBuilder運行OpenMPI進程時ompi_evesel-> dispatch()失敗

我收到以下錯誤的過程剛開始後:

[SCI053_VM003:02928] ..\..\openmpi-1.6.4\opal\event\event.c: ompi_evesel->dispatch() failed. 

我懷疑是一個環境問題,但我不知道如何診斷它。我已經將java進程生成器看到的環境打印到日誌以及mpiexec'd進程看到的環境中,但我沒有看到任何錯誤!?!?

所有代碼和輸出日誌都貼在gist

我想使用的openmpi 1.6.4 Windows環境下打包MPI4PY

運行好像大多是的openmpi問題,所以我貼到UserList,但希望幫助的任何地方,我可以得到它...

大衛

PS - 我能夠運行Java程序啓動和運行在相同的代碼我的MacOS環境,但在那裏我使用brew安裝MPICH2。

+0

今天我將測試使用python子進程調用mpiexec。如果事實證明這是一個可行的中介Java ProcessBuilder => Python Subprocess => OpenMPI MPIExec =>運行我的並行應用程序...我將使用它,但它並不真正回答我的問題(或賞金) – David

+0

更新:我寫了一個簡短的python程序來調用mpiexec或任何你傳遞它的命令。它在命令行中效果很好: – David

+0

更新:我寫了一個簡短的python程序來調用mpiexec或任何通過它的命令。 HTTPS://gist.github。COM/dstuebe/6170563 它的偉大工程作爲一個間接的方式在命令行中運行任何程序,但它失敗時,我用它從裏面的ProcessBuilder Java中以同樣的方式! – David

回答

0

我懷疑是因爲您使用的是Windows。我不記得OpenMPI什麼時候停止支持Windows,但在某些時候它確實如此。你可以嘗試使用微軟的Windows MPICH端口,看看它是否能滿足你的需求。我不記得URL,但您可以在MPICH下載頁面找到端口(http://www.mpich.org/downloads/)。

+0

它的工作原理,如果我在運行cmd窗口的工作 - 我不會稱之爲終端「因爲它吸收太多...但它確實‘在窗口工作’,只是沒有當我從Java Exec的它。 – David

+0

啊。那麼在那種情況下,我的專業知識就失去了。我遠離Windows/Java人員。 –

+0

我想如果我需要找到誰是Windows,Java和的openmpi更不用說Python和MPI4py ... – David

0

我也不能直接說爲什麼,但是我在java下的System進程的實現是它最好由其他人來處理它。

這是我的提示。我總是在調用外部應用程序時使用apache commins exec。 鏈接到基礎教程http://commons.apache.org/proper/commons-exec/tutorial.html 希望它有幫助。它易於實施和使用。

剛讀完你的要點。我錯過的是,你在哪裏設置你的工作目錄。 嘗試將工作目錄設置爲您可以從命令行啓動的目錄。

+0

我可以從命令行就好了相同的工作目錄運行。你可以看到從env.py輸出工作目錄 - 這被執行得很好 - 但MPI胡扯出來,像bcast.py MPI程序將無法正常工作。 我會嘗試阿帕奇公地EXEC作爲最後的手段。我已經有很多圍繞ProcessBuilder編寫的代碼。 感謝您的幫助! – David

0

當您從cmd.exe成功運行mpiexec.exe時,您在哪個目錄中?我很好奇你的輸出日誌顯示的LD_LIBRARY_PATH ......這奇怪的是,LD_LIBRARY_PATH被在Windows中設置:

LD_LIBRARY_PATH=C:\Python27\Lib\site-packages\mpi4py\bin/../lib:C:\Python27\Lib\site-packages\mpi4py\bin\..\lib 

是否啓動從Windows mpiexec.exe的工作,當你設置PATH變量指向MPI bin和lib目錄?我不積極,如果these Open MPI instructions apply,但他們提到設置PATH環境變量。

+0

試圖添加到ProcessBuilder環境的路徑,我可以在env.py的輸出中看到它,但我仍然從mpiexec中得到錯誤。 – David

相關問題