-
Notifications
You must be signed in to change notification settings - Fork 457
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
BeamDyn performance improvements #2399
Conversation
…mbers less than 5e-5
modules/beamdyn/tests/test_tools.F90
Outdated
@@ -173,8 +173,8 @@ type(BD_MiscVarType) function simpleMiscVarType(nqp, dof_node, elem_total, nodes | |||
call AllocAry(m%qp%RR0mEta, 3, nqp, elem_total, 'qp_RR0mEta', ErrStat, ErrMsg) | |||
call AllocAry(m%DistrLoad_QP, 6, nqp, elem_total, 'DistrLoad_QP', ErrStat, ErrMsg) | |||
|
|||
CALL AllocAry(m%qp%uuu, dof_node ,nqp,elem_total, 'm%qp%uuu displacement at quadrature point',ErrStat,ErrMsg) | |||
CALL AllocAry(m%qp%uup, dof_node/2,nqp,elem_total, 'm%qp%uup displacement prime at quadrature point',ErrStat,ErrMsg) | |||
call AllocAry(m%qp%uuu, dof_node, nqp, elem_total, 'm%qp%uuu displacement at quadrature point', ErrStat, ErrMsg) |
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.
indenting looks a bit odd here.
Results are slightly different on linearization. It's a bit unknown if this a numerical artifact, or a real issue. Will explore further and potentially continue with it or close it. |
The rotor-only structural-only comparison for the IEA15 looks good. This is the same plot as Figure 1 in https://iopscience.iop.org/article/10.1088/1742-6596/2767/2/022018/pdf |
…on of numbers less than 5e-5" This reverts commit f93ef05.
no notable differences with Figure 4 in https://iopscience.iop.org/article/10.1088/1742-6596/2767/2/022018/pdf this plot was for commit f93ef05 sims are running for 56a97f6 we'll post new results tonight/tomorrow morning |
all good for 56a97f6 |
Decided that we really don't need to keep the error handling from |
This PR is ready to merge.
Feature or improvement description
This PR contains several commits that were developed during the Tight Coupling project to increase BeamDyn performance. They use
LAPACK_GEMM
routines to perform matrix multiplication inside BeamDyn during element construction. These changes have shown some performance improvement especially when using the Intel MKL library.This also changes some low level code in ModMesh, NWTC_Num, and ModMesh_Mapping which were identified as hotspots during performance profiling.
Impacted areas of the software
BeamDyn.f90
- useLAPACK_GEMM
in several routines, use subroutines to simplify some calculationsBeamDyn_Subs.f90
- useselect case
instead ofif
statements inBD_CrvCompose
NWTC_Num
- AddPURE
toCross_Product
functions to hint that these have no side effects (maybe the compiler can inline them)ModMesh.f90
- useselect case
instead ofif
statements inMeshCopy
to processCtrlCode
, should be easier to optimizeModMesh_Mapping.f90
- usemaxval
intrinsic instead of looping to find max value in matrix.Test results, if applicable
The following test references were updated:
Ideal_Beam_Free_Free_Linear
5MW_Land_BD_Linear
5MW_Land_BD_Linear_Aero