Catalyst error when different versions of Conduit are used
The following is a thread from users. This issue is a place to discuss my user's issues with Conduit with Catalyst. I cherrypicked from this thread.
Summary: The catalyst error “catalyst_status_error_conduit_mismatch” is triggered when a simulation code built with a libcatalyst that uses external conduit tries to communicate with a Paraview built with a libcatalyst that uses its built-in conduit. I believe this is an overly strict check and should be at most a warning. The “CxxFullExample” appears to work correctly with the “mismatched” conduits. If kitware/paraview don't want to support this use case then I guess we can build paraview and alegra against the same libcatalyst/conduit stack but I'd rather not have to do that.
Michael and I are on the Alegra team and trying to integrate Catalyst with the AMR version of Alegra. We’ve found that if the application-side Catalyst2 library is built with a newer version of Conduit than the ParaView Catalyst backend is built with, something goes wrong at runtime (Michael can give details of how it fails). I brought this up at today’s Catalyst meeting and Berk recommended creating a ParaView issue and mentioning Cory Quammen, Christos Tsolakis, and Corey Wetter-Nelson. Michael and I are happy to provide any supporting information for this issue, please let us know how we can help.
From a test:
I just threw some printf’s into the catalyst that I’ve been building and I get: (in and around catalyst_api.c line 230)
impl-\>version 2
impl-\>conduit_is_external 0
conduit_is_external 0
CATALYST_WITH_EXTERNAL_CONDUIT 1
Failed to initialize Catalyst: 7
THEN
*interestingly* when I disable the check
[https://gitlab.kitware.com/paraview/catalyst/-/blob/v2.0.0-rc4/src/catalyst/catalyst_api.c?ref_type=tags#L232](https://gitlab.kitware.com/paraview/catalyst/-/blob/v2.0.0-rc4/src/catalyst/catalyst_api.c?ref_type=tags#L232 "https://gitlab.kitware.com/paraview/catalyst/-/blob/v2.0.0-rc4/src/catalyst/catalyst_api.c?ref_type=tags#L232")
It works perfectly!
I should add: somewhere in conduit someone requires MPI::CXX, so I had to modify the catalyst CMakeLists.txt:
if(CATALYST_USE_MPI)
\- find_package(MPI COMPONENTS C REQUIRED)
\+ find_package(MPI COMPONENTS C CXX REQUIRED)
endif()
I am of the opinion that this bad usage on the conduit side and they should change it.