headless - 如何正确编译 ParaView 以进行 headless (headless)离屏渲染?

标签 headless paraview mesa off-screen osmesa

我在远程服务器上运行 OpenFOAM,基本上设法通过 paraview 的 pvserver 可视化结果 as described here .然而,在连接后,客户端产生

Server DISPLAY not accessible!

Display is not accessible on the server side. Remote rendering will be disabled.

这基本上是正确的,因为服务器不运行 X 服务器。性能当然是次优的,因为没有远程渲染整个几何体被传输(我猜它几乎和直接 ssh 复制文件以纯本地运行一样糟糕)。服务器确实有一个简单的板载 GPU(c2:00.0 VGA 兼容 Controller :ASPEED Technology, Inc. ASPEED Graphics Family (rev 41) 根据 lspci),使用它可能称为计划 B,因为在某些时候我可能会切换到没有 GPU 的服务器或完全不同的服务器。所以相反,我看了一下 https://kitware.github.io/paraview-docs/latest/cxx/Offscreen.html ,并使用 Arch Linux 我获得了 its paraview PKGBUILD通过asp checkout paraview并将以下开关附加到其 build() -> cmake 指令中:

        -DVTK_OPENGL_HAS_OSMESA=ON \
        -DVTK_USE_X=OFF \
        -DPARAVIEW_USE_QT=OFF \

编译没有错误(虽然有很多警告,我可能必须检查它们在有和没有这些开关的情况下是否不同),但是 pvserver 现在出现 SEGFAULT:

$LD_PRELOAD=/usrlib/libGLEW.so pvserver --force-offscreen-rendering
Waiting for client...
Connection URL: cs://xxx:11111
Accepting connection(s): xxx:11111
Client connected.
(  52.668s) [pvserver        ]vtkOpenGLRenderWindow.c:565    ERR| vtkOSOpenGLRenderWindow (0x55f0fa7f4b60): GLEW could not be initialized: Missing GL version

Loguru caught a signal: SIGSEGV
Stack trace:
0       0x7f53ca2c8f80 /usr/bin/../lib/libc.so.6(+0x3cf80) [0x7f53ca2c8f80]
(  52.669s) [pvserver        ]                       :0     FATL| Signal: SIGSEGV
Segmentation fault (core dumped)

LD_PRELOAD按照建议对现有的 libGLEW.so 进行处理,例如here没有改变所以现在我被卡住了...... ?如何正确解决此问题?

最佳答案

我正在使用 ArchLinux,并且以下工作正常:

git clone https://gitlab.kitware.com/paraview/paraview.git --recursive
mkdir build
cd build
cmake -GNinja -DVTK_OPENGL_HAS_OSMESA=ON  -DVTK_USE_X=OFF -DPARAVIEW_USE_QT=OFF ../paraview
ninja
./bin/pvserver

然后从一个实际的 ParaView 连接并在服务器上渲染一些东西就可以完美地工作了。

关于headless - 如何正确编译 ParaView 以进行 headless (headless)离屏渲染?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66489104/

相关文章:

visual-studio - 以编程方式切换 MESA 软件渲染器的 dll

java - 需要什么才能将 JPanel 和 JButton 转换为与 IOS 一起使用,以避免 “headless” 错误?

kubectl - 为什么端口转发到 headless (headless)服务总是路由到同一个 pod?

c++ - 如何将时间从 C++ 代码包含到用于 paraView 动画的 ASCII vtk 文件

Paraview:表示为向量场

opengl - Qt 5.5.1 : Cannot find -lGL

opengl - 安装了新台面,但 glxinfo 显示旧台面

java - 带有 MAC OS 的 java.awt.Robot 类中的 Headless 环境错误

c# - Chrome Driver Headless 为我们节省了 html 和资源

c++ - 写入二进制 VTK 文件时出错