Skip to content
Snippets Groups Projects
Commit d2d096bc authored by Petr Strakos's avatar Petr Strakos
Browse files

code supplied

parent ba95099e
No related branches found
No related tags found
6 merge requests!368Update prace.md to document the change from qprace to qprod as the default...,!367Update prace.md to document the change from qprace to qprod as the default...,!366Update prace.md to document the change from qprace to qprod as the default...,!323extended-acls-storage-section,!229In situ,!228In situ
...@@ -2,24 +2,53 @@ ...@@ -2,24 +2,53 @@
## Introduction ## Introduction
In situ visualization is a possibility how to visualize your data during the computation performed on multiple nodes of a supercomputer. It is a visualization pipeline that can be used on our [Salomon][1] cluster. The pipeline is based on [ParaView Catalyst][2] library. In situ visualization is a possibility how to visualize your data while your computation is progressing on multiple nodes of a cluster. It is a visualization pipeline that can be used on our [Salomon][salomon_web] supercomputer. The pipeline is based on [ParaView Catalyst][catalyst_web] library.
TEST To leverage the possibilities of the in situ visualization by Catalyst library, you have to write an adaptor code that will use the actual data from your simulation and process them in the way they can be passed to ParaView for visualization. We provide a simple example of such simulator/adaptor code that bind together to provide the in situ visualization.
[ParaView][a] is an open-source, multi-platform data analysis and visualization application. ParaView users can quickly build visualizations to analyze their data using qualitative and quantitative techniques. The data exploration can be done interactively in 3D or programmatically using ParaView's batch processing capabilities. Detailed description of the Catalyst API can be found [here][catalyst_guide]. We restrict ourselves to provide more of an overall description of the code parts together with building description, and startup description to run it all on the cluster.
ParaView was developed to analyze extremely large datasets using distributed memory computing resources. It can be run on supercomputers to analyze datasets of exascale size as well as on laptops for smaller data.
## Installed Version ## Installed Version
The Catalyst library is part of the ParaView module in version 5.6.0. It has been compiled with intel/2017a and installed on the Salomon cluster. The Catalyst library is part of the ParaView module. More about ParaView can be found [here][paraview_web]. We use version 5.6.0. It has been compiled with intel/2017a and installed on the Salomon cluster.
## Usage ## Usage
On the clusters, ParaView is to be used in client-server mode. A parallel ParaView server is launched on compute nodes by the user, and client is launched on your desktop PC to control and view the visualization. Download ParaView client application for your OS [here][b]. All code concerning the simulator/adaptor are available to download from [here][code]. It is a package that contains following files: CMakeLists.txt, FEAdaptor.h, FEAdaptor.cxx, FEDataStructures.h, FEDataStructures.cxx, FEDriver.cxx and feslicescript.py.
First unpack the [code][code]. You can do it by
```console
$ tar xvf package_name
```
Use CMake to manage the build process but first load the appropriate modules (CMake, compiler, ParaView) by
```console
$ ml CMake intel/2017a ParaView/5.6.0-intel-2017a-mpi
```
```console
$ mkdir build
$ cd build
$ cmake ../
```
Now you can build the simulator/adaptor code using make
```console
$ make
```
It will generate the CxxFullExampleAdaptor executable file. This can be later run together with ParaView and provide the in situ visualization.
## Code explanation
mpirun -n 2 ./CxxFullExample 30 30 30 ../SampleScripts/feslicescript.py
!!!Warning
Your version must match the version number installed on the cluster.
### Launching Server ### Launching Server
...@@ -87,8 +116,7 @@ You can now use Parallel ParaView. ...@@ -87,8 +116,7 @@ You can now use Parallel ParaView.
Remember to close the interactive session after you finish working with ParaView server, as it will remain launched even after your client is disconnected and will continue to consume resources. Remember to close the interactive session after you finish working with ParaView server, as it will remain launched even after your client is disconnected and will continue to consume resources.
[1]: https://docs.it4i.cz/salomon/introduction/ [salomon_web]: https://docs.it4i.cz/salomon/introduction/
[2]: https://www.paraview.org/in-situ/ [catalyst_web]: https://www.paraview.org/in-situ/
[paraview_web]: http://www.paraview.org/
[a]: http://www.paraview.org/ [catalyst_guide]: https://www.paraview.org/files/catalyst/docs/ParaViewCatalystUsersGuide_v2.pdf
[b]: http://paraview.org/paraview/resources/software.php
cmake_minimum_required(VERSION 3.3) cmake_minimum_required(VERSION 3.3)
project(CatalystCxxFullExample) project(CatalystCxxFullExample)
include_directories(/apps/all/ParaView/5.6.0-intel-2017a-mpi/include/paraview-5.6/)
link_directories(/apps/all/ParaView/5.6.0-intel-2017a-mpi/lib/)
set(USE_CATALYST ON CACHE BOOL "Link the simulator with Catalyst") set(USE_CATALYST ON CACHE BOOL "Link the simulator with Catalyst")
if(USE_CATALYST) if(USE_CATALYST)
find_package(ParaView 4.1 REQUIRED COMPONENTS vtkPVPythonCatalyst) find_package(ParaView 5.6 REQUIRED COMPONENTS vtkPVPythonCatalyst)
include("${PARAVIEW_USE_FILE}") include("${PARAVIEW_USE_FILE}")
set(Adaptor_SRCS set(Adaptor_SRCS
FEAdaptor.cxx FEAdaptor.cxx
......
...@@ -10,28 +10,7 @@ from paraview import coprocessing ...@@ -10,28 +10,7 @@ from paraview import coprocessing
def CreateCoProcessor(): def CreateCoProcessor():
def _CreatePipeline(coprocessor, datadescription): def _CreatePipeline(coprocessor, datadescription):
class Pipeline: class Pipeline:
filename_3_pvtu = coprocessor.CreateProducer( datadescription, "input" ) coprocessor.CreateProducer( datadescription, "input" )
Slice1 = Slice( guiName="Slice1", Crinkleslice=0, SliceOffsetValues=[0.0], Triangulatetheslice=1, SliceType="Plane" )
Slice1.SliceType.Offset = 0.0
Slice1.SliceType.Origin = [34.5, 32.45, 27.95]
Slice1.SliceType.Normal = [1.0, 0.0, 0.0]
# create a new 'Parallel PolyData Writer'
parallelPolyDataWriter1 = servermanager.writers.XMLPPolyDataWriter(Input=Slice1)
# register the writer with coprocessor
# and provide it with information such as the filename to use,
# how frequently to write the data, etc.
coprocessor.RegisterWriter(parallelPolyDataWriter1, filename='slice_%t.pvtp', freq=10)
# create a new 'Parallel UnstructuredGrid Writer'
unstructuredGridWriter1 = servermanager.writers.XMLPUnstructuredGridWriter(Input=filename_3_pvtu)
# register the writer with coprocessor
# and provide it with information such as the filename to use,
# how frequently to write the data, etc.
coprocessor.RegisterWriter(unstructuredGridWriter1, filename='fullgrid_%t.pvtu', freq=100)
return Pipeline() return Pipeline()
...@@ -40,7 +19,7 @@ def CreateCoProcessor(): ...@@ -40,7 +19,7 @@ def CreateCoProcessor():
self.Pipeline = _CreatePipeline(self, datadescription) self.Pipeline = _CreatePipeline(self, datadescription)
coprocessor = CoProcessor() coprocessor = CoProcessor()
freqs = {'input': [10, 100]} freqs = {'input': []}
coprocessor.SetUpdateFrequencies(freqs) coprocessor.SetUpdateFrequencies(freqs)
return coprocessor return coprocessor
...@@ -53,7 +32,7 @@ coprocessor = CreateCoProcessor() ...@@ -53,7 +32,7 @@ coprocessor = CreateCoProcessor()
#-------------------------------------------------------------- #--------------------------------------------------------------
# Enable Live-Visualizaton with ParaView # Enable Live-Visualizaton with ParaView
coprocessor.EnableLiveVisualization(False) coprocessor.EnableLiveVisualization(True)
# ---------------------- Data Selection method ---------------------- # ---------------------- Data Selection method ----------------------
......
No preview for this file type
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment