Conversation
Welcome to Codecov 🎉Once you merge this PR into your default branch, you're all set! Codecov will compare coverage reports and display results in all future pull requests. Thanks for integrating Codecov - We've got you covered ☂️ |
|
This is ready to review. This adds a CMake build for MOM6. The build supports building a library with access3 dependencies and building a standalone mom6. If you have time to review @micaeljtoliveira that would be great. @dougiesquire please review and confirm which is the right target branch for this PR? @minghangli-uni - please reivew too :) FYI @chrisb13 |
dougiesquire
left a comment
There was a problem hiding this comment.
Thanks @anton-seaice and @minghangli-uni. Looking great! One typo and a few questions, mostly about default settings.
Regarding which branch to use, I think it's probably best to use dev/access. There's an issue with the generic tracer changes that I need to resolve. We can still test most of our configs using dev/access, just not the WOMBAT one.
ok - we'd want to reset I thought |
I don't think we want to do this
I need to go and reread the new fork-management policy |
2a18bf5 to
d3d74ea
Compare
Co-authored-by: minghangli-uni <minghang.li1@anu.edu.au> Co-authored-by: Micael Oliveira <micael.oliveira@anu.edu.au> Co-authored-by: Dougie Squire <dougie.squire@anu.edu.au>
d3d74ea to
ddd3902
Compare
|
Apologies for the git chaos. Even though this change won't end up upstream (probably), we will merge into I removed the generic tracers changes which are not in |
|
I think I addressed all the comments. This is ready for re-review New builds: ACCESS-NRI/ACCESS-OM3#35 (comment) |
|
This is ready to merge, just holding off until we are tripley sure |
dougiesquire
left a comment
There was a problem hiding this comment.
Sorry, another thought:
I wonder if we should put CMakeLists.txt in the cmake directory. This might be preferred if/when we try to get this upstream.
* Add cmake build based on https://github.com/cOSIMA/access-om3 There are two variations, the default is to build the mom6 standalone executable, the alternative is to build a library for access3 models (with https://github.com/ACCESS-NRI/access3-share as a dependency). Co-authored-by: minghangli-uni <minghang.li1@anu.edu.au> Co-authored-by: Micael Oliveira <micael.oliveira@anu.edu.au> Co-authored-by: Dougie Squire <dougie.squire@anu.edu.au>
* Add cmake build based on https://github.com/cOSIMA/access-om3 There are two variations, the default is to build the mom6 standalone executable, the alternative is to build a library for access3 models (with https://github.com/ACCESS-NRI/access3-share as a dependency). Co-authored-by: minghangli-uni <minghang.li1@anu.edu.au> Co-authored-by: Micael Oliveira <micael.oliveira@anu.edu.au> Co-authored-by: Dougie Squire <dougie.squire@anu.edu.au>
* Add cmake build based on https://github.com/COSIMA/access-om3 There are two variations, the default is to build the mom6 standalone executable, the alternative is to build a library for access3 models (with https://github.com/ACCESS-NRI/access3-share as a dependency). Co-authored-by: Dougie Squire <dougie.squire@anu.edu.au> Co-authored-by: minghangli-uni <minghang.li1@anu.edu.au> Co-authored-by: Micael Oliveira <micael.oliveira@anu.edu.au>
* Add cmake build based on https://github.com/COSIMA/access-om3 There are two variations, the default is to build the mom6 standalone executable, the alternative is to build a library for access3 models (with https://github.com/ACCESS-NRI/access3-share as a dependency). Co-authored-by: Dougie Squire <dougie.squire@anu.edu.au> Co-authored-by: minghangli-uni <minghang.li1@anu.edu.au> Co-authored-by: Micael Oliveira <micael.oliveira@anu.edu.au>
* Add cmake build based on https://github.com/COSIMA/access-om3 There are two variations, the default is to build the mom6 standalone executable, the alternative is to build a library for access3 models (with https://github.com/ACCESS-NRI/access3-share as a dependency). Co-authored-by: Dougie Squire <dougie.squire@anu.edu.au> Co-authored-by: minghangli-uni <minghang.li1@anu.edu.au> Co-authored-by: Micael Oliveira <micael.oliveira@anu.edu.au>
* Add cmake build based on https://github.com/COSIMA/access-om3 There are two variations, the default is to build the mom6 standalone executable, the alternative is to build a library for access3 models (with https://github.com/ACCESS-NRI/access3-share as a dependency). Co-authored-by: Dougie Squire <dougie.squire@anu.edu.au> Co-authored-by: minghangli-uni <minghang.li1@anu.edu.au> Co-authored-by: Micael Oliveira <micael.oliveira@anu.edu.au>
* Add cmake build based on https://github.com/COSIMA/access-om3 There are two variations, the default is to build the mom6 standalone executable, the alternative is to build a library for access3 models (with https://github.com/ACCESS-NRI/access3-share as a dependency). Co-authored-by: Dougie Squire <dougie.squire@anu.edu.au> Co-authored-by: minghangli-uni <minghang.li1@anu.edu.au> Co-authored-by: Micael Oliveira <micael.oliveira@anu.edu.au>
* Add cmake build based on https://github.com/COSIMA/access-om3 There are two variations, the default is to build the mom6 standalone executable, the alternative is to build a library for access3 models (with https://github.com/ACCESS-NRI/access3-share as a dependency). Co-authored-by: Dougie Squire <dougie.squire@anu.edu.au> Co-authored-by: minghangli-uni <minghang.li1@anu.edu.au> Co-authored-by: Micael Oliveira <micael.oliveira@anu.edu.au>
* Add cmake build based on https://github.com/COSIMA/access-om3 There are two variations, the default is to build the mom6 standalone executable, the alternative is to build a library for access3 models (with https://github.com/ACCESS-NRI/access3-share as a dependency). Co-authored-by: Dougie Squire <dougie.squire@anu.edu.au> Co-authored-by: minghangli-uni <minghang.li1@anu.edu.au> Co-authored-by: Micael Oliveira <micael.oliveira@anu.edu.au>
* Add cmake build based on https://github.com/COSIMA/access-om3 There are two variations, the default is to build the mom6 standalone executable, the alternative is to build a library for access3 models (with https://github.com/ACCESS-NRI/access3-share as a dependency). Co-authored-by: Dougie Squire <dougie.squire@anu.edu.au> Co-authored-by: minghangli-uni <minghang.li1@anu.edu.au> Co-authored-by: Micael Oliveira <micael.oliveira@anu.edu.au>
* Add cmake build based on https://github.com/COSIMA/access-om3 There are two variations, the default is to build the mom6 standalone executable, the alternative is to build a library for access3 models (with https://github.com/ACCESS-NRI/access3-share as a dependency). Co-authored-by: Dougie Squire <dougie.squire@anu.edu.au> Co-authored-by: minghangli-uni <minghang.li1@anu.edu.au> Co-authored-by: Micael Oliveira <micael.oliveira@anu.edu.au>
* Add cmake build based on https://github.com/COSIMA/access-om3 There are two variations, the default is to build the mom6 standalone executable, the alternative is to build a library for access3 models (with https://github.com/ACCESS-NRI/access3-share as a dependency). Co-authored-by: Dougie Squire <dougie.squire@anu.edu.au> Co-authored-by: minghangli-uni <minghang.li1@anu.edu.au> Co-authored-by: Micael Oliveira <micael.oliveira@anu.edu.au> Co-authored-by: Jorge Galvez Vallejo <jorge.galvezvallejo@anu.edu.au>
* Add cmake build based on https://github.com/COSIMA/access-om3 There are two variations, the default is to build the mom6 standalone executable, the alternative is to build a library for access3 models (with https://github.com/ACCESS-NRI/access3-share as a dependency). Co-authored-by: Dougie Squire <dougie.squire@anu.edu.au> Co-authored-by: minghangli-uni <minghang.li1@anu.edu.au> Co-authored-by: Micael Oliveira <micael.oliveira@anu.edu.au> Co-authored-by: Jorge Galvez Vallejo <jorge.galvezvallejo@anu.edu.au>
* Add cmake build based on https://github.com/COSIMA/access-om3 There are two variations, the default is to build the mom6 standalone executable, the alternative is to build a library for access3 models (with https://github.com/ACCESS-NRI/access3-share as a dependency). Co-authored-by: Dougie Squire <dougie.squire@anu.edu.au> Co-authored-by: minghangli-uni <minghang.li1@anu.edu.au> Co-authored-by: Micael Oliveira <micael.oliveira@anu.edu.au> Co-authored-by: Jorge Galvez Vallejo <jorge.galvezvallejo@anu.edu.au>
* Add cmake build based on https://github.com/COSIMA/access-om3 There are two variations, the default is to build the mom6 standalone executable, the alternative is to build a library for access3 models (with https://github.com/ACCESS-NRI/access3-share as a dependency). Co-authored-by: Dougie Squire <dougie.squire@anu.edu.au> Co-authored-by: minghangli-uni <minghang.li1@anu.edu.au> Co-authored-by: Micael Oliveira <micael.oliveira@anu.edu.au> Co-authored-by: Jorge Galvez Vallejo <jorge.galvezvallejo@anu.edu.au>
* Add MOM_ANN module * Mesoscale momentum parameterization with ANN - Computes subgrid stress using ANN in MOM_Zanna_Bolton - Uses MOM_ANN module for ANN inference Equivalent MOM_override for defaults ``` USE_ZB2020 = True ZB2020_USE_ANN = True USE_CIRCULATION_IN_HORVISC = True ZB2020_ANN_FILE_TALL = /path/to/ocean3d/subfilter/FGR3/EXP1/model/Tall.nc ``` * Mesoscale momentum parameterization with ANN (#2) Blank commit after squash/rebase was handled on command line * Moved MOM_ANN.F90 to src/framework/ * Minor refactor of MOM_ANN - Removed unused modules - Removed unused MOM_memory.h - Added input and output means which default to 0 and do not need to be present in the weights file - Gave defaults to means, norms, tests so that they do no need to be present in file - Added missing array notation "(:)" - Minor formatting * Adds unit tests and timing test to MOM_ANN - Added ANN_allocate, set_layer, set_input_normalization, and set_output_normalization methods to allow reconfiguration during unit tests - Added ANN_unit_tests with some simple constructed-by-code networks with known solutions - Added config_src/drivers/unit_tests/test_MOM_ANN.F90 to drive unit tests - Added config_src/drivers/timing_tests/time_MOM_ANN.F90 as rudimentary for timing inference * Adding multiple forms of inference - Adds inference operating on array (instead of single vector of features) - Implements several different versions of inference with various loop orders - Involves storing the transpose of A in the type - Tested by checking inference on same inputs is identical between variants - Added randomizers to assist in unit testing - Adds timing of variants to config_src/drivers/timing/time_MOM_ANN.F90 - Adds an interface (MOM_apply) to select preferred version of inference subroutine - Added command line args to time_MOM_ANN.F90 to allow more rapid evaluation of performance Variants explored, timed with gfortran (13.2) -O3 on Xeon: - vector_v1: - original inference from Pavel - vector_v2: - allocate work arrays just once, using widest layer - loop over layers in 2's to avoid pointer calculations and copies - speed up, x0.8 relative to v1 - vector_v3: - transpose loops - slow down, x1.54 relative to v1 - vector_v4: - transpose weights with same loop order as v1 - slow down, x1.03 relative to v1 - array_v1: - same structure as v2, working on x(space,feature) input/outputs - speed up, x0.41 relative to v1 - array_v2: - as for array_v1 but with transposed loop order - apply activation function on vector of first index while in cache - speed up, x0.35 relative to v1 - array_v3: - same structure as v2, working on x(feature,space) input/outputs - speed up, x0.58 relative to v1 * Renamed ANN variants and added some module documentation - Added module dox - Renamed _v1, _v2 etc to labels - Added ANN_apply_array_sio to ANN_apply interface - Replaced "flops" with "MBps" in timing output * Removed alternative variants of ANN in favor of optimized - Deleted variants of ANN that did not perform as well as the two versions that remain. * Apply array_sio function in ANN inference for momentum fluxes (#5) * Apply array_sio ANN inference for computation of momentum fluxes * remove trailing space * Initial commit * address Robert Hallberg code review * Restore deafult value of ZB_SCALING coefficient --------- Co-authored-by: Alistair Adcroft <Alistair.Adcroft@noaa.gov> Co-authored-by: Alistair Adcroft <adcroft@users.noreply.github.com>
* Add cmake build based on https://github.com/COSIMA/access-om3 There are two variations, the default is to build the mom6 standalone executable, the alternative is to build a library for access3 models (with https://github.com/ACCESS-NRI/access3-share as a dependency). Co-authored-by: Dougie Squire <dougie.squire@anu.edu.au> Co-authored-by: minghangli-uni <minghang.li1@anu.edu.au> Co-authored-by: Micael Oliveira <micael.oliveira@anu.edu.au> Co-authored-by: Jorge Galvez Vallejo <jorge.galvezvallejo@anu.edu.au>
* Add cmake build based on https://github.com/COSIMA/access-om3 There are two variations, the default is to build the mom6 standalone executable, the alternative is to build a library for access3 models (with https://github.com/ACCESS-NRI/access3-share as a dependency). Co-authored-by: Dougie Squire <dougie.squire@anu.edu.au> Co-authored-by: minghangli-uni <minghang.li1@anu.edu.au> Co-authored-by: Micael Oliveira <micael.oliveira@anu.edu.au> Co-authored-by: Jorge Galvez Vallejo <jorge.galvezvallejo@anu.edu.au>
* Add cmake build based on https://github.com/COSIMA/access-om3 There are two variations, the default is to build the mom6 standalone executable, the alternative is to build a library for access3 models (with https://github.com/ACCESS-NRI/access3-share as a dependency). Co-authored-by: Dougie Squire <dougie.squire@anu.edu.au> Co-authored-by: minghangli-uni <minghang.li1@anu.edu.au> Co-authored-by: Micael Oliveira <micael.oliveira@anu.edu.au> Co-authored-by: Jorge Galvez Vallejo <jorge.galvezvallejo@anu.edu.au>
* Add cmake build based on https://github.com/COSIMA/access-om3 There are two variations, the default is to build the mom6 standalone executable, the alternative is to build a library for access3 models (with https://github.com/ACCESS-NRI/access3-share as a dependency). Co-authored-by: Dougie Squire <dougie.squire@anu.edu.au> Co-authored-by: minghangli-uni <minghang.li1@anu.edu.au> Co-authored-by: Micael Oliveira <micael.oliveira@anu.edu.au> Co-authored-by: Jorge Galvez Vallejo <jorge.galvezvallejo@anu.edu.au>
* Add cmake build based on https://github.com/COSIMA/access-om3 There are two variations, the default is to build the mom6 standalone executable, the alternative is to build a library for access3 models (with https://github.com/ACCESS-NRI/access3-share as a dependency). Co-authored-by: Dougie Squire <dougie.squire@anu.edu.au> Co-authored-by: minghangli-uni <minghang.li1@anu.edu.au> Co-authored-by: Micael Oliveira <micael.oliveira@anu.edu.au> Co-authored-by: Jorge Galvez Vallejo <jorge.galvezvallejo@anu.edu.au>
* Add cmake build based on https://github.com/COSIMA/access-om3 There are two variations, the default is to build the mom6 standalone executable, the alternative is to build a library for access3 models (with https://github.com/ACCESS-NRI/access3-share as a dependency). Co-authored-by: Dougie Squire <dougie.squire@anu.edu.au> Co-authored-by: minghangli-uni <minghang.li1@anu.edu.au> Co-authored-by: Micael Oliveira <micael.oliveira@anu.edu.au> Co-authored-by: Jorge Galvez Vallejo <jorge.galvezvallejo@anu.edu.au>
Open this PR to make some minor tweaks visible.
Closes #1