Errors with paraview-mesa in ParaView 5.7.0-RC2 for linux both superbuild built versions and with downloaded binary version

Hi,

I am having difficulty with paraview-mesa and the mesa superbuild version for ParaView 5.7.0-RC2, the installed directory for the superbuild version does not match the released binaries for 5.7.0-RC2 for linux.

The superbuild built version is not creating a mesa sub-directory in the installed lib directory.
and when

paraview-mesa paraview --backend llvmpipe
or
paraview-mesa paraview --backend swr

is run it cannot find the mesa version and instead is using the nvidia driver version and reporting the errors

./paraview-mesa paraview --backend llvmpipe
( 0.552s) [paraview ]vtkOpenGLRenderWindow.c:761 ERR| vtkXOpenGLRenderWindow (0x4043c10): Unable to find a valid OpenGL 3.2 or later implementation. Please update your video card driver to the latest version. If you are using Mesa please make sure you have version 11.2 or later and make sure your driver in Mesa supports OpenGL 3.2 such as llvmpipe or openswr. If you are on windows and using Microsoft remote desktop note that it only supports OpenGL 3.2 with nvidia quadro cards. You can use other remoting software such as nomachine to avoid this issue.

./paraview-mesa paraview --backend swr
( 0.497s) [paraview ]vtkOpenGLRenderWindow.c:761 ERR| vtkXOpenGLRenderWindow (0x31780e0): Unable to find a valid OpenGL 3.2 or later implementation. Please update your video card driver to the latest version. If you are using Mesa please make sure you have version 11.2 or later and make sure your driver in Mesa supports OpenGL 3.2 such as llvmpipe or openswr. If you are on windows and using Microsoft remote desktop note that it only supports OpenGL 3.2 with nvidia quadro cards. You can use other remoting software such as nomachine to avoid this issue.

This is on a RHEL 7.7 system with glxinfo reporting

OpenGL renderer string: Quadro M4000/PCIe/SSE2
OpenGL version string: 3.0.0 NVIDIA 418.43

The downloaded binaries do not have this particular issue and are finding the llvmpipe and swr
mesa backends included with the binaries in the mesa sub-directory.

But even with the downloaded binaries I am still getting the following errors.

with llvmpipe I get the error

Error: Unsupported device
WARNING: Failed to initialize RTW VisRTX backend.

while for swr I get the slightly different error

SWR detected AVX2 instruction support (using: libswrAVX2.so).
Error: Unsupported device
WARNING: Failed to initialize RTW VisRTX backend.

yet the rendering still seems to be working in both cases

Any ideas as to the causes of these issues?

Thanks,

Joe Hennessey

I am having difficulty with paraview-mesa and the mesa superbuild version for ParaView 5.7.0-RC2, the installed directory for the superbuild version does not match the released binaries for 5.7.0-RC2 for linux.

The mesa subdirectory is created by the packaging step (ctest -R cpack-paraview). The install directory in the superbuild is just a staging place for all the packages to “gather” in before the packaging goes and puts them all in the right place. For Linux, that’s mostly a no-op, but there are details that are happening there (the mesa relocation being one of them).

If that is all OK, what is output if you add --print to paraview-mesa? Is there anything interesting if run under a LD_DEBUG=libs,files environment setting?

Error: Unsupported device
WARNING: Failed to initialize RTW VisRTX backend.

This seems to be something VisRTX-related (though apparently harmless). @Dave_DeMarle? The AVX2 message is purely informational (it’s saying what CPU features it detected that it can use).

Ben,

Here is the superbuild version output with the llvmpipe and swr options,
that fails to render properly

