# Catalyst2: Artifacts on Processes Boundaries

**URL:** https://discourse.paraview.org/t/catalyst2-artifacts-on-processes-boundaries/13489
**Category:** In Situ Support
**Tags:** catalyst
**Created:** [December 12, 2023, 7:27pm UTC](https://discourse.paraview.org/t/catalyst2-artifacts-on-processes-boundaries/13489 "2023-12-12T19:27:39Z")
**Posts on this page:** 5
**Page:** 1

<div class="post-metadata">

### Author: ![cartagena](https://discourse.paraview.org/letter_avatar_proxy/v4/letter/c/7ea924/32.png) [@cartagena](https://discourse.paraview.org/u/cartagena)
#### Post date: [December 12, 2023, 7:27pm UTC](https://discourse.paraview.org/t/catalyst2-artifacts-on-processes-boundaries/13489/1 "2023-12-12T19:27:39Z")

</div>

I am trying to visualize a particle simulation with in-situ Catalyst2 support, and while it is correct on single core (produced image is consistent with what ParaView creates), in multi-core setting I am getting artifacts on processes boundaries:

1-core Catalyst visualization:

 ![catalyst_vector_dist_1](https://discourse.paraview.org/uploads/default/original/2X/1/13da38d578b85fadbee076be68efe22b432e8e81.jpeg)

2-core Catalyst visualization:

 ![catalyst_vector_dist_2](https://discourse.paraview.org/uploads/default/original/2X/7/79e978d358db1299eebf201738f885db0bf8fe89.jpeg)

3-core Catalyst visualization:

 ![catalyst_vector_dist_4](https://discourse.paraview.org/uploads/default/original/2X/f/ff6ca89cae4952411f20713c41bd9efe1ac8d949.jpeg)

2-core vs 1-core images difference:

 ![catalyst_2v1](https://discourse.paraview.org/uploads/default/original/2X/0/0cf67d6702d22fdffa3dca7f05022c037d3a419f.jpeg)

4-core vs 1-core images difference:

 ![catalyst_4v1](https://discourse.paraview.org/uploads/default/original/2X/4/4b3d0411abb35124db962c4b1ad0a18d33a3bed6.jpeg)

Some details about simulation:

1. Data is list of particles, each particle has 3 properties - _scalar_, 3-dimensional _vector_, and 3x3 _tensor_ (unrolled into 9 separate scalar properties in the Conduit node field setter). In the images, glyphs are oriented w.r.t. _vector_, colored w.r.t _tensor[1][1]_, scaled w.r.t _scalar_.
2. Problem persists in the absence of ghost cells. I have verified that if 1-core gets 64K particles, then 2-core get 2x32K, 4-core get 4x16K.
3. I use the following Conduit Mesh Blueprint:  
coords/type = explicit  
mesh/type = unstructured  
mesh/elements/shape = point  
mesh/elements/connectivity = \<index array from 0 to num\_particles\_local)
4. I have verified that in all 3 cases I pass correct coordinates and property values to Conduit nodes.

---

<div class="post-metadata">

### Author: ![utkarsh.ayachit](https://discourse.paraview.org/user_avatar/discourse.paraview.org/utkarsh.ayachit/32/39_2.png) [@utkarsh.ayachit](https://discourse.paraview.org/u/utkarsh.ayachit)
#### Post date: [December 12, 2023, 7:38pm UTC](https://discourse.paraview.org/t/catalyst2-artifacts-on-processes-boundaries/13489/2 "2023-12-12T19:38:15Z")

</div>

Are you showing glyphs for all points in the dataset ? Default is to pick a random set limited by a max count, IIRC. That can yield different set of glyphs as number of ranks changes, but will still be representing the data correctly.

---

<div class="post-metadata">

### Author: ![cartagena](https://discourse.paraview.org/letter_avatar_proxy/v4/letter/c/7ea924/32.png) [@cartagena](https://discourse.paraview.org/u/cartagena)
#### Post date: [December 12, 2023, 8:49pm UTC](https://discourse.paraview.org/t/catalyst2-artifacts-on-processes-boundaries/13489/3 "2023-12-12T20:49:15Z")

</div>

Could you please elaborate on random set, how exactly is this tuned? What I did is the following:

1. Generate VTP for representative dataset with single core
2. Load VTP into ParaView, apply coloring and glyph filter, disable showing points, create PNG extractor
3. Save Catalyst state as Python script; change source to `TrivialProducer(registration_name="particles")`

So I guess I should be showing glyphs for all points

---

<div class="post-metadata">

### Author: ![Alexandre\_Minot](https://discourse.paraview.org/user_avatar/discourse.paraview.org/alexandre_minot/32/7132_2.png) [@Alexandre\_Minot](https://discourse.paraview.org/u/Alexandre_Minot)
#### Post date: [December 13, 2023, 7:26pm UTC](https://discourse.paraview.org/t/catalyst2-artifacts-on-processes-boundaries/13489/4 "2023-12-13T19:26:41Z")

</div>

Utkarsh is pointing out that in your step 2, when you add the Glyph filter, under “masking” in the property pane, make sure you use the glyph mode “all points” and not “uniform spatial distribution”.

 ![image](https://discourse.paraview.org/uploads/default/original/2X/1/138633d2dc26c429e2a483c51fa307aabea6f23d.png)

---

<div class="post-metadata">

### Author: ![cartagena](https://discourse.paraview.org/letter_avatar_proxy/v4/letter/c/7ea924/32.png) [@cartagena](https://discourse.paraview.org/u/cartagena)
#### Post date: [December 14, 2023, 1:44pm UTC](https://discourse.paraview.org/t/catalyst2-artifacts-on-processes-boundaries/13489/5 "2023-12-14T13:44:45Z")

</div>

Thanks, seems that random sampling was the problem, images are now consistent between single- and multi-core with “all points” mode. I guess there isn’t a mechanism to “synchronize” random sampling across processes in Catalyst (simulating working with .pvtp in ParaView)?
