Compiling without Qt to run a parallel server on a GPU cluster.

Hello, experts and more experienced users.

I aim to get a server-client Paraview setup to work on our cluster, which has GPU nodes, so that the server makes use of GPUs in the nodes. The GPU nodes do not have a desktop environment, and no Qt, so I wish to enable offscreen rendering, with EGL. I have been following https://kitware.github.io/paraview-docs/latest/cxx/Offscreen.html to do so, but I keep running across several issues about which your input would be appreciated.

  1. Following the website’s direction, I tried to configure with cmake:

cmake VTK_USE_X=OFF VTK_OPENGL_HAS_EGL=ON Python3_LIBRARY=/trinity/opt/apps/software/python/Python-3.7.2/libpython3.7m.a Python3_INCLUDE_DIR=/trinity/opt/apps/software/python/Python-3.7.2/Include …/paraview

But somehow the Python variables or their values are not recognized:

– Could NOT find Python3 (missing: Python3_LIBRARY Python3_INCLUDE_DIR Development) (Required is at least version “3.2”)

From what happens in VTK/CMake/patches/3.13/FindPython3.cmake I do not really understand what header files and libraries it is looking for.

  1. I have also tried configuring with ccmake, and turned off all the Qt options, into:

BUILD_TESTING OFF
CMAKE_BUILD_TYPE Debug
CMAKE_INSTALL_PREFIX /trinity/opt/apps/gtecton/paraviewEGL/paraview
PARAVIEW_BUILD_EXAMPLES ON
PARAVIEW_BUILD_QT_GUI OFF
PARAVIEW_BUILD_SHARED_LIBS ON
PARAVIEW_ENABLE_CATALYST ON
PARAVIEW_ENABLE_COMMANDLINE_TO ON
PARAVIEW_ENABLE_FFMPEG OFF
PARAVIEW_ENABLE_NVPIPE OFF
PARAVIEW_ENABLE_OPENTURNS OFF
PARAVIEW_ENABLE_PYTHON ON
PARAVIEW_ENABLE_QT_SUPPORT OFF
PARAVIEW_ENABLE_VISITBRIDGE OFF
PARAVIEW_ENABLE_XDMF3 OFF
PARAVIEW_PLUGIN_ENABLE_Acceler ON
PARAVIEW_PLUGIN_ENABLE_AdiosRe OFF
PARAVIEW_PLUGIN_ENABLE_AdiosRe OFF
PARAVIEW_PLUGIN_ENABLE_Analyze OFF
PARAVIEW_PLUGIN_ENABLE_ArrowGl ON
PARAVIEW_PLUGIN_ENABLE_CDIRead ON
PARAVIEW_PLUGIN_ENABLE_Digital ON
PARAVIEW_PLUGIN_ENABLE_Embossi ON
PARAVIEW_PLUGIN_ENABLE_EyeDome ON
PARAVIEW_PLUGIN_ENABLE_GmshRea OFF
PARAVIEW_PLUGIN_ENABLE_InSituE OFF
PARAVIEW_PLUGIN_ENABLE_Moments ON
PARAVIEW_PLUGIN_ENABLE_MooseXf ON
PARAVIEW_PLUGIN_ENABLE_NetCDFT ON
PARAVIEW_PLUGIN_ENABLE_NonOrth ON
PARAVIEW_PLUGIN_ENABLE_Panoram ON
PARAVIEW_PLUGIN_ENABLE_SLACToo ON
PARAVIEW_PLUGIN_ENABLE_StreamL ON
PARAVIEW_PLUGIN_ENABLE_Streami ON
PARAVIEW_PLUGIN_ENABLE_Surface ON
PARAVIEW_PLUGIN_ENABLE_Thicken ON
PARAVIEW_PLUGIN_ENABLE_VDFRead OFF
PARAVIEW_PLUGIN_ENABLE_pvNVIDI ON
PARAVIEW_PYTHON_VERSION 3
PARAVIEW_USE_MPI ON
PARAVIEW_USE_OSPRAY OFF
PARAVIEW_USE_VTKM OFF
VTK_GROUP_ENABLE_ParaViewCore YES
VTK_GROUP_ENABLE_ParaViewQt NO
VTK_GROUP_ENABLE_ParaViewRende YES
VTK_GROUP_ENABLE_Qt NO
VTK_PYTHON_VERSION 3
VTK_SMP_IMPLEMENTATION_TYPE OpenMP