./paraview-mesa paraview --backend llvmpipe --print
LD_LIBRARY_PATH=/home/joeh/pv-test/5.7.0-RC2_mesa/bin/…/lib
GALLIUM_DRIVER=llvmpipe
( 0.548s) [paraview ]vtkOpenGLRenderWindow.c:761 ERR| vtkXOpenGLRenderWindow (0x3e3b8c0): Unable to find a valid OpenGL 3.2 or later implementation. Please update your video card driver to the latest version. If you are using Mesa please make sure you have version 11.2 or later and make sure your driver in Mesa supports OpenGL 3.2 such as llvmpipe or openswr. If you are on windows and using Microsoft remote desktop note that it only supports OpenGL 3.2 with nvidia quadro cards. You can use other remoting software such as nomachine to avoid this issue.

/paraview-mesa paraview --backend swr --print
LD_LIBRARY_PATH=/home/joeh/pv-test/5.7.0-RC2_mesa/bin/…/lib
GALLIUM_DRIVER=swr
( 0.532s) [paraview ]vtkOpenGLRenderWindow.c:761 ERR| vtkXOpenGLRenderWindow (0x34e3c20): Unable to find a valid OpenGL 3.2 or later implementation. Please update your video card driver to the latest version. If you are using Mesa please make sure you have version 11.2 or later and make sure your driver in Mesa supports OpenGL 3.2 such as llvmpipe or openswr. If you are on windows and using Microsoft remote desktop note that it only supports OpenGL 3.2 with nvidia quadro cards. You can use other remoting software such as nomachine to avoid this issue.

And, here is the binary from kitware with the llvmpipe and swr options,
this version again works but complains.

./paraview-mesa paraview --backend llvmpipe --print
LD_LIBRARY_PATH=/home/joeh/Downloads/paraview_test/ParaView-5.7.0-RC2-MPI-Linux-Python2.7-64bit/bin/…/lib/mesa
GALLIUM_DRIVER=llvmpipe
Error: Unsupported device
WARNING: Failed to initialize RTW VisRTX backend.

./paraview-mesa paraview --backend swr --print
LD_LIBRARY_PATH=/home/joeh/Downloads/paraview_test/ParaView-5.7.0-RC2-MPI-Linux-Python2.7-64bit/bin/…/lib/mesa
GALLIUM_DRIVER=swr
SWR detected AVX2 instruction support (using: libswrAVX2.so).
Error: Unsupported device
WARNING: Failed to initialize RTW VisRTX backend.
Error: Unsupported device

Thanks,

Joe

This tells me that your superbuild was built without mesa. Looking at the logic, it looks like PARAVIEW_DEFAULT_SYSTEM_GL=ON is passed to our libraries (which makes them default to the system GL, but ship Mesa in another directory). With that OFF (the default when mesa is built), we just add the libGL to the directory and use it via RPATH settings. Does it work when not using paraview-mesa in that case? Is it using Mesa then?

@chuckatkins

Ben,

The superbuild built Mesa, and mesa is in the lib directory of ParaView, but not in a mesa subdirectory
like the ParaView binaries have mesa in.

It does not work when ParaView is called directly and ParaView does not seem to call mesa.
It produces the same error and tries to use the nvidia version of GL
instead of the mesa version and then fails as the nvidia version on this system
only supports OpenGL 3.0.0 when it needs a minimum of OpenGL 3.2.0
to function.

Thanks,

Joe

Ben,

