-
Notifications
You must be signed in to change notification settings - Fork 97
WIP: Feat instrument catalyst #2250
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
WIP: Feat instrument catalyst #2250
Conversation
8bc8363 to
7a12751
Compare
a48620d to
101fcf6
Compare
c837d17 to
309e668
Compare
309e668 to
f831f78
Compare
f831f78 to
1235964
Compare
This commit introduces a new output class for running in-situ co-processing using the catalyst API. It also introduces a new `Catalyst` module in the fileIO folder with specific code for dealing with `conduit` collisions.
This commit onward should be compatible with `thirdPartyLibrary` commit acf1e3836ec1cc89996222fabe9458f1a56c1f52 and onward
1235964 to
a3d549c
Compare
a3d549c to
e9bcd67
Compare
6880b62 to
f9b5095
Compare
f9b5095 to
25d6bac
Compare
25d6bac to
9c9eccf
Compare
| std::string topoName = topology.name(); | ||
| auto& iMesh = blueprintNode[topoName]; | ||
|
|
||
| iMesh["state"].update(blueprintNode["state"]); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
is this a large copy ?
| DispatchNameToType("uint32", std::uint32_t); | ||
| DispatchNameToType("uint64", std::uint64_t); | ||
| DispatchNameToType("float32", float); | ||
| DispatchNameToType("float64", double); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
is this compiler / os dependant ?
| ScopedDataContainer& dataContainer) { | ||
| std::string dtype = src.dtype().name(); | ||
| conduit_index_t size = src.dtype().number_of_elements(); | ||
| #define DispatchNameToType(name, type) \ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
in cpp 14 can't we use auto lambda instead of this macro switch case ?
| ::SanitizeNode(meshGEOSRoot); | ||
|
|
||
| bool isInTransit = | ||
| this->internal->implementation == "adios" || |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
implementation do not have a unique name / id we could use ?
|
@sframba I added a small change to allow for multiple simulations to use different adios files through a |
…austy/GEOSX into feat-instrument-catalyst
|
@CharlesGueunet Can you migrate the description on this PR to the superseding PR #3459 |
Goal
This pull request should enable GEOSX to perform in-situ and in-transit (co-/post-)processing using the catalyst library and notably its newest implementation based on ADIOS2.
A little about the
catalystlibraryCatalyst is an API specification developed for simulations (and other scientific data producers) to analyze and visualize data in situ.
The Catalyst API uses ‘C’ and is binary compatible with different implementations of the API making it easier to change the implementation at runtime.
Relationship with ParaView: Starting with 5.9, ParaView releases come with an implementation of the Catalyst API. This implementation can be used in lieu of the stub to analyze and visualize simulation results using ParaView’s data-processing and visualization capabilities
Development Steps
thirdPartyLibsrepository: Add catalyst and adios thirdPartyLibs#214catalystitself version 2.0.0-rc3adios/catalystimplementation on commit af3b35fadios2v2.8.3conduitfrom0.8.2to 0.8.6VTKto master branch 49361a2 for ABI namespace manglingsrc/coreComponents/fileIO/Outputs/BlueprintOutputto be re-usable in derived classessrc/coreComponents/fileIO/Outputs/CatalystOutputclass that inherits fromBlueprintOutputin order to use the already existingconduitblueprint mappingadiosspecific meta-data in theconduitnodeConduit compatibility
When trying to input the
conduit::Nodeused by GEOSX into theconduit_cpp::Nodeneeded bycatalystwe run into an incompatibility between the twoconduitlibraries which cannot coexist in the same translation unit. As of now and to my knowledge,catalystdoes not have any ready-made solution for this type of collision with simulation codes.This has been remedied in
GEOSXwith a facade design pattern in theCatalystfolder.VTK compatibility with ParaView's Catalyst implementation
When trying to use the
paraviewimplementation ofcatalyst(which can be found here: ParaViewCatalyst) there is adlopenperformed at runtime on the shared library where the implementation is compiled. This shared library has a dependence on theVTKthat gets compiled withParaView. However, when the program goes looking forVTKobjects it finds the symbols in the native GEOSX-VTK library before theParaViewVTK. This leads to crashes due to the version differences between the two loadedVTKs.This has been soloved by mangling GEOSX' VTK version to avoid collisions.