Paraview python использует закадровый рендеринг изображений

Я пытаюсь генерировать изображения с помощью Paraview в неинтерактивном задании PBS на удаленной машине с Linux. Из командной строки, если у меня есть файл с именем cone.py со следующим содержимым

from paraview.simple import *
Cone()
Show()
SaveScreenshot('cone.png')

и я набираю pvpython cone.py в командной строке, затем всплывает окно, показывающее мне изображение конуса, и изображение сохраняется. Я не хочу, чтобы окно всплывало. Это происходит, даже если я использую pvbatch cone.py или pvbatch cone.py --use-offscreen-rendering. Если я попытаюсь запустить этот код из задания PBS, изображение не будет создано (вероятно, потому, что оно не может создать окно) и появится следующее сообщение об ошибке:

ERROR: In /home/kitware/Dashboards/buildbot/paraview-debian4dash-linux-shared-release_qt4_superbuild/source-paraview/VTK/Rendering/OpenGL/vtkXOpenGLRenderWindow.cxx, line 542
vtkXOpenGLRenderWindow (0x139559c0): bad X server connection. DISPLAY=/var/spool/PBS/mom_priv/jobs/1443323.rrlogin.internal.SC: line 8: 21926 Aborted                 pvbatch cone.py

/home/kitware не является допустимым каталогом на моей машине. Любая помощь будет оценена по достоинству.


person Ben Lindsay    schedule 17.12.2015    source источник


Ответы (2)


Похоже, вы используете официальные двоичные файлы ParaView для неинтерактивного задания PBS, у которого нет доступного X-сервера. У вас есть два варианта:

  1. Узнайте у администраторов вашего сайта, есть ли способ запустить X-сервер с вашей работой. Обычно это происходит, если на вашей удаленной машине есть графические процессоры.
  2. Соберите ParaView из исходного кода с поддержкой OSMesa (что означает offscreen-Mesa). Подробнее см. на этой вики-странице. Также обратитесь к этому сообщению в блоге, если вы собираете ParaView 5.0 или более позднюю версию с OpenGL2. бэкенд. Это будет работать в системах без доступного X-сервера.

Вы не можете использовать двоичные файлы, распространяемые на paraview.org, в системах без X. --use-offscreen-rendering по-прежнему требует доступа к X-серверу для создания контекста OpenGL, если только он не построен с поддержкой OSMesa (в этом случае опция командной строки не требуется). Если вам интересно, почему опция командной строки тогда? Это делается для того, чтобы избежать создания всплывающего окна в системах с поддержкой X.

person Utkarsh    schedule 11.02.2016

Если на вашем удаленном компьютере с Linux установлен X, вам необходимо установить переменную DISPLAY перед запуском pvbatch. Если на вашем удаленном компьютере с Linux не установлен X, вам необходимо выполнить сборку с помощью OSMesa (информация и указания здесь).

person andybauer    schedule 17.12.2015