Feature/improve response matrix dumping issue #96
David Dickinson
Branch: feature/improve_response_matrix_dumping_issue_96
Branch: next
Merged
Merged pull request
Merged in feature/improve_response_matrix_dumping_issue_96 (pull request #293)
Merged in feature/improve_response_matrix_dumping_issue_96 (pull request #293)
Add a default for the response_file variable
Bug fix for dump/read response with fields implicit and non-box simulations
Add function to return the response file name given key information
Make use of function to get response file name
Add timestep to the response matrix dump file name
Bug fix for dump response, ensure timing arrays are initialised
Also switch to scientific notation for time output
Update dump_response to avoid adding timestep to file name twice.
Allow read_response routines to exit if expected file not found.
If any response matrix file is not found then we revert to calculating all response matrices.
Work towards addressing proposed enhancements in issue #96
Still need to <s>port changes to fields_gf_local module and</s> do some more testing. Currently no tests as a part of the test suite use this functionality.
Â
For a test case I got the following data
Case | Time Total | Time Init | Time re-init | Nsteps output | Average time per output | Number of resets Local-no dumps | 525 mins | 0.6 mins | 290 mins | 251 | 2.1 mins | 538 Implicit-no dumps | 1422 mins | 3.5 mins | 1189 mins | 251 | 5.7 mins | 338 Local dumps | 249 mins | 0.6 mins | 12 mins | 251 | 0.99 mins | 538 Implicit dumps | 255 mins | 3.5 mins | 21 mins | 251 | 1.02 mins | 338
for the two main field modules with and without the dump/read response matrix functionality active. The ratio of worst to best case run time is almost 6, indicating a substantial saving. As can be seen by the last column, this is a test case that changes the time step a lot more than we would usually expect. These changes were mostly oscillating between a couple of time steps, so we were able to reuse response matrices in the majority of cases when the feature was active. In the best case we only pay 12 minutes overall for changing the time step a lot which could mean we actually reduce the compute time required to reach a particular physical time (as we’re able to increase the time step more frequently as we don’t have a large cost to pay). This test case has
nx = 64
,ny = 128
andntheta = 16
. It was electrostatic and I ran on 32 cores withnwrite = 100
(i.e. 25001 total time steps).