ENH: changes reducing the peak memory consumption of shape sensitivities
The multiplier of grad(dxdb) is a volTensorField which, by itself, is memory consuming. The function computing it though was sloppy in terms of memory management, constituting the peak memory consumption during an adjoint optimisation. Initial changes to remedy the problem include the deallocation of some of the volTensorFields included in the computation of grad(dxdb) once unneeded, the utilisation of volSymmTensorFields instead of volTensorFields where possible and avoiding allocating some unnecessary intermediate fields. Actions to further reduce memory consumption: - For historical reasons, the code computes/stores the transpose of grad(dxdb), which is then transposed when used in the computation of the FI or the ESI sensitivity derivatives. This redundant transposition can be avoid, saving the allocation of an additional volTensorField, but the changes need to permeate a number of places in the code that contribute to grad(dxdb) (e.g. ATC, adjoint turbulence models, adjoint MRF, etc). - Allocation of unnecessary pointers in the objective class should be avoided.
Showing
- src/optimisation/adjointOptimisation/adjoint/optimisation/adjointSensitivity/incompressible/FIBase/FIBaseIncompressible.C 7 additions, 5 deletions...tSensitivity/incompressible/FIBase/FIBaseIncompressible.C
- src/optimisation/adjointOptimisation/adjoint/optimisation/adjointSensitivity/incompressible/sensitivitySurface/sensitivitySurfaceIncompressible.C 99 additions, 92 deletions...ble/sensitivitySurface/sensitivitySurfaceIncompressible.C
- src/optimisation/adjointOptimisation/adjoint/optimisation/adjointSensitivity/incompressible/sensitivitySurfacePoints/sensitivitySurfacePointsIncompressible.C 98 additions, 91 deletions...itySurfacePoints/sensitivitySurfacePointsIncompressible.C
- src/optimisation/adjointOptimisation/adjoint/optimisation/adjointSensitivity/incompressible/sensitivityVolBSplinesFI/sensitivityVolBSplinesFIIncompressible.C 54 additions, 71 deletions...ityVolBSplinesFI/sensitivityVolBSplinesFIIncompressible.C
- src/optimisation/adjointOptimisation/adjoint/optimisation/adjointSensitivity/incompressible/shapeSensitivities/shapeSensitivitiesIncompressible.C 7 additions, 4 deletions...ble/shapeSensitivities/shapeSensitivitiesIncompressible.C
- src/optimisation/adjointOptimisation/adjoint/solvers/adjointSolvers/incompressible/incompressibleAdjointSolver/incompressibleAdjointSolver.C 81 additions, 112 deletions...incompressibleAdjointSolver/incompressibleAdjointSolver.C
Please register or sign in to comment