Confirming that pvserver runs with OSMesa + OpenSWR driver
Hello there:
I've successfully built and installed the following OSMesa rendering stack (from source) for use on CPU only compute nodes of a small cluster
I've then built Paraview (from source). The pvserver runs on a compute node and we connect to it from a remote Paraview client via forward connection with SSH tunneling.
I am having trouble confirming which driver the pvserver uses for rendering. My understanding is that OSMesa gets compiled with various cpu-based driver options, i.e. soft pipe (classic OSMesa), llvmpipe, and swr.
I would like to ensure that swr (OpenSWR) is being used.
Note that one complicating factor is that the CPU-based compute nodes do not have any X installed and I've compiled only OSMesa (see below). Thus, I cannot compile the GLUT based utility glinfo or gears, which could possibly tell me how the rendering is done.
Finally, while it seems that one can invoke paraview with a switch --mesa-swr-avx2
, I am not sure that can be done with pvserver.
Also, even then, how would I confirm this is which driver is being used?
Thank you. Fabrizio
HARDWARE
Each compute node features two (x2) Intel(R) Xeon(R) CPU E5-2690 v4 @ 2.60GHz for a total of 28 cores. The compute nodes do not have a GPU.
SOFTWARE STACK
Everything is compiled with gcc version 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC) on a Linux 3.10.0-514.el7.x86_64 (Centos 7).
Here is the cpu-based rendering stack
- LLVM 5.0.0
cmake3 -G "Unix Makefiles"
-DCMAKE_BUILD_TYPE=Release
-DLLVM_TARGETS_TO_BUILD=X86
-DLLVM_INSTALL_UTILS=TRUE
-DLLVM_ENABLE_RTTI=TRUE
-DBUILD_SHARED_LIBS=TRUE
-DCMAKE_INSTALL_PREFIX=$INSTALLDIR
../llvm-5.0.0.src
- Mesa3D 17.3.0
Note that the compute nodes do not have any X servers (X11) nor any other OpenGL implementation (e.g. repo based from a yum install)
./configure
--disable-xvmc
--disable-glx
--disable-dri
--with-dri-drivers=
--with-gallium-drivers=swrast,swr
--enable-texture-float
--disable-egl
--disable-gbm
--with-platforms=
--enable-gallium-osmesa
--enable-llvm
--prefix=$INSTALLDIR
- GLU 9.0.0
SITE_MESA_LIB=/path/to/mesa/install/above
PKG_CONFIG_PATH="$SITE_MESA_LIB/pkgconfig"
OSMESA_LIBS="-L$SITE_MESA_LIB -lOSMesa"
./configure --prefix=$INSTALLDIR
--enable-osmesa
--enable-shared
- ParaView 5.4.0
I've configured the basic ParaView build as recommended. I am using OpenMPI 2.1.0 compiled with the system gcc.
The additional OSMesa options are as below:
VTK_USE_X=OFF VTK_USE_OFFSCREEN:BOOL=ON
OPENGL_INCLUDE_DIR=/path/to/mesa/install/above/include OPENGL_gl_LIBRARY:FILEPATH=/path/to/mesa/install/above/lib/libOSMesa.so OPENGL_glu_LIBRARY:FILEPATH=/path/to/glu/install/above/lib/libGLU.so
VTK_OPENGL_HAS_OSMESA:BOOL=ON OSMESA_INCLUDE_DIR:PATH=/path/to/mesa/install/above/include OSMESA_LIBRARY:FILEPATH=/path/to/mesa/install/above/lib/libOSMesa.so
Note that I've set everything to point to the OSMesa install directory.