This container bundles ParaView Web and ParaView server with the NVIDIA IndeX plugin for the propose of showcasing the NVIDIA IndeX capabilities.
It can be used in tandem with an official ParaView 5.7.0 client or standalone as ParaView web. The following instructions will describe how to run ParaView Web and pvserver with Docker and Singularity.
The container starts ParaView Web by default.
Note: Only drivers that are compatible with CUDA 10.1 and above are supported.
The Visualizer Web application provides a ParaView-like, experience inside the Web browser. The ParaViewWeb library contains all the components needed to build the UI and the data access (I/O) routines to communicate to the ParaView server using WebSocket connectivity. Visualizer is simply connecting all the components together in a meaningful way.
To start ParaView web in your environment, just run:
nvidia-docker run -p 8080:8080 nvcr.io/nvidia-hpcvis/paraview-index:5.7.0-egl-pvw
The console output should be:
By loading the 'pvNVIDIAIndeX' plugin you have accepted the EULA shipped with it.
If that is not acceptable, please restart the application without loading
the 'pvNVIDIAIndeX' plugin.
-----------------------------------------------------
wslink: Starting factory
Please refer to the Using the UI
section below to continue.
First of all, please make sure you export your NGC credentials to Singularity:
export SINGULARITY_DOCKER_USERNAME='$oauthtoken'
export SINGULARITY_DOCKER_PASSWORD=
Then start the singularity container:
singularity run --nv docker://nvcr.io/nvidia-hpcvis/paraview-index:5.7.0-egl-pvw
The output should be:
By loading the 'pvNVIDIAIndeX' plugin you have accepted the EULA shipped with it.
If that is not acceptable, please restart the application without loading
the 'pvNVIDIAIndeX' plugin.
-----------------------------------------------------
wslink: Starting factory
The image expects to have the data directory bind mounted into /data
. Here's how you can start the image with your own data directory:
singularity run --nv -B /demo/nvindex/data:/data paraview-index_5.7.0-egl-pvw.simg
Once the container is started, navigate to http://HOSTNAME:8080, where hostname is the machine where the container image is running. To check that IndeX works, here are the steps to render a generated volume with Index:
Create a Wavelet: click + sign, select wavelet.
Select scalar RTData: click on droplet dropdown menu, select RTData. (Make sure Solid color is not selected.)
Select representation: click on eye dropdown menu, select NVIDIA IndeX
After a few seconds you should see the volume.
Launching the container in ParaView server mode is also supported. The client requirements are:
Tools
> Manage Plugins ...
> pvNVIDIAIndeX
) before connecting to the server.The only difference between running pvserver and ParaView Web is that the pvserver.sh
wrapper script has to be called when starting the container.
To start pvserver launch the container and call the pvserver script:
nvidia-docker run -p 11111:11111 nvcr.io/nvidia-hpcvis/paraview-index:5.7.0-egl-pvw /pvserver.sh
If launching was successfull you should see:
hostname: Running pvserver.
nvindex: 0.0 API misc info : Loaded "/usr/local/paraview/lib/libdice.so"
nvindex: 0.0 API misc info : DiCE 2019, build 317600.4377, 14 Aug 2019, linux-x86-64
nvindex: 0.0 PVPLN main info : NVIDIA IndeX 2.1 (build 317600.4377, 14 Aug 2019, linux-x86-64-gcc4).
-----------------------------------------------------
By loading the 'pvNVIDIAIndeX' plugin you have accepted the EULA shipped with it.
If that is not acceptable, please restart the application without loading
the 'pvNVIDIAIndeX' plugin.
-----------------------------------------------------
Waiting for client...
Connection URL: cs://hostname:11111
Accepting connection(s): hostname:11111
Now you can connect with the ParaView client to this address.
Simply run:
singularity -s run --nv docker://nvcr.io/nvidia-hpcvis/paraview-index:5.7.0-egl-pvw
The expected output should be similar to the one quoted in the Docker section.
Once pvserver is running, now you can connect to it. You can do that from the UI or from the command line:
paraview --server-url=cs://hostname:11111
ParaView should start succesfully. Now you can create a Wavelet and switch to the NVIDIA IndeX representation to check that everything is in order.
The container expects the data to be located in the /data
directory. That means you will have to bind mount a external data directory inside the container:
- For docker add -v /external/data_dir:/data
to the run command.
- For Singularity add -B /external/data_dir:/data
to the run command.
Q: I have the nvidia container toolkit installed, but nvidia-docker
doesn't exist. What can I do?
A: You have to use the new --gpus all
(or your gpu selection) switch. More details here
Q: Can I use Infiniband?
A: Yes Mellanox Infiniband interfaces are supported. For docker, you will have to add --device=/dev/infiniband --cap-add=IPC_LOCK --net=host
when running the container. For Singularity nothing needs to be added/
Q: Singularity fails running the container image from the docker url. A: Directly using a docker container might not work with older versions of Singularity. In that case you have to take the extra step of manually converting to a .simg file:
singularity build paraview-index_5.7.0-egl-pvw.simg docker://nvcr.io/nvidia-hpcvis/paraview-index:5.7.0-egl-pvw
Q: I get a crash when creating a wavelet in ParaView client while using the pvserver from the container. The logs contain Failed to create 'vtknvindex_representation'
.
A: This usually means that the IndeX plugin has not been loaded on the client side.
Q: The ParaView web container shuts down after 5 minutes of inactivity. A: This behaviour comes from pvpython.
Q: I am having issues starting up singularity when using slurm. I am getting OPAL ERROR: Not initialized in file pmix3x_client.c at line 112
.
A: Add the --mpi=pmi2
parameter to srun
or salloc
.
Q: How can I use my own license for the Paraview IndeX plugin?
A: You can do that by configuring the vendor and secret keys via the environment variables NVINDEX_VENDOR_KEY
and NVINDEX_SECRET_KEY
.
For additional information and multi node support please contact us.