-
Notifications
You must be signed in to change notification settings - Fork 10
Create test for the predictor corrector in RTheta geometry. #406
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
base: devel
Are you sure you want to change the base?
Conversation
This PR is failing tests so it has been put back into draft. Please remove the draft status when the tests pass. |
This PR is failing tests so it has been put back into draft. Please remove the draft status when the tests pass. |
This PR is failing tests so it has been put back into draft. Please remove the draft status when the tests pass. |
This PR is failing tests so it has been put back into draft. Please remove the draft status when the tests pass. |
"$<TARGET_FILE:Python3::Interpreter>") | ||
|
||
# The test should take less than 15 min. | ||
set_property(TEST "${test_name}" PROPERTY TIMEOUT 900000) |
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.
On the CI the timings are:
Serial Debug GNU
- TestSimulationDiocotron_PREDCORR_EULER_METHOD (582.507s)
- TestSimulationDiocotron_EXPLICIT_PREDCORR_EULER_METHOD (409.768s)
- TestSimulationDiocotron_IMPLICIT_PREDCORR_EULER_METHOD (314.197s)
Serial Debug Clang
- TestSimulationDiocotron_PREDCORR_EULER_METHOD (267.755s)
- TestSimulationDiocotron_EXPLICIT_PREDCORR_EULER_METHOD (199.956s)
- TestSimulationDiocotron_IMPLICIT_PREDCORR_EULER_METHOD (162.804s)
Serial Release GNU
- TestSimulationDiocotron_PREDCORR_EULER_METHOD (179.175s)
- TestSimulationDiocotron_EXPLICIT_PREDCORR_EULER_METHOD (141.35s)
- TestSimulationDiocotron_IMPLICIT_PREDCORR_EULER_METHOD (93.0959s)
Serial Release Clang
- TestSimulationDiocotron_PREDCORR_EULER_METHOD (216.769s)
- TestSimulationDiocotron_EXPLICIT_PREDCORR_EULER_METHOD (163.87s)
- TestSimulationDiocotron_IMPLICIT_PREDCORR_EULER_METHOD (130.083s)
OpenMP Release GNU
- TestSimulationDiocotron_PREDCORR_EULER_METHOD (245.865s)
- TestSimulationDiocotron_EXPLICIT_PREDCORR_EULER_METHOD (202.417s)
- TestSimulationDiocotron_IMPLICIT_PREDCORR_EULER_METHOD (149.567s)
Coverage Flags GNU
- TestSimulationDiocotron_PREDCORR_EULER_METHOD (5687.16s)
- TestSimulationDiocotron_EXPLICIT_PREDCORR_EULER_METHOD (3960.98s)
- TestSimulationDiocotron_IMPLICIT_PREDCORR_EULER_METHOD (2883.25s)
Unacceptably slow
GPU
- TestSimulationDiocotron_PREDCORR_EULER_METHOD (68.71s)
- TestSimulationDiocotron_EXPLICIT_PREDCORR_EULER_METHOD (73.10s)
- TestSimulationDiocotron_IMPLICIT_PREDCORR_EULER_METHOD (519.86s)
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.
Maybe we can choose the parameters based on the CI. Run with 1 step for the coverage just to show there is a test 🤔
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.
It is also probably sufficient to run in Release only if we can work out a clean way to do it
|
||
# The test should take less than 15 min. | ||
set_property(TEST "${test_name}" PROPERTY TIMEOUT 900000) | ||
set_property(TEST "${test_name}" PROPERTY COST 100) |
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.
set_property(TEST "${test_name}" PROPERTY COST 100) | |
set_property(TEST "${test_name}" PROPERTY COST 100) | |
set_property(TEST "${test_name}" PROPERY LABEL Release_only) |
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.
This would require -L Release_only
to be passed to ctest though.
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.
Maybe they could just be activated with an environment variable?
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 dont know what is the best solution. The release only is better because indeed we dont need to test in debug.
diocotron_test_executable(PREDCORR EULER_METHOD) | ||
diocotron_test_executable(EXPLICIT_PREDCORR EULER_METHOD) | ||
diocotron_test_executable(IMPLICIT_PREDCORR EULER_METHOD) |
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.
diocotron_test_executable(PREDCORR EULER_METHOD) | |
diocotron_test_executable(EXPLICIT_PREDCORR EULER_METHOD) | |
diocotron_test_executable(IMPLICIT_PREDCORR EULER_METHOD) | |
if(defined ENV{BUILD_END_TO_END_TESTS}) | |
diocotron_test_executable(PREDCORR EULER_METHOD) | |
diocotron_test_executable(EXPLICIT_PREDCORR EULER_METHOD) | |
diocotron_test_executable(IMPLICIT_PREDCORR EULER_METHOD) | |
endif() |
This PR is failing tests so it has been put back into draft. Please remove the draft status when the tests pass. |
It seems that something is not working with gcov: https://github.com/gyselax/gyselalibxx/actions/runs/16828029669/job/47668971621?pr=406 |
I'm not certain but it looks like it goes through a section of code so many times (due to the large number of iterations) that it assumes that they forgot to initialise something |
means it hit this line 8691731840 times. I get the impression that it thinks that if a line of code is run 10^9 times during testing it probably means they measured it wrong. |
Oh, wow it is a pretty big number 😮 |
It is line 723 of some file. The line contains |
|
It could be the resolution with Ginkgo? I know that to invert the matrix it iterate several times. With not a well refined gird, maybe it is more difficult to invert? |
Ginkgo can't call this function. In the Poisson solver it is used (a lot but not 10^9 a lot) for the assembly and it is used to build the RHS (NQuadPts * Nr * Ntheta * 4(cells) * 2(func and basis in weak formulation) max per call to Poisson::operator()) |
This could plausibly be ~10^6 calls so 10^9 is not out of reach if you then have 1000 time steps |
Mmh, indeed the diocotron by default has 700 time steps. Here I reduced it to 400 times steps. But with the predcorr the operators can be call twice (prediction and then correction) or even more for the implicit predcorr! |
Add a
test_diocotron.sh
to check if the growth rate of the perturbation of the diocotron instability test case follow the expected slope. It allows us to test the different predictor corrector in thegeometryRTheta
folder.Add a
time_solver
folder and atime_solver/growth_rate_test-py
in thetests/geometryRTheta
folder.Remove "Add a
periodic_strips_non_uniform_2d_9patches
geometry." in the CHANGELOG.md.Please complete the checklist to ensure that all tasks are completed before marking your pull request as ready for review.
All Submissions
New Feature Submissions
Changes to Existing Features
Changes to the CI