Building Paraview through spack

Has anyone ever installed paraview for off-screen GPU rendering through spack?
I’d love to learn how to do that and was unable to find documentation for the build parameters,
because

All I found was

1 Like

Sorry, I was going to comment, however my experience is with osmesa rendring, not off-screen GPU rendering.

I know we’ve been working on it but only for the new spack concretizer.
@Chuck Atkins What is the status of that work?

I have also been trying to build 5.11 with spack for Cray systems, where no X windows is available. My current cmake flags (working and already installed in production) use, for GPU systems

-DVTK_OPENGL_HAS_EGL=ON -DVTK_USE_X=OFF 

or for nodes without GPUs

-DVTK_OPENGL_HAS_OSMESA=ON -DVTK_USE_X=OFF -DOPENGL_gl_LIBRARY= -DOPENGL_glu_LIBRARY= 

Now the current paraview package on the spack repo does not include any VTK_OPENGL_HAS_EGL option. Is that in the works?

Currently Spack does not support the EGL frontend. This is something that has been asked for a couple of times but required changes to how Spack handled OpenGL frontend/backend. These changes have started, but adding EGL support requires additional work to get it working correctly across numerous packages.

A spec you could try that I have used before, it is assuming that you are only building ParaView and nothing else.

spack install "paraview +osmesa ~qt 
  ^mesa +osmesa +llvm
    ^llvm ~clang ~flang ~lldb ~lld ~libcxx ~gold +llvm_dylib"

The best that is currently available is OSMesa. If you use this backend you will also want to specify mesa +osmesa +llvm. The LLVM extensions provide needed acceleration to make CPU rendering tolerable.

To help speed up the LLVM build, you should turn off most of the stuff it tries to provide. I have used llvm ~clang ~flang ~lldb ~lld ~libcxx ~gold +llvm_dylib

Hi Ryan, I know I have succeeded with your tips in the past but this time on 5.13.1 I am getting

spack install "paraview +osmesa ~qt 
  ^mesa +osmesa +llvm
    ^llvm ~clang ~flang ~lldb ~lld ~libcxx ~gold +llvm_dylib"
==> Error: No such variant {'osmesa'} for spec: 'paraview+osmesa~qt ^llvm~clang~flang~gold~libcxx~lld~lldb+llvm_dylib ^mesa+llvm+osmesa

I am trying this is sub-steps as well

spack install mesa +osmesa ~qt
==> Error: No such variant {'qt'} for spec: 'mesa+osmesa~qt'

but one step lower does work

spack install mesa +osmesa

succeeds but it looks like the paraview through spack does not support mesa???

spack info paraview
CMakePackage:   paraview

Description:
    ParaView is an open-source, multi-platform data analysis and
    visualization application. This package includes the Catalyst in-situ
    library for versions 5.7 and greater, otherwise use the catalyst
    package.

Homepage: https://www.paraview.org

Preferred version:  
    5.13.1    http://www.paraview.org/files/v5.13/ParaView-v5.13.1.tar.xz

Safe versions:  
    master    [git] https://gitlab.kitware.com/paraview/paraview.git on branch master
    5.13.1    http://www.paraview.org/files/v5.13/ParaView-v5.13.1.tar.xz
    5.13.0    http://www.paraview.org/files/v5.13/ParaView-v5.13.0.tar.xz
    5.12.1    http://www.paraview.org/files/v5.12/ParaView-v5.12.1.tar.xz
    5.12.0    http://www.paraview.org/files/v5.12/ParaView-v5.12.0.tar.xz
    5.11.2    http://www.paraview.org/files/v5.11/ParaView-v5.11.2.tar.xz
    5.11.1    http://www.paraview.org/files/v5.11/ParaView-v5.11.1.tar.xz
    5.11.0    http://www.paraview.org/files/v5.11/ParaView-v5.11.0.tar.xz
    5.10.1    http://www.paraview.org/files/v5.10/ParaView-v5.10.1.tar.xz
    5.10.0    http://www.paraview.org/files/v5.10/ParaView-v5.10.0.tar.xz
    5.9.1     http://www.paraview.org/files/v5.9/ParaView-v5.9.1.tar.xz
    5.9.0     http://www.paraview.org/files/v5.9/ParaView-v5.9.0.tar.xz
    5.8.1     http://www.paraview.org/files/v5.8/ParaView-v5.8.1.tar.xz
    5.8.0     http://www.paraview.org/files/v5.8/ParaView-v5.8.0.tar.xz
    5.7.0     http://www.paraview.org/files/v5.7/ParaView-v5.7.0.tar.xz
    5.6.2     http://www.paraview.org/files/v5.6/ParaView-v5.6.2.tar.xz
    5.6.0     http://www.paraview.org/files/v5.6/ParaView-v5.6.0.tar.gz
    5.5.2     http://www.paraview.org/files/v5.5/ParaView-v5.5.2.tar.gz
    5.5.1     http://www.paraview.org/files/v5.5/ParaView-v5.5.1.tar.gz
    5.5.0     http://www.paraview.org/files/v5.5/ParaView-v5.5.0.tar.gz
    5.4.1     http://www.paraview.org/files/v5.4/ParaView-v5.4.1.tar.gz
    5.4.0     http://www.paraview.org/files/v5.4/ParaView-v5.4.0.tar.gz
    5.3.0     http://www.paraview.org/files/v5.3/ParaView-v5.3.0.tar.gz
    5.2.0     http://www.paraview.org/files/v5.2/ParaView-v5.2.0.tar.gz
    5.1.2     http://www.paraview.org/files/v5.1/ParaView-v5.1.2.tar.gz
    5.0.1     http://www.paraview.org/files/v5.0/ParaView-v5.0.1-source.tar.gz
    4.4.0     http://www.paraview.org/files/v4.4/ParaView-v4.4.0-source.tar.gz

