2017-09-15 177 views
5

所以我有一個gmsh troberle。如何從Jupyter筆記本電腦運行兼容MPI的應用程序?

直接執行工作正常:

!gmsh -3 -algo meshadapt tmp_0.geo -o SFM.msh 

雖然從代碼執行失敗:

try: 
    out = subprocess.check_output(
      ["gmsh", "gmsh -3 -algo meshadapt tmp_0.geo -o SFM.msh"], 
      stderr=subprocess.STDOUT 
      ).strip().decode('utf8') 
except subprocess.CalledProcessError as e: 
    out = e.output 
print(out) 

有:

B「----------- -------------------------------------------------- ------------- \ n [[23419,1],0]:高性能Open MPI點對點消息模塊\ n是 unabl e找到任何相關的網絡接口:\ n \ n模塊:OpenFabrics (openib)\ n主機:931136e3f6fe \ n \ n另一個傳輸將用 代替,儘管這可能會導致\ nlower 的性能。\ n ---- -------------------------------------------------- -------------------- \ n \ x1b [1m \ x1b [31mFatal:無法打開顯示:(FLTK內部 錯誤)\ x1b [0m \ n- -------------------------------------------------- ----------------------- \ nMPI_ABORT在通信器MPI_COMM_WORLD \ n的第0級被調用,錯誤代碼爲 1. \ n \ n注意:調用MPI_ABORT會導致Open MPI to殺死所有的MPI進程。\ n您可能會或可能不會看到其他進程輸出, 取決於\ nexactly開放MPI殺死 他們的時候。\ n ------------------- -------------------------------------------------- ----- \ n「

因此,如何從Python 3的代碼仿效jupyter !執行?


@Hristo:

_ = /選擇/康達/ bin中/ jupyter SHLVL = 1個PATH = /選擇/康達/ bin中:/選擇/康達/ bin中:在/ usr /本地/ sbin目錄:在/ usr/local/bin中:/ usr/sbin目錄:在/ usr/bin中:/ sbin目錄:/ bin中 HOSTNAME = 931136e3f6fe HOME = /根LC_ALL = C.UTF-8 PWD =/JPY_PARENT_PID = 1 LANG = C。 UTF-8 TERM = xterm-color CLICOLOR = 1 PAGER = cat GIT_PAGER = cat MPLBACKEND = module://ipykernel.pylab.backend_inline env DISPLAY =:0 gmsh -3 -algo meshadapt tmp_0.geo -o SFM.msh

@Gilles: 同樣的結果。

+0

你能'出口OMPI_MCA_btl =^openib'然後再試一次 ?很難判斷根本原因是infiniband(MPI)還是顯示問題(可能與應用程序有關) –

+0

它抱怨它無法打開到顯示服務器的連接,這意味着「DISPLAY」環境變量不是正確設置。嘗試以'[「env」,「env DISPLAY =:0 gmsh -3 -algo ...」]運行命令''。在圖形終端上執行'echo $ DISPLAY'來獲得適當的值。如果Jupyter服務器在另一個帳戶下運行,除非在終端中發出'xhost +'(危險 - 禁用顯示服務器身份驗證),否則它可能不起作用。如果Jupyter運行在不同的主機上,它可能根本無法工作。 –

回答

1

看來根本原因是$DISPLAY環境變量未設置。

首先確保您的Jupyter筆記本啓動時$DISPLAY設置。 您可能還必須指示mpirun將其導出到所有MPI任務。

從Open MPI 3.0.0開始,你可以用 export OMPI_MCA_mca_base_env_list=DISPLAY 開始你Jupyter筆記本

順便說一句,應該你的應用程序需要打開X顯示前實現這一目標? 如果它不做任何圖形,那麼它可以調整到無法顯示時可以正常工作。

[附錄]

的其他可能性是gmsh認爲由於DISPLAY被設定的顯示是可用的,所以它試圖將其打開和失敗。你可以嘗試設置該環境變量,看看事情如何,無論是在命令行(如互動模式),並通過筆記本電腦(如模式)

相關問題