Fix for some stack overflow issues with FAST.Farm #2452
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Ready to merge
Feature or improvement description
We have been having issues with stack overflows in FAST.Farm compiled with Intel and Visual Studio. The root cause is due to copying of large wind grids within the AWAE module.
Using the zip files attached to issue #2053, this was eventually tracked down to line 1078 in
AWAE.f90
which reads:The
p%Grid_low
is of unknown size at compile time, but can be extremely large (3x1643364 in the test case). This copy involves a temporary array and would normally be handled on the stack, but could result in an overflow for some models. By setting/heap-arrays:1000
, any operation resulting in a temporary array of unknown array size at compile time will use the heap for the temprary array, and as will any array known at compile time to be larger than 1000 kB.See https://www.intel.com/content/www/us/en/docs/fortran-compiler/developer-guide-reference/2024-2/heap-arrays.html for reference.
Related issue, if one exists
This solves #2053, and may also solve #843 and #2241
Impacted areas of the software
Certain models that had very large arrays that were being copied.
Additional supporting information
Ideally we would find a different way of handling the copy in
AWAE.f90
line 1078 (maybe a pointer to the dataset or similar operation that doesn't require the copy at all -- I'm assuming this is a bottleneck).Test results, if applicable
No test results are affected.