-
Notifications
You must be signed in to change notification settings - Fork 461
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
Release 3.5.4 #2474
Release 3.5.4 #2474
Conversation
The new icx compiler is a bit smarter about checking for memory errors and a new one was discovered which causes OpenFAST to crap when calling MAP_End. The error is due to the OutputList nodes containing pointers to memory which has already been freed. This is due to the way the OutputList is constructed where nodes from other lists (containing pointers to string memory) were appended without allocating new memory. So when the original list was freed, these pointers became invalid, but then the OutputList tried to free them again, resulting in a double free error. To fix this issue, set_output_list was changed to allocate new memory for copies of these nodes.
Fix crash in MAP_End when using Intel's new icx compiler and disable caching in setup-python GH action
Update GHCR doc, remove old Dockerfile
* FEA: Add python package outline * REF: Rename python distribution/package to `openfast_python` / `openfast` * FEA: Move OpenFAST readers/writers over from WEIS * DEP: Add `pcrunch` dependency * REF: Update import paths from `weis` to `openfast` * DOC: Add contributors from WEIS to `authors` in `pyproject.toml` * DOC: Add brief explanation of `openfast` package to sub-readme * OPS: Fix format for authors names/emails * TST: Copy test from WEIS * OPS: Move `pyproject.toml` to top level * OPS: Publish `openfast` package to PyPI on release * TST: Add test data for `openfast` python package * REF: Remove extra python files * DOC: Adjust readme wording * DOC: Use link to specific git ref instead of `main` branch in readme * OPS: Add note about not relying on the `octue-openfast` package * OPS: Allow workflow dispatch of `deploy` workflow * WIP: Temporarily change name of python package * Deleting files related to running OpenFAST, Restructuring to be IO reading and writing only * setting ROSCO as optional, removing lin * updating the test files before move to r-test * removing rosco and pcrunch as deps * OpenFAST Output & Lin reader * Adding Oputput reader to test * Pointing test to one r-test case, removing test_data * Changing library name to openfast_io * OPS: Move poetry files into distribution root and rename package * REF: Rename package to `openfast_io` * DEP: Add `rosco` as optional dependency * DOC: Add installation instructions to python package readme * DOC: Fix docker commands for GHCR images * DOC: Add python package installation to docs * DOC: Update python package readme * WIP: Temporarily rename python package * OPS: Set working directory for python package build and publish * WIP: Temporarily change python package version * FIX: Update python package import paths * WIP: Increment temporary version number * replaced references to weis within code. * added Apache-2.0 license to pyproject.toml --------- Co-authored-by: Mayank Chetan <mayankchetan@gmail.com>
…to enable/disable openfastcpp so yaml-cpp isn't required for openfastcpplib
Always build openfastcpplib as shared. Use BUILD_OPENFAST_CPP_DRIVER to disable openfastcpp executable
…ddressing or null pointer dereferencing - CountWords would scan past end of line - ProcessComFile Cleanup would dereference a null pointer when getting NextFile pointer - WrScr would hide a character string allocation which caused a memory issue in ifx
Some of these values were not getting zeroed out. This was occasionally leading to spurious root acceleration values when memory that was previously occupied by something else non-zero was used.
Also moved the zeroing into the `else` part of the error checking instead of after -- we could potentially have triggered memory violations otherwise and not gotten our error back.
We were having problems with the `!OMP` directives around high resolution file reading in AWAE.f90. Since the file reading starts with a call to `GetNewUnit` before starting the opening, parallel calls to `GetNewUnit` could result in the same unit number handed out to two processes. The first process would open the file and start reading, but then the second process would open a different file with the same unit number causing read errors for both processes as they attempted to read the same file at the same time. Adding `$OMP critical` around the `GetNewUnit` and following `OpenFile...` calls so that in theory these cannot be done in parallel. Co-authored-by: Derek Slaughter <deslaughter@gmail.com>
Add !$ OMP critical around file opening for VTK
The old line length was 1024 characters. Increased this to 8192 -- May be need in HD if a large number of floating bodies are specified
FileInfoType: increase line length allowed
…s when more than 9 potential-flow bodies are present
HD bug fix: prevent array index out-of-bound error in HDOut_MapOutputs when more than 9 potential-flow bodies are present
…mbers less than 5e-5
…on of numbers less than 5e-5" This reverts commit f93ef05.
BeamDyn performance improvements
We have been having issues with stack overflows in FAST.Farm when large wind grids were passed to AWAE. This was eventually tracked down to line 1078 in AWAE.f90 which reads: `m%u_IfW_Low%PositionXYZ = p%Grid_low` The `p%Grid_low` is of unknown size at compile time, but can be extremely large (3x160000 or more). 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 the `/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. Testing shows that this fixes issue #2053, and will likely also solve #843 and #2241 See https://www.intel.com/content/www/us/en/docs/fortran-compiler/developer-guide-reference/2024-2/heap-arrays.html for reference.
Fix for some stack overflow issues with FAST.Farm
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.
Thanks for coordinating this release. A few comments below.
Hi @andrew-platt, looking forward to this release💥 Just wanted to check if you're planning to release the new python package to PyPI as part of it? There's a short checklist in the PR description here if so |
Hi @cortadocodes! We are planning it with the next release v4.0. I have copied over your checklist to the new PR :) See RP here: #2361 |
Thanks to @pablo-benito for noticing the typo
69c4170
to
efad7a3
Compare
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.
Thanks for addressing my original comments!
Feature or improvement description
Pull request to merge
rc-3.5.4
intomain
and create a tagged release for v3.5.4.See the milestone and project pages for additional information
Test results, if applicable
See GitHub Actions
Release checklist:
Changelog
Overview
This release includes performance improvements for BeamDyn (up to 30% speed increase), python file readers and writers from WEIS, and a fix for stack overflows with FAST.Farm (Intel compilation). A few other minor updates are included as outlined below.
Anyone using BeamDyn will want to update to this version.
General
Build systems
#2311 Always build
openfastcpplib
as shared. UseBUILD_OPENFAST_CPP_DRIVER
to disableopenfastcpp
executable (@deslaughter)#2173 Fix crash in
MAP_End
when using Intel's new icx compiler and disable caching in setup-python GH action (@deslaughter)Python file readers/writers
#2188 Add WEIS file readers and writers (@cortadocodes and @mayankchetan)
Solvers
FAST.Farm
#2452 Fix for some stack overflow issues with FAST.Farm when copying large amounts of wind data (closes #2053) (@andrew-platt)
#2340 Add
!$ OMP critical
around file opening for VTK to prevent file collision (@andrew-platt)Module changes
BeamDyn
#2399 BeamDyn performance improvements (@deslaughter)
ElastoDyn
#2321 Backport of #2317: Explicitly initialize
ED
RtHS
to zero -- corrects issue with inccorect linearization results (@andrew-platt)HydroDyn
#2397 HD bug fix: prevent array index out-of-bound error in
HDOut_MapOutputs
when more than 9 potential-flow bodies are present (@luwang00)NWTC-Library
#2389 FileInfoType: increase line length allowed (@andrew-platt)
Input file changes
No input files change with this release, as this only includes minor bugfixes.
Full list of changes: https://openfast.readthedocs.io/en/main/source/user/api_change.html
Full input file sets: https://github.com/OpenFAST/r-test/tree/v3.5.4 (example input files from the regression testing)