Paraviewweb with NVIDIA Index support errors

Need to use paraviewweb with NVIDIA index support. I’ve followed the guide from ParaView | NVIDIA NGC and downloaded nvcr.io/nvidia-hpcvis/paraview:egl-py3-5.9.0 image.

Launched it by using the command

docker run --gpus all -p 8080:8080 -v C:/Users/user/Documents/pvw-data:/data \
nvcr.io/nvidia-hpcvis/paraview:egl-py3-5.9.0 \
./bin/pvpython share/paraview-5.9/web/visualizer/server/pvw-visualizer.py \
--content share/paraview-5.9/web/visualizer/www/ --port 8080 --data /data

Got the error

(   3.326s) [paraview        ]   vtkShaderProgram.cxx:452    ERR| vtkShaderProgram (0x55ae7531d940): 1: #version 140
2: #ifdef GL_ES
3: #ifdef GL_FRAGMENT_PRECISION_HIGH
4: precision highp float;
5: precision highp sampler2D;
6: precision highp sampler3D;
7: #else
8: precision mediump float;
9: precision mediump sampler2D;
10: precision mediump sampler3D;
11: #endif
12: #define texelFetchBuffer texelFetch
13: #define texture1D texture
14: #define texture2D texture
15: #define texture3D texture
16: #else // GL_ES
17: #define highp
18: #define mediump
19: #define lowp
20: #if __VERSION__ == 150
21: #define texelFetchBuffer texelFetch
22: #define texture1D texture
23: #define texture2D texture
24: #define texture3D texture
25: #endif
26: #endif // GL_ES
27: #define varying in
28:
29: out vec4 fragOutput0;
30:
31: void main(void) {
32:   fragOutput0 = vec4(float(gl_PrimitiveID)/100.0,1.0,1.0,1.0);
33: }

