# Catalyst Adios without MPI

**URL:** https://discourse.paraview.org/t/catalyst-adios-without-mpi/13006
**Category:** In Situ Support
**Created:** [October 8, 2023, 9:47am UTC](https://discourse.paraview.org/t/catalyst-adios-without-mpi/13006 "2023-10-08T09:47:37Z")
**Posts on this page:** 9
**Page:** 1

<div class="post-metadata">

### Author: ![Juan\_Jose\_Casafranca](https://discourse.paraview.org/user_avatar/discourse.paraview.org/juan_jose_casafranca/32/3499_2.png) [@Juan\_Jose\_Casafranca](https://discourse.paraview.org/u/Juan_Jose_Casafranca)
#### Post date: [October 8, 2023, 9:47am UTC](https://discourse.paraview.org/t/catalyst-adios-without-mpi/13006/1 "2023-10-08T09:47:37Z")

</div>

I am trying to use AdiosCatalyst ([https://gitlab.kitware.com/paraview/adioscatalyst](https://gitlab.kitware.com/paraview/adioscatalyst)) in my simulation to perform in situ visualization.

In order to do so, I have compiled catalyst ([https://gitlab.kitware.com/paraview/catalyst](https://gitlab.kitware.com/paraview/catalyst)) and adios2 ([GitHub - ornladios/ADIOS2: Next generation of ADIOS developed in the Exascale Computing Program](https://github.com/ornladios/ADIOS2)). AdiosCatalyst doesn’t compile if there is no MPI support in catalyst and adios2, so I compiled everything with MPI support.

However, my simulation doesn’t use MPI, as we parallelize on a single node using TBB directly. When I try to run my simulation code with catalyst support, I get the following error:

```auto
*** The MPI_Comm_rank() function was called before MPI_INIT was invoked.
*** This is disallowed by the MPI standard.
*** Your MPI job will now abort.
[222f3f06c5dd:33189] Local abort before MPI_INIT completed completed successfully, but am not able to aggregate error messages, and not able to guarantee that all other processes were killed!

```

Is it possible to run AdiosCatalyst without MPI? How should I do that?

---

<div class="post-metadata">

### Author: ![mwestphal](https://discourse.paraview.org/user_avatar/discourse.paraview.org/mwestphal/32/17_2.png) [@mwestphal](https://discourse.paraview.org/u/mwestphal)
#### Post date: [October 9, 2023, 7:33am UTC](https://discourse.paraview.org/t/catalyst-adios-without-mpi/13006/2 "2023-10-09T07:33:39Z")

</div>

@Lucas_Givord @Francois_Mazen @nicolas.vuaille

---

<div class="post-metadata">

### Author: ![nicolas.vuaille](https://discourse.paraview.org/user_avatar/discourse.paraview.org/nicolas.vuaille/32/5873_2.png) [@nicolas.vuaille](https://discourse.paraview.org/u/nicolas.vuaille)
#### Post date: [October 9, 2023, 7:57am UTC](https://discourse.paraview.org/t/catalyst-adios-without-mpi/13006/3 "2023-10-09T07:57:36Z")

</div>

Hi,

In your case, you may want to use ParaViewCatalyst directly. This can be built from ParaView sources.

The (only) advantage of AdiosCatalyst over ParaViewCatalyst is to provide the `in-transit` capabilities, i.e. to run analysis on a seperate MPI node. So it does not make sense for a single-node run.

That said, I think only one thread should communicate with Catalyst, but I may be wrong here.

---

<div class="post-metadata">

### Author: ![Juan\_Jose\_Casafranca](https://discourse.paraview.org/user_avatar/discourse.paraview.org/juan_jose_casafranca/32/3499_2.png) [@Juan\_Jose\_Casafranca](https://discourse.paraview.org/u/Juan_Jose_Casafranca)
#### Post date: [October 9, 2023, 8:02am UTC](https://discourse.paraview.org/t/catalyst-adios-without-mpi/13006/4 "2023-10-09T08:02:48Z")

</div>

I have the simulation code running on a machine and paraview gui running on another machine and I am using Live Visualization. On that setup, its still recommended to use catalyst paraview direcly?

---

<div class="post-metadata">

### Author: ![nicolas.vuaille](https://discourse.paraview.org/user_avatar/discourse.paraview.org/nicolas.vuaille/32/5873_2.png) [@nicolas.vuaille](https://discourse.paraview.org/u/nicolas.vuaille)
#### Post date: [October 9, 2023, 3:02pm UTC](https://discourse.paraview.org/t/catalyst-adios-without-mpi/13006/5 "2023-10-09T15:02:05Z")

</div>

If you have only one (node on one) machine to run the simulation, then ParaView Catalyst is the way to go: adios catalyst was definitely designed for multi node analysis with MPI.

AdiosCatalyst and ParaViewCatalyst are (some kind of) paraview servers running a pipeline fed by the simulation (like a `pvbatch` executable).  
The `Live Visualisation` allows your paraview client to connect to this remote server to see the running pipeline.

---

<div class="post-metadata">

### Author: ![Juan\_Jose\_Casafranca](https://discourse.paraview.org/user_avatar/discourse.paraview.org/juan_jose_casafranca/32/3499_2.png) [@Juan\_Jose\_Casafranca](https://discourse.paraview.org/u/Juan_Jose_Casafranca)
#### Post date: [October 9, 2023, 4:22pm UTC](https://discourse.paraview.org/t/catalyst-adios-without-mpi/13006/6 "2023-10-09T16:22:20Z")

</div>

Thanks for the explanation. I was actually quite confused, and I thought Catalyst, running on my remote simulation machine, was sending the data to Paraview, which is running on my local machine, and it was in Paraview where the pipeline was executed.

But I see that the simulation and paraview pipeline are both executed on the remote machine, and in the local machine I can just open a Paraview GUI and connect to that remote instance.

In my simulation I just want to dump the meshes (vtkUnstructuredGrid) and see how they deform. Maybe store them in disk.

Probably out of the scope of the original question, but how would you recommend to store the data in disk? Right now I am using an HDF5 file with a custom format, similar to what conduit does with the mesh blueprints. Can I just store conduit nodes to some format and then read them back in paraview?

---

<div class="post-metadata">

### Author: ![nicolas.vuaille](https://discourse.paraview.org/user_avatar/discourse.paraview.org/nicolas.vuaille/32/5873_2.png) [@nicolas.vuaille](https://discourse.paraview.org/u/nicolas.vuaille)
#### Post date: [October 10, 2023, 7:19am UTC](https://discourse.paraview.org/t/catalyst-adios-without-mpi/13006/7 "2023-10-10T07:19:13Z")

</div>

You have several options here:

- Write a `vtkHDF` file from your simulation code. You will need to implement the specification from here: [VTK File Formats - VTK documentation](https://docs.vtk.org/en/latest/design_documents/VTKFileFormats.html#hdf-file-formats). This is the rising format for ParaView. So no need for catalyst here.
- Setup a Catalyst script with a `Data Extractor` (`VTU` for unstructured grid). Of course, this will requires to build and run with Catalyst, but this may allow some pre-computing (like cleaning or so) and live visu.
- I think there is some ParaViewCatalyst option to configure the `io` directly from the conduit node (ie without python script) but I do not find the resources now.

---

<div class="post-metadata">

### Author: ![Juan\_Jose\_Casafranca](https://discourse.paraview.org/user_avatar/discourse.paraview.org/juan_jose_casafranca/32/3499_2.png) [@Juan\_Jose\_Casafranca](https://discourse.paraview.org/u/Juan_Jose_Casafranca)
#### Post date: [October 10, 2023, 8:02am UTC](https://discourse.paraview.org/t/catalyst-adios-without-mpi/13006/8 "2023-10-10T08:02:15Z")

</div>

Thanks again for your answers.

When I started developing my own format, I had a look at VTKHDF and I discarded because it didn’t support temporal data or hierarchies (vtkMultiBlockDataSet). I see it supports temporal data already, but it still lacks hierarchies, so I guess I am still out of luck.

TBH, I am not even sure if Catalyst supports hierarchies, or if the Conduit hierarchy is correctly converted to vtkMultiBlockDataSets. Ideally, I would have Catalyst and an Extractor saving to disk in that VTKHDF, but I guess support its not yet there.

---

<div class="post-metadata">

### Author: ![Lucas\_Givord](https://discourse.paraview.org/user_avatar/discourse.paraview.org/lucas_givord/32/6851_2.png) [@Lucas\_Givord](https://discourse.paraview.org/u/Lucas_Givord)
#### Post date: [October 10, 2023, 8:28am UTC](https://discourse.paraview.org/t/catalyst-adios-without-mpi/13006/9 "2023-10-10T08:28:33Z")

</div>

Hi @Juan_Jose_Casafranca,

Regarding your questions about VTKHDF:

Indeed actually only the support of temporal data is supported with VTKHDF. For the missing hierarchy support, we proposed, few weeks ago, a design : [Composite Data Sets for the VTKHDF format - Development - VTK](https://discourse.vtk.org/t/composite-data-sets-for-the-vtkhdf-format/12190). I started to implement it so a first version will be available in a near future.

For Catalyst:

> I am not even sure if Catalyst supports hierarchies

you can use hierarchical dataset with Catalyst2 thanks to the multimesh protocol :

- the doc : [ParaView-Catalyst Blueprint — ParaView Documentation 5.11.0 documentation](https://docs.paraview.org/en/latest/Catalyst/blueprints.html#protocol-multimesh)
- an example : [https://gitlab.kitware.com/paraview/paraview/-/tree/master/Examples/Catalyst2/CxxMultimesh](https://gitlab.kitware.com/paraview/paraview/-/tree/master/Examples/Catalyst2/CxxMultimesh)

> Ideally, I would have Catalyst and an Extractor saving to disk in that VTKHDF

Indeed, it would be ideal. With recent/ongoing improvements in the VTKHDF format, I think it will be possible in a near future.
