WIP: Feat instrument catalyst#2250
Closed
julienfausty wants to merge 23 commits intoGEOS-DEV:developfrom
Closed
Conversation
Author
8bc8363 to
7a12751
Compare
a48620d to
101fcf6
Compare
c837d17 to
309e668
Compare
309e668 to
f831f78
Compare
f831f78 to
1235964
Compare
added 2 commits
July 20, 2023 18:04
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"]); |
| DispatchNameToType("uint32", std::uint32_t); | ||
| DispatchNameToType("uint64", std::uint64_t); | ||
| DispatchNameToType("float32", float); | ||
| DispatchNameToType("float64", double); |
There was a problem hiding this comment.
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.
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.
implementation do not have a unique name / id we could use ?
Contributor
|
@sframba I added a small change to allow for multiple simulations to use different adios files through a |
…austy/GEOSX into feat-instrument-catalyst
7 tasks
Member
|
@CharlesGueunet Can you migrate the description on this PR to the superseding PR #3459 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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.