Skip to content
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

Merged
merged 39 commits into from
Oct 29, 2024
Merged

Release 3.5.4 #2474

merged 39 commits into from
Oct 29, 2024

Conversation

andrew-platt
Copy link
Collaborator

@andrew-platt andrew-platt commented Oct 21, 2024

Feature or improvement description
Pull request to merge rc-3.5.4 into main and create a tagged release for v3.5.4.

See the milestone and project pages for additional information

https://github.com/OpenFAST/openfast/milestone/14

Test results, if applicable
See GitHub Actions

Release checklist:

  • Update the documentation version in docs/conf.py
  • Update the versions in docs/source/user/api_change.rst
  • Verify readthedocs builds correctly
  • Create a tag in OpenFAST
  • Create a merge commit in r-test and add a corresponding annotated tag
  • Compile executables for Windows builds
    • AeroDyn_Driver_x64.exe
    • AeroDyn_Driver_x64_OpenMP.exe
    • AeroDyn_Inflow_C_Binding_x64.dll
    • AeroDyn_Inflow_C_Binding_x64_OpenMP.dll
    • BeamDyn_Driver_x64.exe
    • DISCON.dll (x64)
    • DISCON_ITIBarge.dll (x64)
    • DISCON_OC3Hywind.dll (x64)
    • DISCON_SC.dll (x64)
    • FAST.Farm_x64.exe
    • FAST.Farm_x64_OMP.exe
    • FAST_SFunc.mexw64
    • HydroDynDriver_x64.exe
    • HydroDyn_C_Binding_x64.dll
    • IfW_C_Binding_x64.dll
    • InflowWind_Driver_x64.exe
    • InflowWind_Driver_x64_OpenMP.exe
    • MoorDyn_Driver_x64.exe
    • MoorDyn_C_Binding_x64.dll
    • OpenFAST-Simulink_x64.dll
    • openfast_x64.exe
    • Turbsim_x64.exe

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. Use BUILD_OPENFAST_CPP_DRIVER to disable openfastcpp 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)

deslaughter and others added 30 commits April 23, 2024 15:36
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
…on of numbers less than 5e-5"

This reverts commit f93ef05.
andrew-platt and others added 5 commits September 20, 2024 14:42
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
@andrew-platt andrew-platt self-assigned this Oct 21, 2024
@andrew-platt andrew-platt added this to the v3.5.4 milestone Oct 21, 2024
@andrew-platt andrew-platt changed the title Rc 3.5.4 Release 3.5.4 Oct 21, 2024
Copy link
Collaborator

@jjonkman jjonkman left a 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.

docs/changelogs/v3.5.4.md Outdated Show resolved Hide resolved
docs/changelogs/v3.5.4.md Show resolved Hide resolved
@cortadocodes
Copy link
Contributor

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

@mayankchetan
Copy link
Contributor

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
Copy link
Collaborator

@jjonkman jjonkman left a 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!

@andrew-platt andrew-platt merged commit 6a63db7 into main Oct 29, 2024
58 checks passed
@andrew-platt andrew-platt deleted the rc-3.5.4 branch October 30, 2024 17:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

FAST.Farm
7 participants