-
Notifications
You must be signed in to change notification settings - Fork 371
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
Semi-implicit barotropic mode solver updates #5019
Conversation
This PR updates the semi-implicit barotropic mode solver: - Restructure and make codes simpler in the main time-stepping code - Make subroutines for the semi-implicit solver (preconditioining, matrix-vector multiplications, global reductions) - Provide the s-step conjugate gradient method when 'config_btr_si_partition_match_mode' is turned on to provide faster symmetric iterative solver - Small changes in stage 1 and 3 to match the split-explicit code
@hyungyukang - why is FAIL is expected for PEM tests? |
@jonbob If the config_btr_si_partition_match_mode flag is false, the implicit solver uses a more optimal preconditioner that depends on the partitioning so won't be bfb (and uses faster non-reproducible sums as well). When the flag is true, both reproducible sums and a reproducible preconditioner are used that will guarantee a passing PEM test but with reduced performance. This was done when the SI solver was first introduced so this behavior hasn't changed for this PR, other than using the newer repro sums. |
Thanks @philipwjones - I appreciate the clarification, since I misread it and assumed the default settings meant generic E3SM settings which need to be BFB |
@philipwjones , Thanks a lot for your detailed explanation! Nothing to add more. |
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.
Visual review of changes looks good.
Passes compass PR test when option is off so is bfb as a stealth feature. Unfortunately, I forgot to build compass with LAPACK on so wasn't able to test with the option on.
It runs in a QU240 case on Summit with CPU only. It fails with OpenACC on Summit, but that's because some of our recent changes in array transfers weren't propagated to the si driver. So that's on us and I will open an issue on that and fix later.
Since I'm off on vacation for a bit, I will go ahead an approve based on my code review and the testing to date so I don't hold this up.
@philipwjones , Thanks for reviewing and approving this PR. Next PR will be GPU porting of the semi-implicit solver, so maybe I can look into that error. |
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.
I compiled and ran, with this feature off, with intel and gnu, debug and optimized and the nightly suite compares bfb with previous. Reviewed by visual inspection.
@mark-petersen , Thanks Mark for testing and reviewing! |
Semi-implicit barotropic mode solver updates This PR updates the semi-implicit barotropic mode solver: * Restructure and make codes simpler in the main time-stepping code * Make subroutines for the semi-implicit solver (preconditioining, matrix-vector multiplications, global reductions) * Provide the s-step conjugate gradient method when config_btr_si_partition_match_mode is turned on to provide a faster symmetric iterative solver * Small changes in stage 1 and 3 to match the split-explicit code [BFB]
passes:
merged to next |
merged to master |
This PR updates the semi-implicit barotropic mode solver :
config_btr_si_partition_match_mode
is turned on to provide a faster symmetric iterative solverBelow is PASS/FAIL test results:
With default options
FAIL PEM_Ln9_D.T62_oQU240.GMPAS-IAF.cori-knl_intel (FAIL is expected for PEM tests.)
PASS PET_Ln9.T62_oQU240.GMPAS-IAF.cori-knl_intel
PASS SMS.T62_oEC60to30v3wLI.GMPAS-DIB-IAF-ISMF.cori-knl_intel
PASS SMS.T62_oQU120_ais20.MPAS_LISIO_TEST.cori-knl_intel
With
config_btr_si_partition_match_mode=.true.
PASS PEM_Ln9_D.T62_oQU240.GMPAS-IAF.cori-knl_intel
PASS PET_Ln9.T62_oQU240.GMPAS-IAF.cori-knl_intel
PASS SMS.T62_oEC60to30v3wLI.GMPAS-DIB-IAF-ISMF.cori-knl_intel
PASS SMS.T62_oQU120_ais20.MPAS_LISIO_TEST.cori-knl_intel