I ran paraview with LD_DEBUG=libs,files and got this output,
I have inserted the interersting sections, it seems to start using the wrong libraries
starting here where libGLX is loading the nvidia driver instead of the internal mesa libraries.

 15973:	file=libGLX_nvidia.so.0 [0];  dynamically loaded by /lib64/libGLX.so.0 [0]
 15973:	find library=libGLX_nvidia.so.0 [0]; searching
 15973:	 search path=/home/joeh/pv-test/5.7.0-RC2_mesa/bin/../lib:/home/joeh/PV/Build_5.7.0-RC2_mesa/install/lib:/home/joeh/PV/Build_5.7.0-RC2_mesa/install/lib64		(RPATH from file /home/joeh/pv-test/5.7.0-RC2_mesa/bin/paraview)
 15973:	  trying file=/home/joeh/pv-test/5.7.0-RC2_mesa/bin/../lib/libGLX_nvidia.so.0
 15973:	  trying file=/home/joeh/PV/Build_5.7.0-RC2_mesa/install/lib/libGLX_nvidia.so.0
 15973:	  trying file=/home/joeh/PV/Build_5.7.0-RC2_mesa/install/lib64/libGLX_nvidia.so.0
 15973:	 search path=/home/joeh/pv-test/5.7.0-RC2_mesa/bin/../lib		(RPATH from file /home/joeh/pv-test/5.7.0-RC2_mesa/bin/paraview)
 15973:	  trying file=/home/joeh/pv-test/5.7.0-RC2_mesa/bin/../lib/libGLX_nvidia.so.0
 15973:	 search cache=/etc/ld.so.cache
 15973:	  trying file=/lib64/libGLX_nvidia.so.0
 15973:	
 15973:	file=libGLX_nvidia.so.0 [0];  generating link map
 15973:	  dynamic: 0x00007fe7b7ca1fa0  base: 0x00007fe7b7990000   size: 0x00000000003188a8
 15973:	    entry: 0x00007fe7b79dcab0  phdr: 0x00007fe7b7990040  phnum:                  4
 15973:	
 15973:	
 15973:	file=libnvidia-tls.so.430.40 [0];  needed by /lib64/libGLX_nvidia.so.0 [0]
 15973:	find library=libnvidia-tls.so.430.40 [0]; searching
 15973:	 search path=/home/joeh/pv-test/5.7.0-RC2_mesa/bin/../lib:/home/joeh/PV/Build_5.7.0-RC2_mesa/install/lib:/home/joeh/PV/Build_5.7.0-RC2_mesa/install/lib64		(RPATH from file /home/joeh/pv-test/5.7.0-RC2_mesa/bin/paraview)
 15973:	  trying file=/home/joeh/pv-test/5.7.0-RC2_mesa/bin/../lib/libnvidia-tls.so.430.40
 15973:	  trying file=/home/joeh/PV/Build_5.7.0-RC2_mesa/install/lib/libnvidia-tls.so.430.40
 15973:	  trying file=/home/joeh/PV/Build_5.7.0-RC2_mesa/install/lib64/libnvidia-tls.so.430.40
 15973:	 search path=/home/joeh/pv-test/5.7.0-RC2_mesa/bin/../lib		(RPATH from file /home/joeh/pv-test/5.7.0-RC2_mesa/bin/paraview)
 15973:	  trying file=/home/joeh/pv-test/5.7.0-RC2_mesa/bin/../lib/libnvidia-tls.so.430.40
 15973:	 search cache=/etc/ld.so.cache
 15973:	  trying file=/lib64/libnvidia-tls.so.430.40
 15973:	
 15973:	file=libnvidia-tls.so.430.40 [0];  generating link map
 15973:	  dynamic: 0x00007fe7b798f0a0  base: 0x00007fe7b778c000   size: 0x0000000000203520
 15973:	    entry: 0x00007fe7b778c9a0  phdr: 0x00007fe7b778c040  phnum:                  6
 15973:	
 15973:	
 15973:	file=libnvidia-glcore.so.430.40 [0];  needed by /lib64/libGLX_nvidia.so.0 [0]
 15973:	find library=libnvidia-glcore.so.430.40 [0]; searching
 15973:	 search path=/home/joeh/pv-test/5.7.0-RC2_mesa/bin/../lib:/home/joeh/PV/Build_5.7.0-RC2_mesa/install/lib:/home/joeh/PV/Build_5.7.0-RC2_mesa/install/lib64		(RPATH from file /home/joeh/pv-test/5.7.0-RC2_mesa/bin/paraview)
 15973:	  trying file=/home/joeh/pv-test/5.7.0-RC2_mesa/bin/../lib/libnvidia-glcore.so.430.40
 15973:	  trying file=/home/joeh/PV/Build_5.7.0-RC2_mesa/install/lib/libnvidia-glcore.so.430.40
 15973:	  trying file=/home/joeh/PV/Build_5.7.0-RC2_mesa/install/lib64/libnvidia-glcore.so.430.40
 15973:	 search path=/home/joeh/pv-test/5.7.0-RC2_mesa/bin/../lib		(RPATH from file /home/joeh/pv-test/5.7.0-RC2_mesa/bin/paraview)
 15973:	  trying file=/home/joeh/pv-test/5.7.0-RC2_mesa/bin/../lib/libnvidia-glcore.so.430.40
 15973:	 search cache=/etc/ld.so.cache
 15973:	  trying file=/lib64/libnvidia-glcore.so.430.40
 15973:	
 15973:	file=libnvidia-glcore.so.430.40 [0];  generating link map
 15973:	  dynamic: 0x00007fe7b716a2f0  base: 0x00007fe7b5523000   size: 0x0000000001cd48e0
 15973:	    entry: 0x00007fe7b579c0e0  phdr: 0x00007fe7b5523040  phnum:                  6
 15973:	
 15973:	
 15973:	calling init: /lib64/libnvidia-glcore.so.430.40
 15973:	
 15973:	
 15973:	calling init: /lib64/libGLX_nvidia.so.0
 15973:	
 15973:	opening file=/lib64/libc.so.6 [0]; direct_opencount=1
 15973:	
 15973:	
 15973:	closing file=/lib64/libc.so.6; direct_opencount=0
 15973:	/lib64/libnvidia-glcore.so.430.40: error: symbol lookup error: undefined symbol: ErrorF (fatal)
 15973:	opening file= [0]; direct_opencount=2
 15973:	
 15973:	
 15973:	closing file=; direct_opencount=1
 15973:	opening file= [0]; direct_opencount=2
 15973:	
 15973:	
 15973:	closing file=; direct_opencount=1
 15973:	opening file=/lib64/libpthread.so.0 [0]; direct_opencount=1
 15973:	
 15973:	/lib64/libpthread.so.0: error: symbol lookup error: undefined symbol: pthread_setname_np, version GLIBC_2.2.5 (fatal)
 15973:	opening file= [0]; direct_opencount=2
 15973:	
 15973:	
 15973:	closing file=; direct_opencount=1
 15973:	opening file= [0]; direct_opencount=2
 15973:	
 15973:	
 15973:	closing file=; direct_opencount=1
 15973:	opening file=/lib64/libGLX_nvidia.so.0 [0]; direct_opencount=1
 15973:	
 15973:	opening file= [0]; direct_opencount=2
 15973:	
 15973:	
 15973:	closing file=; direct_opencount=1
 15973:	opening file= [0]; direct_opencount=2
 15973:	
 15973:	
 15973:	closing file=; direct_opencount=1

