-
Notifications
You must be signed in to change notification settings - Fork 55
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
Fix DAG Generation and Enable Handling Initial Conditions #3101
Conversation
Before reviewing, a couple of comments:
Bottom line, I think we can reduce to 2 dags: before and after reading the IC file. |
94d0747
to
4bb84d0
Compare
Merge ProtectionsYour pull request matches the following merge protections and will not be merged until they are valid. 🔴 Enforce checks passingThis rule is failing.Make sure that checks are not failing on the PR, and reviewers approved
|
I'm good with getting rid of if. My thought was to generate the DAG each time, during initialization, that more information is available that'd be reflected in the DAG, in case the driver crashes immediately after the point that the DAG is generated. For the first checkpoint, boxes with no edges, it at least reports what processes have been successfully initialized. However, I do agree that it's a low-information figure, so I'm good to lose it--unless generating it and then overwriting with the next DAG iteration is preferred (the previous behavior of the DAG workflow).
Also good with losing fig 3 based on the above perspective. I'll add that info box--do you have strong opinions on whether you'd like to control that behavior with verbosity level (more so than it already is)? @bartgol |
13d622b
to
942b07b
Compare
@mjs271 I think the real purpose of the DAG is to see what the dependencies are if something fails at runtime (and possibly to throw if deps are unmet during init). If the code crashes for whatever other reason during init, I doubt that inspecting the DAG would offer any insight. If the DAG is needed for debug, we're likely past the point where they are all written, and since the user can ask for more/less detail with the dag verbosity param, I think we're covered there.
|
bde4a4b
to
035d8c2
Compare
@mjs271 What's the status? Are you planning on pushing new changes, or are you waiting on feedback? |
@bartgol Just got back to this and have some changes pushed. I'm happy with it if others are |
6318f41
to
db5b35d
Compare
Will this address #1256 ? |
@bartgol --in response to your comment, maybe best to merge this PR now/soon to avoid additional delay? Then I'll open a new one that addresses #3018, as well as:
|
bea7d37
to
6ad603e
Compare
@mjs271 We do get some SIGSEV error in the CUDA builds. Might be worth taking a look. |
@bartgol haha, thanks--rebased and reran to see if that could be the issue. Will knock that out shortly! 😅 |
fixed minor bug--still an issue with 2 fields in p3 for pg2 cases
6ad603e
to
cf476bb
Compare
Pull request has been modified.
Finishes PR #3101 originally submitted to the scream repo the atmospheric DAG generator (atmosphere_process_dag.xpp) and atmosphere driver to get things working again
This PR modifies the atmospheric DAG generator (
atmosphere_process_dag.xpp
) and atmosphere driver to get things working again. Namely,AtmosphereDriver::initialize()
at which we build the most complete DAG available and write it to file..dot
file in the run directory:1.
create_atm_processes()
--scream_atm_createProc_dag.dot2.
create_fields()
--scream_atm_createField_dag.dot3.
initialize_fields()
--scream_atm_initField_dag.dot4.
initialize_atm_procs()
--scream_atm_initProc_dag.dotrequired
field (orgroup
) is missing it is indicated on the corresponding node, as can be seen in the 2nd or 3rd image below.initialize_atm_procs()
), an extra box is added to the DAG with a disclaimer that any fields indicated as missing may be provided by the forthcoming initial condition file.write_dag()
statements to ensure they are only printed by the main MPI thread, since I noticed occasional formatting errors due to a presumptive race condition.