-
Notifications
You must be signed in to change notification settings - Fork 217
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
Read IO plugin configuration (openPMD plugin) from reading applications (TOML) #3720
Read IO plugin configuration (openPMD plugin) from reading applications (TOML) #3720
Conversation
Just did a little test run with this thing: First TOML file: [period]
200 = ["E", "B"]
400 = "fields_all" Second one: [period]
500 = "species_all" Resulting dataset:
|
The latest commit fixes waiting for late files and adds logging for that:
Next up: parallel reading (i.e. non-parallel reading) |
(PR stalled for now until René is back from holiday to review this approach.) |
Discussed offline with René: [openPMD]
"file" = "simOutput"
"ext" = "bp"
"backend_config" = "@./adios2_config.json"
[sink.analysis_code_name.period]
200 = ["E", "B"]
400 = "fields_all"
[sink.other_analysis_code_name.period]
500 = "species_all" Under the # this will not be part of this PR
# just demonstrating that this schema is extensible
[sink.analysis_code_name]
"logging" = true Other points discussed: Allow time slicing syntax, Do not activate this in every step, but instead tell the plugin controller about the periods @psychocoderHPC Any additions? |
8e7273d
to
313dc16
Compare
Time slice syntax and reading of normal plugin parameters from TOML now implemented: file = "output"
infix = ""
[sink.1.period]
"100:300:200" = ["E", "B"]
"300:10000:200" = "fields_all"
[sink.2.period]
500 = "species_all" Result:
|
Alright, command line parameter handling should now work. Still need to test that checkpoint/restarting is handled correctly, and I might need some help so that this PR does not also add a parameter |
Did some thorough cleanup, including commit history |
@franzpoeschel What is the status of this pul request? |
@PrometheusPi I meet with René next week to discuss the current status. If we agree that the approach taken by this is ok, I expect it can be merged soon. Note that this PR is not about TOML configuration for the openPMD-api, but for PIConGPU's openPMD plugin. |
2a35873
to
c12249e
Compare
I added the things we talked about yesterday @psychocoderHPC:
|
I tested that multi-plugin usage with command line parameters still works. |
9508fce
to
6df554a
Compare
PR can be rebased |
done |
@franzpoeschel What do you mean by |
In our intended workflows, the TOML file is created asynchronously by the reading codes. So, as long as the file is not there yet, these lines here will sleep until the file is found. Should I keep that part? If yes, I think I should add a timeout. @psychocoderHPC |
Ohh yes, a timeout makes sense. IMO set as default 5min. |
Done and tested |
Move collective file reading to a common header Add TOML header and implementation Without using it yet though Use TOML stuff in openPMD plugin Use stateless DataSources class Accept empty string as unspecified parameter for toml option Timeout 5min: If toml file is not there, throw an error
All comments adressed. Offline discussed to merge now.
Close #3717, see there for a detailed description
TODO:
selfRegister==true
is handled correctly (checkpoint writing)keep the
.toml
option out of--checkpoint.openPMD
somehow?--openPMD.period dynamic
thing, it's easy to implement for now) Update:--openPMD.period
and--openPMD.toml
are now mutually exclusive. If using TOML, then the parameter must be the only parameter.