Resulting in this error

( 0.533s) [paraview ]vtkOpenGLRenderWindow.c:761 ERR| vtkXOpenGLRenderWindow (0x46aad90): Unable to find a valid OpenGL 3.2 or later implementation. Please update your video card driver to the latest version. If you are using Mesa please make sure you have version 11.2 or later and make sure your driver in Mesa supports OpenGL 3.2 such as llvmpipe or openswr. If you are on windows and using Microsoft remote desktop note that it only supports OpenGL 3.2 with nvidia quadro cards. You can use other remoting software such as nomachine to avoid this issue.

I’m not sure what is looking for that _nvidia library. That seems like the root cause. @chuckatkins Thoughts? We certainly don’t build that, but we might end up linking against it during the build. Is something not finding the right OpenGL setup from the superbuild?

I have just built and tested ParaView 5.7.0-RC3 and the same issue still exists.

I have just built and tested ParaView 5.7.0-RC4 and the same issue still exists.

Is there any information that we can provide to help track down this issue? I believe @cory.quammen has access to the DOD machines that @joeh is trying to build on too if that helps.

@joeh, since I am joining this conversation anew, I want to clarify a few things:

  1. Are paraView.org binaries working as expected, even with mesa? The errors you originally reported ( Error: Unsupported device, WARNING: Failed to initialize RTW VisRTX backend.) should have been fixed in RC4. Also they are safe to ignore, they were really internally debug messages warning about OptiX backend being unavailable.

  2. can you attach/email your CMakeCache.txt for the ParaView-Superbuild?