(   3.327s) [paraview        ]   vtkShaderProgram.cxx:453    ERR| vtkShaderProgram (0x55ae7531d940): 0:32(27): error: `gl_PrimitiveID' undeclared
0:32(21): error: cannot construct `float' from a non-numeric data type
0:32(21): error: operands to arithmetic operators must be numeric
0:32(16): error: cannot construct `vec4' from a non-numeric data type

Some datasets can be opened and rendered. But after I’ve enabled Point Gaussian representation on the dataset I got server crash with the error:

35.019s) [paraview        ]   vtkShaderProgram.cxx:468    ERR| vtkShaderProgram (0x55d092aea580): 1: #version 140
2: #ifdef GL_ES
3: #ifdef GL_FRAGMENT_PRECISION_HIGH
4: precision highp float;
5: #else
6: precision mediump float;
7: #endif
8: #else // GL_ES
9: #define highp
10: #define mediump
11: #define lowp
12: #endif // GL_ES
13:
14:
15: /*=========================================================================
16:
17:   Program:   Visualization Toolkit
18:   Module:    vtkPointGaussianGS.glsl
19:
20:   Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
21:   All rights reserved.
22:   See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
23:
24:      This software is distributed WITHOUT ANY WARRANTY; without even
25:      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
26:      PURPOSE.  See the above copyright notice for more information.
27:
28: =========================================================================*/
29: // Template for the polydata mappers geometry shader
30:
31: // primitiveID
32: //VTK::PrimID::Dec
33:
34: // optional color passed in from the vertex shader, vertexColor
35: //VTK::Color::Dec
36:
37: layout(points) in;
38: layout(triangle_strip, max_vertices = 3) out;
39:
40: uniform int cameraParallel;
41: uniform float triangleScale;
42:
43: uniform mat4 VCDCMatrix;
44:
45: in float radiusVCVSOutput[];
46: out vec2 offsetVCGSOutput;
47:
48: // clipping plane vars
49: //VTK::Clip::Dec
50:
51: // picking support
52: //VTK::Picking::Dec
53:
54: void main()
55: {
56:   // the offsets sent down are positioned
57:   // as radius*triangleScale from the center of the
58:   // gaussian.  This has to be consistent
59:   // with the offsets we build into the VBO
60:   float radius = radiusVCVSOutput[0]/triangleScale;
61:
62:   int i = 0;
63:   vec4 offset;
64:
65:   vec4 base1 = vec4(1.0,0.0,0.0,0.0);
66:   vec4 base2 = vec4(0.0,1.0,0.0,0.0);
67:
68:   // make the triangle face the camera
69:   if (cameraParallel == 0)
70:   {
71:     vec3 dir = normalize(-gl_in[0].gl_Position.xyz);
72:     base2 = vec4(normalize(cross(dir,vec3(1.0,0.0,0.0))), 0.0);
73:     base1 = vec4(cross(base2.xyz,dir),0.0);
74:   }
75:
76:   gl_PrimitiveID = gl_PrimitiveIDIn;
77:
78:   //VTK::Clip::Impl
79:
80:   //VTK::Color::Impl
81:
82:   // note 1.73205 = 2.0*cos(30)
83:
84:   offset = vec4(-1.73205*radiusVCVSOutput[0], -radiusVCVSOutput[0], 0.0, 0.0);
85:
86:   //VTK::Picking::Impl
87:
88:   offsetVCGSOutput = offset.xy/radius;
89:   gl_Position = VCDCMatrix * (gl_in[0].gl_Position + offset.x*base1 + offset.y*base2);
90:   EmitVertex();
91:
92:   offset = vec4(1.73205*radiusVCVSOutput[0], -radiusVCVSOutput[0], 0.0, 0.0);
93:   offsetVCGSOutput = offset.xy/radius;
94:   gl_Position = VCDCMatrix * (gl_in[0].gl_Position + offset.x*base1 + offset.y*base2);
95:   EmitVertex();
96:
97:   offset = vec4(0.0, 2.0*radiusVCVSOutput[0], 0.0, 0.0);
98:   offsetVCGSOutput = offset.xy/radius;
99:   gl_Position = VCDCMatrix * (gl_in[0].gl_Position + offset.x*base1 + offset.y*base2);
100:   EmitVertex();
101:
102:   EndPrimitive();
103: }

(  35.019s) [paraview        ]   vtkShaderProgram.cxx:469    ERR| vtkShaderProgram (0x55d092aea580): Could not create shader object.

Loguru caught a signal: SIGSEGV
Stack trace:
[truncated]
123     0x7f736099d2be /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x17c2be) [0x7f736099d2be]
122     0x7f736099b803 /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x17a803) [0x7f736099b803]
121     0x7f73609a3303 _PyEval_EvalFrameDefault + 20163
120     0x7f736099d2be /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x17c2be) [0x7f736099d2be]
119     0x7f736099b803 /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x17a803) [0x7f736099b803]
118     0x7f73609a3303 _PyEval_EvalFrameDefault + 20163
117     0x7f736099d0fc /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x17c0fc) [0x7f736099d0fc]
116     0x7f736099ca0f /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x17ba0f) [0x7f736099ca0f]
115     0x7f73609a2225 _PyEval_EvalFrameDefault + 15845
114     0x7f7360a88768 PyObject_Call + 72
113     0x7f7360a5ce36 /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x23be36) [0x7f7360a5ce36]
112     0x7f736099d4ce PyEval_EvalCodeEx + 62
111     0x7f736099ca0f /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x17ba0f) [0x7f736099ca0f]
110     0x7f73609a2225 _PyEval_EvalFrameDefault + 15845
109     0x7f7360a88768 PyObject_Call + 72
108     0x7f7360a886fd _PyObject_Call_Prepend + 205
107     0x7f7360a87fd1 _PyObject_FastCallDict + 305
106     0x7f736099cc8d _PyFunction_FastCallDict + 317
105     0x7f736099ca0f /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x17ba0f) [0x7f736099ca0f]
104     0x7f73609a2225 _PyEval_EvalFrameDefault + 15845
103     0x7f7360a88768 PyObject_Call + 72
102     0x7f7360a886fd _PyObject_Call_Prepend + 205
101     0x7f7360a87fd1 _PyObject_FastCallDict + 305
100     0x7f736099cc8d _PyFunction_FastCallDict + 317
99      0x7f736099ca0f /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x17ba0f) [0x7f736099ca0f]
98      0x7f73609a2225 _PyEval_EvalFrameDefault + 15845
97      0x7f7360a88768 PyObject_Call + 72
96      0x7f7360a886fd _PyObject_Call_Prepend + 205
95      0x7f7360a87fd1 _PyObject_FastCallDict + 305
94      0x7f736099ce25 _PyFunction_FastCallDict + 725
93      0x7f736099b803 /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x17a803) [0x7f736099b803]
92      0x7f73609a3303 _PyEval_EvalFrameDefault + 20163
91      0x7f736099d2be /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x17c2be) [0x7f736099d2be]
90      0x7f736099b803 /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x17a803) [0x7f736099b803]
89      0x7f73609a3303 _PyEval_EvalFrameDefault + 20163
88      0x7f736099d2be /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x17c2be) [0x7f736099d2be]
87      0x7f736099b803 /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x17a803) [0x7f736099b803]
86      0x7f73609a3303 _PyEval_EvalFrameDefault + 20163
85      0x7f736099d2be /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x17c2be) [0x7f736099d2be]
84      0x7f736099b803 /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x17a803) [0x7f736099b803]
83      0x7f73609a3303 _PyEval_EvalFrameDefault + 20163
82      0x7f736099d2be /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x17c2be) [0x7f736099d2be]
81      0x7f736099b803 /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x17a803) [0x7f736099b803]
80      0x7f73609a3303 _PyEval_EvalFrameDefault + 20163
79      0x7f736099d2be /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x17c2be) [0x7f736099d2be]
78      0x7f736099b803 /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x17a803) [0x7f736099b803]
77      0x7f73609a3303 _PyEval_EvalFrameDefault + 20163
76      0x7f736099d2be /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x17c2be) [0x7f736099d2be]
75      0x7f736099b803 /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x17a803) [0x7f736099b803]
74      0x7f73609a3303 _PyEval_EvalFrameDefault + 20163
73      0x7f736099d2be /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x17c2be) [0x7f736099d2be]
72      0x7f736099b803 /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x17a803) [0x7f736099b803]
71      0x7f73609a3303 _PyEval_EvalFrameDefault + 20163
70      0x7f736099d2be /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x17c2be) [0x7f736099d2be]
69      0x7f736099b803 /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x17a803) [0x7f736099b803]
68      0x7f73609a3303 _PyEval_EvalFrameDefault + 20163
67      0x7f736099d2be /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x17c2be) [0x7f736099d2be]
66      0x7f736099b803 /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x17a803) [0x7f736099b803]
65      0x7f73609a3303 _PyEval_EvalFrameDefault + 20163
64      0x7f736099d2be /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x17c2be) [0x7f736099d2be]
63      0x7f736099b803 /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x17a803) [0x7f736099b803]
62      0x7f73609a3303 _PyEval_EvalFrameDefault + 20163
61      0x7f736099d0fc /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x17c0fc) [0x7f736099d0fc]
60      0x7f736099ca0f /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x17ba0f) [0x7f736099ca0f]
59      0x7f73609a2225 _PyEval_EvalFrameDefault + 15845
58      0x7f7360a88768 PyObject_Call + 72
57      0x7f7360a5ce36 /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x23be36) [0x7f7360a5ce36]
56      0x7f736099d4ce PyEval_EvalCodeEx + 62
55      0x7f736099ca0f /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x17ba0f) [0x7f736099ca0f]
54      0x7f73609a3303 _PyEval_EvalFrameDefault + 20163
53      0x7f736099d1ec /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x17c1ec) [0x7f736099d1ec]
52      0x7f7360a3453b _PyCFunction_FastCallDict + 443
51      0x7f73479afc22 vtkPythonOverload::CallMethod(PyMethodDef*, _object*, _object*) + 1682
50      0x7f73156183df /opt/paraview/lib/python3.6/site-packages/vtkmodules/vtkCommonCore.so(+0x1513df) [0x7f73156183df]
49      0x7f736040aee2 /opt/paraview/lib/libvtkCommonCore-pv5.9.so.1(+0x40dee2) [0x7f736040aee2]
48      0x7f73479ae07b vtkPythonCommand::Execute(vtkObject*, unsigned long, void*) + 411
47      0x7f7360a88768 PyObject_Call + 72
46      0x7f7360a5cd6b /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x23bd6b) [0x7f7360a5cd6b]
45      0x7f736099d4ce PyEval_EvalCodeEx + 62
44      0x7f736099ca0f /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x17ba0f) [0x7f736099ca0f]
43      0x7f73609a3303 _PyEval_EvalFrameDefault + 20163
42      0x7f736099d0fc /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x17c0fc) [0x7f736099d0fc]
41      0x7f736099ca0f /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x17ba0f) [0x7f736099ca0f]
40      0x7f73609a3303 _PyEval_EvalFrameDefault + 20163
39      0x7f736099d2be /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x17c2be) [0x7f736099d2be]
38      0x7f736099b803 /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x17a803) [0x7f736099b803]
37      0x7f73609a3303 _PyEval_EvalFrameDefault + 20163
36      0x7f736099d1ec /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x17c1ec) [0x7f736099d1ec]
35      0x7f7360a3453b _PyCFunction_FastCallDict + 443
34      0x7f730081d7b3 /opt/paraview/lib/python3.6/site-packages/paraview/modules/vtkPVClientWeb.so(+0x27b3) [0x7f730081d7b3]
33      0x7f73006127e1 vtkPVWebApplication::StillRenderToBuffer(vtkSMViewProxy*, unsigned long, int) + 17
32      0x7f730061255f vtkPVWebApplication::StillRender(vtkSMViewProxy*, int) + 383
31      0x7f735d452acb vtkSMViewProxy::CaptureWindow(int, int) + 91
30      0x7f735d4518f6 /opt/paraview/lib/libvtkRemotingViews-pv5.9.so.1(+0x2638f6) [0x7f735d4518f6]
29      0x7f735d4514d7 vtkSMViewProxy::CaptureWindowSingle(int, int) + 71
28      0x7f735d450db2 vtkSMViewProxy::CaptureWindowInternal(int, int) + 754
27      0x7f735d40edcc vtkSMRenderViewProxy::RenderForImageCapture() + 92
26      0x7f735d45083b vtkSMViewProxy::StillRender() + 347
25      0x7f736377bdf5 vtkPVSessionBase::ExecuteStream(unsigned int, vtkClientServerStream const&, bool) + 53
24      0x7f736377cebb vtkPVSessionCore::ExecuteStream(unsigned int, vtkClientServerStream const&, bool) + 75
23      0x7f736377d092 vtkPVSessionCore::ExecuteStreamInternal(vtkClientServerStream const&, bool) + 242
22      0x7f7362ad573d vtkClientServerInterpreter::ProcessStream(vtkClientServerStream const&) + 29
21      0x7f7362ad536e vtkClientServerInterpreter::ProcessOneMessage(vtkClientServerStream const&, int) + 1454
20      0x7f7362ad4afe vtkClientServerInterpreter::ProcessCommandInvoke(vtkClientServerStream const&, int) + 1614
19      0x7f7362ad431e vtkClientServerInterpreter::CallCommandFunction(char const*, vtkObjectBase*, char const*, vtkClientServerStream const&, vtkClientServerStream&) + 478
18      0x7f73640e64e8 vtkPVRenderViewCommand(vtkClientServerInterpreter*, vtkObjectBase*, char const*, vtkClientServerStream const&, vtkClientServerStream&, void*) + 9464
17      0x7f735d3a87ff vtkPVRenderView::StillRender() + 111
16      0x7f735d3b4cc2 vtkPVRenderView::Render(bool, bool) + 2082
15      0x7f734dfc1848 vtkOpenGLRenderWindow::Render() + 184
14      0x7f734b630677 vtkRenderWindow::Render() + 311
13      0x7f734b62fc85 vtkRenderWindow::DoStereoRender() + 213
12      0x7f734b6429bf vtkRendererCollection::Render() + 207
11      0x7f734b63c3f5 vtkRenderer::Render() + 3173
10      0x7f734dfc858f vtkOpenGLRenderer::DeviceRender() + 159
9       0x7f734df0499e vtkCameraPass::Render(vtkRenderState const*) + 622
8       0x7f734dfc6385 vtkOpenGLRenderer::UpdateGeometry(vtkFrameBufferObjectBase*) + 3125
7       0x7f734dfc91aa vtkOpenGLRenderer::DeviceRenderOpaqueGeometry(vtkFrameBufferObjectBase*) + 618
6       0x7f734b639e26 vtkRenderer::DeviceRenderOpaqueGeometry(vtkFrameBufferObjectBase*) + 86
5       0x7f734b57f80f vtkActor::RenderOpaqueGeometry(vtkViewport*) + 719
4       0x7f734df35147 vtkOpenGLActor::Render(vtkRenderer*, vtkMapper*) + 279
3       0x7f734df87b64 vtkOpenGLPointGaussianMapper::Render(vtkRenderer*, vtkActor*) + 772
2       0x7f734df85347 vtkOpenGLPointGaussianMapper::RenderInternal(vtkRenderer*, vtkActor*) + 519
1       0x7f734df9dfe0 vtkOpenGLPolyDataMapper::UpdateShaders(vtkOpenGLHelper&, vtkRenderer*, vtkActor*) + 1248
0       0x7f7365425040 /lib/x86_64-linux-gnu/libc.so.6(+0x3f040) [0x7f7365425040]
(  35.019s) [paraview        ]                       :0     FATL| Signal: SIGSEGV

On the host machine I’ve got RTX 3050 NVIDIA card with 511.65 driver version, which should be enough from the perspective of CUDA support.

What could be the reason for that issue and how to fix it?

The errors seem to be caused by problems in plain OpenGL rather than NVIDIA CUDA or even NVIDIA IndeX. Just a thought, do you have another low-end graphics card in your system that is used for OpenGL by default, and may not meet the min. specs of ParaView?

Another card would be Intel Graphics

Perhaps it is easy to solve by enabling just the NVIDIA GPU for docker using the “–gpus” option with dedicated device IDs?

Alternatively, if you don’t depend on docker, you may take the official ParaView binary build from paraview.org and run the web visualizer from that installation. NVIDIA IndeX and OptiX are included in those default builds published by Kitware.

Steffen, thank you for the help.

I’ve already applied –gpus all setting when launching the docker container. It still does not work for some reason. Moreover, I’ve tried to launch images with EGL provided by Kitware and had no luck.
Here are my other post with details on that.

I think I’ve tried all the options.

Oleh, I think that --gpus all will enable all GPUs including the Intel Graphics, resulting in the wrong GPU being used by ParaView. If you enable just the NVIDIA GPU, assuming it’s the second one, via --gpus device=1 (you may need to play to find the right ID), does it help?

Tried to set specific device (0 or 1) as GPU - still does not work and the error remains the same.

Oleh, turns out the docker --gpus option is only affecting NVIDIA GPUs and does not control Intel Graphics. So my earlier suggestion won’t help here. I’m not familiar with Intel’s support for docker, unfortunately.

But you seem to be running on Windows. So you could run the official ParaView Windows build from Kitware directly without passing through docker. Then it should be easy to enable NVIDIA IndeX for your GPU, and make it work also in ParaView Web Visualizer (may require few extra steps to pre-load the plugin).

Steffen, thank you for advice. But my goal is to be able to launch paraview (paraviewweb) in virtualized environment with GPU support. There is no problem in running it on the Desktop.

To be clear, both NVIDIA IndeX and OptiX will always use the NVIDIA GPU no matter what other GPU might be in the system or assigned to ParaView’s OpenGL engine.

Sure, I’ve got NVIDIA GPU on the host machine (RTX 3050).

Do you get the same error with PV 5.10.1?

NVIDIA does not provide image for 5.10.1 version. 5.9 image is the latest one available.