简体   繁体   中英

How to properly compile ParaView for headless offscreen rendering?

I'm running OpenFOAM on a remote server and basically manage to visualize the results via paraview's pvserver as described here . However upon connection the client yields

Server DISPLAY not accessible!

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

which is basically correct, since the server doesn't run an X server. Performance is of course suboptimal since without remote rendering the entire geometry is transferred (I guess it's almost as bad as directly ssh-copying the files to run purely locally). The server does have a simple onboard GPU (c2:00.0 VGA compatible controller: ASPEED Technology, Inc. ASPEED Graphics Family (rev 41) as per lspci ), using which might be called plan B since at some point I might switch to a server without GPU or an entirely different one. So instead, I had a look at https://kitware.github.io/paraview-docs/latest/cxx/Offscreen.html , and using Arch Linux I obtained its paraview PKGBUILD via asp checkout paraview and appended the following switches to its build() -> cmake instruction:

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

Compilation went without errors (though lots of warnings which I might have to check if they are different with and without those switches), yet pvserver now SEGFAULTs:

$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 ing the existing libGLEW.so as suggested eg here did not change things so now I'm stuck... /usr/lib/libosmesa.so is also present, as is libOpenGL.so , so what am I missing? How can I troubleshoot this properly?

I'm using ArchLinux and the folowing is working perfectly:

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

then connecting from an actual ParaView and rendering something on the server works perfectly.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM