2017-09-15 52 views
5

Vì vậy, tôi có một trobule với gmsh.Làm thế nào để chạy các ứng dụng tương thích MPI từ sổ ghi chép Jupyter?

thực hiện trực tiếp hoạt động tốt:

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

Trong khi thực hiện từ mã thất bại:

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) 

với:

b "----------- -------------------------------------------------- ------------- \ n [[23419,1], 0]: Mô-đun nhắn tin điểm-điểm-điểm mở MPI hiệu suất cao \ nwas unabl e để tìm mọi giao diện mạng có liên quan: \ n \ nMô hình: OpenFabrics (openib) \ n Máy chủ: 931136e3f6fe \ n \ nChuyển giao khác sẽ được sử dụng thay vào đó, mặc dù điều này có thể dẫn đến hiệu suất \ nlower . \ n ---- -------------------------------------------------- -------------------- \ n \ x1b [1m \ x1b [31mFatal: Không thể mở hiển thị: (FLTK nội bộ lỗi) \ x1b [0m \ n- -------------------------------------------------- ----------------------- \ nMPI_ABORT được gọi trên thứ hạng 0 trong giao tiếp MPI_COMM_WORLD \ nvới mã lỗi 1. \ n \ nLƯU Ý: gọi MPI_ABORT khiến MPI mở giết tất cả các quy trình MPI. \ nBạn có thể hoặc không thể thấy đầu ra từ các quá trình khác, tùy thuộc vào \ nchính xác khi mở MPI giết chúng. \ n ------------------- -------------------------------------------------- ----- \ n "

Vậy làm thế nào để mô phỏng thực thi ! trong jupyter từ mã Python 3?


@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 màu CLICOLOR = 1 PAGER = cat GIT_PAGER = cat MPLBACKEND = mô-đun: //ipykernel.pylab.backend_inline env DISPLAY =: 0 gmsh -3 -algo meshadapt tmp_0.geo -o SFM.msh

@Gilles: Kết quả tương tự.

+0

Can bạn 'xuất khẩu OMPI_MCA_btl =^openib' và thử lại ? Thật khó để tìm ra nguyên nhân gốc là infiniband (MPI) hay vấn đề hiển thị (có thể liên quan đến ứng dụng) –

+0

Nó phàn nàn rằng nó không thể mở kết nối đến máy chủ hiển thị, có nghĩa là biến môi trường 'DISPLAY' không đặt đúng. Hãy thử chạy lệnh dưới dạng '[" env "," env DISPLAY =: 0 gmsh -3 -algo ... "]'. Thực hiện một 'echo $ DISPLAY' trong một thiết bị đầu cuối đồ họa để có được giá trị thích hợp. Nếu máy chủ Jupyter đang chạy trên một tài khoản khác, nó có thể sẽ không hoạt động trừ khi 'xhost +' được phát hành trong một thiết bị đầu cuối (nguy hiểm - vô hiệu hóa xác thực máy chủ hiển thị). Nó sẽ có khả năng không hoạt động chút nào nếu Jupyter đang chạy trên một máy chủ khác. –

Trả lời

1

Có vẻ như nguyên nhân chính là biến môi trường $DISPLAY không được đặt.

trước tiên hãy đảm bảo rằng $DISPLAY được đặt khi máy tính xách tay Jupyter của bạn bắt đầu. bạn cũng có thể phải chuyển hướng mpirun để xuất nó sang tất cả các nhiệm vụ của MPI.

bắt đầu từ Open MPI 3.0.0, bạn có thể đạt được điều này với export OMPI_MCA_mca_base_env_list=DISPLAY trước khi bắt đầu máy tính xách tay của bạn Jupyter

By the way, nên ứng dụng của bạn cần phải mở màn hình X? Nếu nó không làm bất kỳ đồ họa, sau đó nó có thể được điều chỉnh để hoạt động chính xác khi không có màn hình hiển thị.

[PHỤ LỤC]

Một khả năng khác là gmsh nghĩ một màn hình có sẵn từ DISPLAY được thiết lập, vì vậy nó sẽ cố gắng để mở nó và thất bại. Bạn có thể thử bỏ đặt biến môi trường này, và xem cách mọi thứ đi, cả hai đều từ dòng lệnh (ví dụ tương tác mode) và thông qua máy tính xách tay (ví dụ batch mode)

Các vấn đề liên quan