But configuring with these options gives:

CMake Error at VTK/CMake/vtkModule.cmake:811 (message):
The ParaView::pqApplicationComponents module requires the disabled module
ParaView::pqComponents.
Call Stack (most recent call first):
CMakeLists.txt:519 (vtk_module_scan)

And I see no module pqComponents or anything looking like it in the ccmake list.

Moreover, CMakeLists.txt , line 282, says:

if (PARAVIEW_BUILD_QT_GUI)
list(APPEND paraview_requested_modules
ParaView::Common
ParaView::ServerManagerApplication
ParaView::ServerManagerCore
ParaView::ServerManagerDefault
ParaView::pqApplicationComponents
ParaView::pqComponents
ParaView::pqCore)

So it seems that the option PARAVIEW_BUILD_QT_GUI that I set to ‘OFF’ is not interpreted as such…

What I am doing wrong?

Thank you very much for your help!
Lukas

Hi Lukas,

Are you compiling master ?
If yes, there is a big overhaul ongoing and I would recommend starting over with ParaView 5.6.0 sources.
If no, which version are you using ?

Hi Mathieu,

I am compiling the code I got from
git clone https://gitlab.kitware.com/paraview/paraview.git
following https://www.paraview.org/Wiki/ParaView:Build_And_Install#Download_ParaView_Source_Code

I got it to compile with default and Qt stuff in, just to see if everything else worked, and it showed to be version 5.6.0.

This would indeed give you master, which as I said, is undergoing a big overhaul.
I would recommend running the following command just after the git clone.

git checkout v5.6.0

The correct syntax to create or update a cmake cache entry is -D <var>:<type>=<value>, -D <var>=<value>

so your command line should look like:
cmake -DVTK_USE_X=OFF etc…

use -D in front of all options you want to pass to cmake

Thank you! With both your help combined I could cmake and make.

Not everything works yet. Still a `Server DISPLAY not accessible’, which the EGL should have fixed,

and an unexplained crash,ERROR: In [path]/Core/vtkSMSessionClient.cxx, line 792
vtkSMSessionClient (0x5cde680): Server failed to gather information.

and

ERROR: In [PATH]/System/vtkSocket.cxx, line 567
vtkClientSocket (0x403e000): Socket error in call to send. Broken pipe.

and some issues with fonts:

Fontconfig warning: “/etc/fonts/fonts.conf”, line 5: unknown element “description”
Fontconfig warning: “/etc/fonts/conf.d/10-hinting-slight.conf”, line 4: unknown element “its:rules”
Fontconfig warning: “/etc/fonts/conf.d/10-hinting-slight.conf”, line 5: unknown element “its:translateRule”
Fontconfig error: “/etc/fonts/conf.d/10-hinting-slight.conf”, line 5: invalid attribute ‘translate’
Fontconfig error: “/etc/fonts/conf.d/10-hinting-slight.conf”, line 5: invalid attribute ‘selector’
Fontconfig error: “/etc/fonts/conf.d/10-hinting-slight.conf”, line 6: invalid attribute ‘xmlns:its’
Fontconfig error: “/etc/fonts/conf.d/10-hinting-slight.conf”, line 6: invalid attribute ‘version’

Times many, beause Akira Tagoh commited something in fontsconfig without thinking about the consequences:

https://cgit.freedesktop.org/fontconfig/commit/?id=9a0fcb948fe7346f6c68028b2e54ab600a2a2a6f

but I will puzzle on these myself for a bit, here, and see if i can find the missing pieces. Maybe they are related. The many joys of running a server-client setup of anything is first getting the two to communicate without ripping each other to shreds. :wink:

Thanks again for you help :slight_smile: