Duc*_*een 5 python process mpi execution jupyter-notebook
所以我有一个小册子gmsh.
直接执行工作正常:
!gmsh -3 -algo meshadapt tmp_0.geo -o SFM.msh
Run Code Online (Sandbox Code Playgroud)
从代码执行失败时:
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)
Run Code Online (Sandbox Code Playgroud)
有:
B"------------------------------------------------ -------------------------- \n [[23419,1],0]:高性能Open MPI点对点消息传递module \n无法找到任何相关的网络接口:\n \n模块:OpenFabrics(openib)\n主机:931136e3f6fe \n \n将使用另一种传输方式,但这可能会导致性能下降.\n ---- -------------------------------------------------- -------------------- \n\x1b [1m\x1b [31mFatal:无法打开显示:(FLTK内部错误)\ x1b [0m \n-- -------------------------------------------------- ---------------------- \n \nMPI_ABORT在通讯器MPI_COMM_WORLD \n中的等级0上被调用,错误代码为1. \n \n注意:调用MPI_ABORT导致Open MPI全部杀死MPI进程.\n您可能会也可能看不到其他进程的输出,具体取决于Open MPI何时杀死它们.\n ----------------------- -------------------------------------------------- - \n"
那么如何!在Python 3代码中模拟jupyter中的执行呢?
@Hristo:
_ =/opt/conda/bin/jupyter SHLVL = 1 PATH =/opt/conda/bin:/ opt/conda/bin:/ usr/local/sbin:/ usr/local/bin:/ usr/sbin:/ usr/bin:/ sbin:/ bin HOSTNAME = 931136e3f6fe HOME =/root 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:结果相同.
看来根本原因是$DISPLAY环境变量没有设置。
首先确保$DISPLAY在 Jupyter 笔记本启动时进行设置。您可能还必须直接mpirun将其导出到所有 MPI 任务。
export OMPI_MCA_mca_base_env_list=DISPLAY
从 Open MPI 3.0.0 开始,您可以在启动 Jupyter Notebook 之前实现此目的
顺便问一下,您的应用程序需要打开 X 显示吗?如果它不做任何图形,那么可以将其调整为在没有可用显示时正常工作。
[附录]
另一种可能性是,gmsh由于已设置,因此认为显示可用DISPLAY,因此尝试打开它但失败。您可以尝试取消设置此环境变量,并通过命令行(例如交互模式)和笔记本(例如批处理模式)查看事情进展情况
| 归档时间: |
|
| 查看次数: |
286 次 |
| 最近记录: |