Postprocessing and Visualization ================================ To visualize the output of SeisSol, you can use ParaView with parallel rendering servers to distribute the workload. This chapter documents how to achieve this on the SuperMUC cluster. For other clusters, the approach might be similar. Login to SuperMUC and start the pvservers ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Connect to the SuperMUC via .. code-block:: bash ssh -Y hw.supermuc.lrz.de -l username If you don't have access please see `https://www.lrz.de/services/compute/supermuc/access_and_login/ `__ for support. To start the pvserver processes on the cluster use a jobscript to specify all the parameters. Here is an example of how this can look like (save as start_paraview.sh): .. code-block:: bash #!/bin/bash ## ### optional: energy policy tags ## ## DO NOT USE environment = COPY_ALL #@ job_type = MPICH #@ class = test #@ node = 2 #### schedule the job to exactly 1 island ########## (more than one will fail) #@ island_count=1 #@ tasks_per_node = 28 #@ wall_clock_limit = 0:30:00 #@ job_name = paraview #@ network.MPI = sn_all,not_shared,us #@ initialdir = $(home)/viz #@ output = job.$(schedd_host).$(jobid).out #@ error = job.$(schedd_host).$(jobid).err #@ queue . /etc/profile . /etc/profile.d/modules.sh ## setup of environment module unload mpi.ibm module load mpi.intel paraview/5.2.0_mesa mpiexec -n 56 pvserver --use-offscreen-rendering It is important to use a ParaView version that has been built with MPI and MESA support because usually the compute nodes in the cluster don't have graphics hardware and we want to use it in parallel. See `https://www.paraview.org/Wiki/Setting_up_a_ParaView_Server `__ for more information. The script can be submitted via .. code-block:: bash llsubmit start_paraview.sh You then have to wait a moment and check for the pvservers to be ready to connect. .. code-block:: bash tail -f job.srv23ib.831086.out Please replace the job name by the one you got when you submitted the job. If you can see something like .. code-block:: bash Waiting for client... Connection URL: cs://i20r01c02s09:11111 Accepting connection(s): i20r01c02s09:11111 your pvserver is up and running and ready to connect. Check your running job with ``llu`` to get the complete ID of the leading compute node your job is running on, e.g. ``i20r01c02s09ib``. Setup remote visualization ~~~~~~~~~~~~~~~~~~~~~~~~~~ If you have already used remote visualization of LRZ you can find a file ``.vis_job.ll`` in your home directory. Open it and modify it to use Intel MPI, i.e. set ``#@ job_type = MPICH`` instead of ``#@ job_type = parallel``. It should look like this: .. code-block:: bash #!/bin/bash ##### job_type = parallel #@ job_type = MPICH #@ class = vis #@ node = 1 #@ tasks_per_node=28 #@ wall_clock_limit = 2:00:00 #@ network.MPI = sn_all,not_shared,us #@ notification=never #@ node_usage = not_shared #@ island_count=1,1 #@ node_topology=island #@ initialdir = . #@ output = vncjob.$(schedd_host).$(jobid).out #@ error = vncjob.$(schedd_host).$(jobid).err #@ energy_policy_tag = testtag #@ minimize_time_to_solution = yes #@ notification=never #@ node_resources = ConsumableMemory(16GB) #@ queue . /etc/profile . /etc/profile.d/modules.sh hostname /opt/TurboVNC/bin/vncserver -geometry 1280x900 sleep 48h Submit the job with ``llsubmit .vis_job.ll``. Use ``cat vncjob.srv23ib.831117.err`` and look for something like this: .. code-block:: bash Desktop 'TurboVNC: vis01:2 (username)' started on display vis01:2 This tells you which node and which display you have to use for connecting with your VNC viewer. Start the VNC viewer with .. code-block:: bash vncviewer -via username@hw.supermuc.lrz.de vis01:2 Now you have a nice GUI on the visualization node. Open a Terminal and load the right modules: .. code-block:: bash module rm poe mpi.ibm module load mpi.intel paraview/5.2.0 unset I_MPI_DEVICE Start the ParaView client with ``vglrun paraview``. Klick on ``connect`` and enter a new server. The host must be the leading compute node from above, in this example, it is ``i20r01c02s09ib``. The port is ``11111``. When you hit the connect button in the menu, you should have access to all the resources you asked for in your job script and are ready to open your data. keyboard issue using vncviewer ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ A common problem is that the keyboard mapping gets all mixed-up after vncviewer windows is deselected. To avoid this problem, add in ~/.vnc/xstart before running vncviewer: .. code-block:: bash export XKL_XMODMAP_DISABLE=1