所以我有一个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: 同样的结果。
你能'出口OMPI_MCA_btl =^openib'然后再试一次 ?很难判断根本原因是infiniband(MPI)还是显示问题(可能与应用程序有关) –
它抱怨它无法打开到显示服务器的连接,这意味着“DISPLAY”环境变量不是正确设置。尝试以'[“env”,“env DISPLAY =:0 gmsh -3 -algo ...”]运行命令''。在图形终端上执行'echo $ DISPLAY'来获得适当的值。如果Jupyter服务器在另一个帐户下运行,除非在终端中发出'xhost +'(危险 - 禁用显示服务器身份验证),否则它可能不起作用。如果Jupyter运行在不同的主机上,它可能根本无法工作。 –