Deprecated versions:  
    None

Variants:
    advanced_debug [false]           false, true
        Enable all other debug flags beside build_type, such as VTK_DEBUG_LEAK
    build_edition [canonical]        canonical, catalyst, catalyst_rendering,
                                     core, rendering
        Build editions include only certain modules. Editions are listed in
        decreasing order of size.
    build_system [cmake]             cmake
        Build systems supported by the package
    cdi [false]                      false, true
        Enable CDI support
    cuda [false]                     false, true
        Build with CUDA
    development_files [true]         false, true
        Install include files for Catalyst or plugins support
    examples [false]                 false, true
        Build examples
    eyedomelighting [false]          false, true
        Enable Eye Dome Lighting feature
    fortran [false]                  false, true
        Enable Fortran support
    hdf5 [false]                     false, true
        Use external HDF5
    kits [true]                      false, true
        Use module kits
    mpi [true]                       false, true
        Enable MPI support
    nvindex [false]                  false, true
        Enable the pvNVIDIAIndeX plugin
    opengl2 [true]                   false, true
        Enable OpenGL2 backend
    pagosa [false]                   false, true
        Build the pagosa adaptor
    qt [false]                       false, true
        Enable Qt (gui) support
    raytracing [false]               false, true
        Enable Raytracing support
    rocm [false]                     false, true
        Enable ROCm support
    shared [true]                    false, true
        Builds a shared version of the library
    tbb [false]                      false, true
        Enable multi-threaded parallelism with TBB
    use_vtkm [default]               default, off, on
        Build VTK-m with ParaView by setting PARAVIEW_USE_VTKM=ON,OFF.
        "default" lets the build_edition make the decision. "on" or "off" will
        always override the build_edition.
    visitbridge [false]              false, true
        Enable VisItBridge support

    when +rocm
      amdgpu_target [none]           none, gfx1010, gfx1011, gfx1012, gfx1013,
                                     gfx1030, gfx1031, gfx1032, gfx1033,
                                     gfx1034, gfx1035, gfx1036, gfx1100,
                                     gfx1101, gfx1102, gfx1103, gfx701,
                                     gfx801, gfx802, gfx803, gfx900,
                                     gfx900:xnack-, gfx902, gfx904, gfx906,
                                     gfx906:xnack-, gfx908, gfx908:xnack-,
                                     gfx909, gfx90a, gfx90a:xnack+,
                                     gfx90a:xnack-, gfx90c, gfx940, gfx941,
                                     gfx942
          AMD GPU architecture

    when +cuda
      cuda_arch [none]               none, 10, 11, 12, 13, 20, 21, 30, 32, 35,
                                     37, 50, 52, 53, 60, 61, 62, 70, 72, 75,
                                     80, 86, 87, 89, 90, 90a
          CUDA architecture

    when build_system=cmake
      build_type [Release]           Debug, MinSizeRel, RelWithDebInfo,
                                     Release
          CMake build type
      generator [ninja]              none
          the build system generator to use

    when build_system=cmake ^cmake@3.9:
      ipo [false]                    false, true
          CMake interprocedural optimization

    when @5.6:
      python [false]                 false, true
          Enable Python support

    when @5.8:
      adios2 [false]                 false, true
          Enable ADIOS2 support

    when @5.9:
      fides [false]                  false, true
          Enable Fides support

    when @5.9:+python
      openpmd [false]                false, true
          Enable openPMD support (w/ ADIOS2/HDF5)

    when @5.7:
      catalyst [false]               false, true
          Enable Catalyst 1

    when @5.10:
      libcatalyst [false]            false, true
          Enable Catalyst 2 (libcatalyst) implementation

Build Dependencies:
    adios2             freetype      libcatalyst  netcdf-c          py-mpi4py
    boost              gl            libogg       ninja             py-numpy
    bzip2              glew          libpng       nlohmann-json     python
    cdi                gmake         libtheora    openimagedenoise  python-venv
    cli11              hdf5          libtiff      openpmd-api       qt
    cmake              hip           libxml2      ospray            silo
    cuda               hsa-rocr-dev  libxt        pegtl             tbb
    double-conversion  jpeg          llvm-amdgpu  proj              xz
    eigen              jsoncpp       lz4          protobuf          zlib-api
    expat              kokkos        mpi          pugixml

Link Dependencies:
    adios2             freetype      libcatalyst  mpi               qt
    boost              gl            libogg       netcdf-c          silo
    bzip2              glew          libpng       nlohmann-json     tbb
    cdi                hdf5          libtheora    openimagedenoise  xz
    cli11              hip           libtiff      ospray            zlib-api
    cuda               hsa-rocr-dev  libxml2      pegtl
    double-conversion  jpeg          libxt        proj
    eigen              jsoncpp       llvm-amdgpu  protobuf
    expat              kokkos        lz4          pugixml

Run Dependencies:
    openpmd-api    py-mpi4py  py-pandas  python-venv
    py-matplotlib  py-numpy   python

Licenses: 
    Apache-2.0
```

I have recently done an EGL build of v5.13.1 for our GraceHopper cluster. This is my build command

spack env create paraview-gh-ospray2
spack env activate paraview-gh-ospray2
spack -e paraview-gh-ospray2 add paraview+python+mpi+hdf5+nvindex+tbb+adios2+raytracing+libcatalyst+opengl2+fortran+cdi~qt+shared build_system=cmake build_type=Release ^[v
irtuals=gl] egl
spack -e paraview-gh-ospray2 concretize -f
spack -e paraview-gh-ospray2 install