我有一个与gmsh
相关的问题。
直接执行没有问题:
!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)
with:
b"--------------------------------------------------------------------------\n[[23419,1],0]: 一个高性能的 Open MPI 点对点消息模块无法找到任何相关的网络接口:\n\n模块: OpenFabrics (openib)\n 主机: 931136e3f6fe\n\n将使用另一种传输方式,尽管这可能会导致性能降低。\n--------------------------------------------------------------------------\n\x1b[1m\x1b[31m致命错误: 无法打开显示器: (FLTK 内部错误)\x1b[0m\n--------------------------------------------------------------------------\nMPI_ABORT 在通信器 MPI_COMM_WORLD 中的秩 0 上被调用,并带有错误码 1。\n\n注意:调用 MPI_ABORT 会导致 Open MPI 杀死所有 MPI 进程。您可能会看到其他进程的输出,也可能不会看到,具体取决于 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: 相同的结果。
export OMPI_MCA_btl=^openib
并再次尝试?很难确定根本原因是Infiniband(MPI)还是显示问题(可能与应用程序相关)。 - Gilles GouaillardetDISPLAY
环境变量未正确设置。尝试以["env", "env DISPLAY=:0 gmsh -3 -algo ..."]
命令运行。在图形终端中执行echo $DISPLAY
以获取正确的值。如果Jupyter服务器在不同的帐户下运行,则可能无法正常工作,除非在终端中发出xhost +
(危险-禁用显示服务器身份验证)。如果Jupyter在不同的主机上运行,则很可能根本无法工作。 - Hristo Iliev