My guess is GLVND. See the GLX dispatching section at https://github.com/NVIDIA/libglvnd.

@joeh is GLVND installed on that system? If so, then that isn’t necessarily indicative of a linking issue in the build.

The seem to be two basic problems still.

  1. The superbuild will not create a mesa subdirectory in lib to match your binary distribution.
  2. While your binary distribution will correctly use mesa when run by
    ./paraview-mesa paraview --backend llvmpipe --print
    the OpenGL Render in the about box shows
    llvmpipe (LLVM 7.0, 256 bits)
    as it should.
    the superbuild version when run with the same parameters,
    ./paraview-mesa paraview --backend llvmpipe --print
    does not use llvmpipe as it should and is instead attempting to use the non-existant nvidia drivers
    and reports these errors below. It is not finding the Mesa version of OpenGL.
(   1.854s) [paraview        ]vtkOpenGLRenderWindow.c:761    ERR| vtkXOpenGLRenderWindow (0x1162f30): Unable to find a valid OpenGL 3.2 or later implementation. Please update your video card driver to the latest version. If you are using Mesa please make sure you have version 11.2 or later and make sure your driver in Mesa supports OpenGL 3.2 such as llvmpipe or openswr. If you are on windows and using Microsoft remote desktop note that it only supports OpenGL 3.2 with nvidia quadro cards. You can use other remoting software such as nomachine to avoid this issue.
(   3.881s) [paraview        ]vtkOpenGLRenderWindow.c:761    ERR| vtkXOpenGLRenderWindow (0x3c50c30): Unable to find a valid OpenGL 3.2 or later implementation. Please update your video card driver to the latest version. If you are using Mesa please make sure you have version 11.2 or later and make sure your driver in Mesa supports OpenGL 3.2 such as llvmpipe or openswr. If you are on windows and using Microsoft remote desktop note that it only supports OpenGL 3.2 with nvidia quadro cards. You can use other remoting software such as nomachine to avoid this issue.

Cory,

Should GLVND be being built as part of the superbuild process?
Theses nodes (login nodes) do not have GPU’s so they do not have
the nvidia drivers installed which is why I need to use Mesa.

Thanks,

Joe

@joeh, okay, seems like there’s just 1 problem…the superbuild does not put mesa libs under sub directory. The second issue is simply a side effect of 1. Can you email me your CMakeCache.txt please?

More specifically, what is the value for PARAVIEW_DEFAULT_SYSTEM_GL? As @ben.boeckel mentioned in an earlier post, that needs to be set to TRUE for the mesa-sub dirs to be created.

No, GLVND is a library that would be installed on the system independently from building ParaView or installation. If the node on which you are running doesn’t have NVIDIA drivers, I don’t know why libGLX is trying to load those drivers.

CLASSIFICATION: UNCLASSIFIED

Utkarsh,

Here are both my paraview superbuild cache, and

the paraview superbuild’s internal paraview cache as well.

Thanks,

Joe

image001.jpg

CMakeCache_superbuild.txt (50.3 KB)

CMakeCache_paraview.txt (321 KB)

looks like PARAVIEW_DEFAULT_SYSTEM_GL is indeed OFF. Mind setting it to ON? That should address the missing mesa-subdir issue. That will also ensure that when you run ./paraview-mesa paraview --backend llvmpipe, it will load the mesa libs from the sub-directory.

PARAVIEW_DEFAULT_SYSTEM_GL=OFF should in theory be expected to work too. But looks like there’s some bug with that and can be tracked down independently later on (when @ben.boeckel is back online).

Utkarsh,

I tried setting that variable in my curent build and it did create the mesa subdirectory under lib and put the libraries there, it still did not use them though. I am trying again now, with a clean build to see if that helps. This will take a while to finish compilation. I will let you know once it is done. (probably tomorrow)

Thanks,

Joe