We have a new workstation that we want to post process large datasets with (combo of pvtm and xdfm/hdf5).
This workstation has an RTX2080 and is running Ubuntu 20.04. The only caveat being we want it done in headless mode, without an X session running, and rendering on the GPU (to make sure I am using these terms appropriately, I want to be able to ssh into this machine without X forwarding, and execute a python script that will output images rendered on the GPU, not the CPU). Last bit, our workflow is using v5.8.1 to create the states that we then run in pvpython, so that’s the version I am building.
After scouring these forums, my understanding is here.
I need to build ParaView with the HAS_EGL option ON, and USE_X set to OFF. Ubuntu 20.04 doesn’t have EGL, so we installed them via apt (libegl-dev), we also got the header files from the Khronos website, though it seems that apt provides these headers, as they were found with CMake. We also install OpenGL via apt.
CMake is appeased, and building from source goes smoothly.
However running a known-good python script that outputs an image with the pre-built PV binaries with an active X session, we get the following output:
( 93.379s) [main thread ] vtkEGLRenderWindow.cxx:295 WARN| vtkEGLRenderWindow (0x55e4f4df0b00): EGL device index: 0 is greater than the number
of supported deviced in the system: 0. Using device 0 ...
My interpretation of that is the GPU is not being detected. We do get two ERRs as well
( 93.379s) [main thread ] vtkEGLRenderWindow.cxx:381 ERR| vtkEGLRenderWindow (0x55e4f4df0b00): Only EGL 1.4 and greater allows OpenGL as clien
t API. See eglBindAPI for more information.
( 93.379s) [main thread ]vtkOpenGLRenderWindow.c:565 ERR| vtkEGLRenderWindow (0x55e4f4df0b00): GLEW could not be initialized: Missing GL versi
on
Assuming these warnings and errors are independent, it seems the EGL version installed by apt is not sufficient. But the EGL is provided by MESA v20 which should be v1.5
There are other EGL libraries on the system,
libEGL_mesa.so
libEGL_nvidia.so
However linking to these libraries over libEGL.so results in unknown symbols when compiling.
I’m a little stuck at this point. I have places that I THINK I can go but its not based on any sort of understanding. Should I have the nvidia proprietary drivers installed, currently we have the default nouveau? Build MESA from source and link to those provided libraries?
I am aware of osmesa options, however, we have the GPU…
I have tried compiling ParaView from source with both RENDERING and CANONICAL Editions, as well as from the superbuild with the same results.
Thanks for taking a look at this, and all the development work on PV.