-
Notifications
You must be signed in to change notification settings - Fork 148
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
Running tests and interpreting results towards establishing a baseline for regression testing #82
Comments
I spent most of the day trying other examples and trying to break them using different amounts of processors. They reproduce the same results no matter how many processes I set for them and the results are the same across the platforms. The two other examples I have been working with are: ocean_only/Phillips_2layer and ocean_only/DOME. For the ocean_only/Phillips_2layer, checking the difference in the ocean.stats vs ocean.stats.gnu, the only difference is in the Frac Mass Err. ocean.stats.gnu (from github):
ocean.stats (recent run):
|
The numbers in ocean.stats.* are meant to be independent of processor count and layout. If they are not, there is a bug. Unfortunately, the values are very much a function of compiler, compiler version and chipset. Testing and validating across different platforms that give different "bits" is something we've had multiple discussions about but have no good solution for (yet).
This is confusing (to me as well as you) - I would expect the exact opposite based on what I said above. Was the 4-PE and 8-PE run on the same platform with the same executable? I just checked that 4- and 8-PEs gives the same answers as each other on my laptop (Ubuntu, gfortran 4.9.2, running under Oracle VirtualBox) for both double_gyre and Phillips. We check this routinely and and almost continuously. So I am quite confused but based on your second post I might be misreading your report. To establish a baseline is a very good idea. The challenge is how to maintain them. For example, we just had a pair of bugs reported to do with vertical viscosity that will change a lot of the answers and we will update ocean.stats.* when we fix the bugs. But we can only do that on our own platform and you'll have to "notice" that the answers changed and regenerate some new ocean.stats of your own. Coordinating this is challenging but we do need to do something. Re: second post
Good. That is what we like to see - I wish things were as unbreakable here! This second post suggests you do have layout/count independent results afterall? |
In all cases, I use the same executable for each platform. I noticed for the double_gyre, you need to make sure the Depth_list.nc is deleted between runs or you will amazingly get the same checksums. Rerun the 4-PE and 8-PE tests and I think you will get different results. How much cleanup is required between runs? This is what I did just recently.
The pattern is weird. For the 4-PE, I can produce the same checksums across the platforms. For the 8-PE test for double-gyre, I get different checksums, but these different ones match across platforms. Actually, let me attach a console log of two runs with 4-PE and 8-PE with cleared out files. The third run is the 4-PE without clearing files out. You will see that I get the 8-PE checksums for the third 4-PE run when they were clearly different in the first run. |
Did you hear the forehead slaps coming from New Jersey? The Ideally we need a way to calculate the sorted list and cumulative sums in a way that is independent of core count. One way could be to generate this file with a 1-core run and then use that file for all tests but 1-core runs are impractical. Alternatively, since we already have reproducing sums, @Hallberg-NOAA thinks we should be able to implement a reproducing cumulative sum. In the meantime, I'm also wondering if it would be better to not use APE in the regression metrics. APE is useful for looking at solutions but this core count dependence gotcha reminds me we need to be very careful about selecting metrics. |
It appears the suggestion of removing APE from the Energy metric prompted development of a solution. When you see the fix (shortly), be sure to remove exisiting |
This has been corrected by revising the code that created the ordered list of depths and areas. It is now assured to generate |
Rewrote the section of create_depth_list that sets up a list of all depths. This list will now be guaranteed to have the same order of cells as if had been created by a single-PE run. This can change the reported energies if CALCULATE_APE is true and the topography and area are internally generated or read from a 64-bit file, but it just so happens not to change any of the existing reference solutions. In addition, dOxyGen comments were added to create_depth_list. This commit addresses and closes Issue NOAA-GFDL/MOM6-examples#82
This issue was closed by commit NOAA-GFDL/MOM6@1621b6b |
…/master - PR from NCAR - Also updates global_ALE/*/available_diags.000000 Changes: - NOAA-GFDL/MOM6@f9c260d Merge branch 'gustavo-marques-sync_dev_master_19Dec18' into dev/master - NOAA-GFDL/MOM6@fb27736 Fixed line lengths >120 - NOAA-GFDL/MOM6@7e76893 Proper syntax is overrated. Fix more of them. - NOAA-GFDL/MOM6@c9c88de Fix more syntax errors - NOAA-GFDL/MOM6@e67fdaf Fix syntax errors - NOAA-GFDL/MOM6@ddb73dc Rename meltw to seaice_melt and melth to seaice_melt_heat - NOAA-GFDL/MOM6@aaed093 Merge branch 'dev/master' into sync_dev_master_19Dec18 - NOAA-GFDL/MOM6@a68376b Merge pull request #88 from gustavo-marques/vectors_rotation__mct - NOAA-GFDL/MOM6@10fb249 Rotate fields from different coordinates - NOAA-GFDL/MOM6@c7121e5 Merge pull request #87 from gustavo-marques/update_mct_fluxes - NOAA-GFDL/MOM6@4b81577 Fix indices bug in ocn_import - NOAA-GFDL/MOM6@08145fe Merge branch 'dev/ncar' into update_mct_fluxes - NOAA-GFDL/MOM6@dd6cb7f Merge pull request #86 from gustavo-marques/bug_fix_convert_IOB_to_forces - NOAA-GFDL/MOM6@88fd8c6 Change end do to enddo - NOAA-GFDL/MOM6@acc2ef5 Move pointer assignment outside of the loop - NOAA-GFDL/MOM6@a910cd0 Adds meltw into net_mass_src - NOAA-GFDL/MOM6@c284cdd Adds meltw and melth into FW_in and heat_in, respectively - NOAA-GFDL/MOM6@07b8936 Merge branch 'dev/ncar' into update_mct_fluxes - NOAA-GFDL/MOM6@24cdc5c Add heat_content_meltw - NOAA-GFDL/MOM6@ca03196 Merge pull request #84 from gustavo-marques/merge-dev-master-candidate-2018-10-15 - NOAA-GFDL/MOM6@3cd18ca Sets CS%ignore_fluxes_over_land = .false. when ePBL is not used - NOAA-GFDL/MOM6@622d19e Delete comment on whether meltw is needed in PRmE - NOAA-GFDL/MOM6@cd2648d Take meltw into account when adjust_net_fresh_water_to_zero=true - NOAA-GFDL/MOM6@9ede781 Merge branch 'dev-master-candidate-2018-10-15' into merge-dev-master-candidate-2018-10-15 - NOAA-GFDL/MOM6@f44b215 Merge branch 'dev-master-candidate-2018-10-15' into merge-dev-master-candidate-2018-10-15 - NOAA-GFDL/MOM6@7194593 Re-introduces salt_flux contribution into net_FW - NOAA-GFDL/MOM6@6acc499 Ignores volume flux of sea ice via reverse engineering - NOAA-GFDL/MOM6@9b0af26 Adds meltw and melth into fluxes - NOAA-GFDL/MOM6@d581094 Updates MCT doxygen after adding meltw and melth - NOAA-GFDL/MOM6@918f218 Adds meltw (water flux from seaice and snow) - NOAA-GFDL/MOM6@67e70c5 Add more complete description of Fioi_meltw - NOAA-GFDL/MOM6@70779e6 Deletes TODO comments. Signs are correct. - NOAA-GFDL/MOM6@e495d0c Add heat flux term deu to melt/freeze of sea ice - NOAA-GFDL/MOM6@a3dbe02 Merge pull request #81 from gustavo-marques/fix_salt_flux - NOAA-GFDL/MOM6@a2e9c1e Merge branch 'dev/ncar' into fix_salt_flux - NOAA-GFDL/MOM6@48582eb Merge pull request #82 from NOAA-GFDL/dev/master - NOAA-GFDL/MOM6@6f12f84 Adds a missing parameter and fixes a bug
Resovled conflicts: - ocean_only/global_ALE/layer/available_diags.000000 - ocean_only/global_ALE/z/available_diags.000000 MOM6 commits inside merge of dev/master to dev/gfdl: - NOAA-GFDL/MOM6@6dd6f52 Merge branch 'dev/master' into dev/gfdl - NOAA-GFDL/MOM6@f9c260d Merge branch 'gustavo-marques-sync_dev_master_19Dec18' into dev/master - NOAA-GFDL/MOM6@fb27736 Fixed line lengths >120 - NOAA-GFDL/MOM6@c401055 Merge pull request #886 from Hallberg-NOAA/unit_rescale_comments - NOAA-GFDL/MOM6@7e76893 Proper syntax is overrated. Fix more of them. - NOAA-GFDL/MOM6@c9c88de Fix more syntax errors - NOAA-GFDL/MOM6@e67fdaf Fix syntax errors - NOAA-GFDL/MOM6@ddb73dc Rename meltw to seaice_melt and melth to seaice_melt_heat - NOAA-GFDL/MOM6@06631bd Documented 93 thermodynamic variable units - NOAA-GFDL/MOM6@dea748a Documented 170 variable units - NOAA-GFDL/MOM6@ea5c097 Documented 116 tracer variable units - NOAA-GFDL/MOM6@bf1fa4b Documented 288 parameterization variable units - NOAA-GFDL/MOM6@c2473a7 Documented 300 miscellaneous variable units - NOAA-GFDL/MOM6@026f7d8 Documented units of 50 grid variables - NOAA-GFDL/MOM6@00b3289 Documented units of 110 core variables - NOAA-GFDL/MOM6@3d0c946 Documented units of 280 more variables - NOAA-GFDL/MOM6@e0c3d49 Documented temperature variable units - NOAA-GFDL/MOM6@6976ac6 Documented density variable units - NOAA-GFDL/MOM6@78e9659 Documented miscellaneous variable units - NOAA-GFDL/MOM6@00a8cdc dOxyGenize ice_solo_driver/MOM_surface_forcing.F90 - NOAA-GFDL/MOM6@17c4608 Document frequency units with square brackets - NOAA-GFDL/MOM6@dd34d00 Document velocity units with square brackets - NOAA-GFDL/MOM6@23eea80 Document more variable units with square brackets - NOAA-GFDL/MOM6@e424e0b Document additional thickness variable units - NOAA-GFDL/MOM6@9df0655 Use square-brackets in thickness documentation - NOAA-GFDL/MOM6@aaed093 Merge branch 'dev/master' into sync_dev_master_19Dec18 - NOAA-GFDL/MOM6@ad18eaf Use square-brackets in height documentation - NOAA-GFDL/MOM6@7dab975 Updated comments explaining the '~>' notation - NOAA-GFDL/MOM6@0e2066d Use square-bracket syntax in unit documentation - NOAA-GFDL/MOM6@a68376b Merge pull request #88 from gustavo-marques/vectors_rotation__mct - NOAA-GFDL/MOM6@10fb249 Rotate fields from different coordinates - NOAA-GFDL/MOM6@c2d6ff1 Further reduced use of square brackets in comments - NOAA-GFDL/MOM6@53f947c Reduced use of square brackets in comments - NOAA-GFDL/MOM6@c7121e5 Merge pull request #87 from gustavo-marques/update_mct_fluxes - NOAA-GFDL/MOM6@80b7ba9 Extended comments to clarify H units - NOAA-GFDL/MOM6@f8ee1e6 Renamed internal variables in EF4 - NOAA-GFDL/MOM6@83b410d Added comments explaining the '~>' notation - NOAA-GFDL/MOM6@4b81577 Fix indices bug in ocn_import - NOAA-GFDL/MOM6@08145fe Merge branch 'dev/ncar' into update_mct_fluxes - NOAA-GFDL/MOM6@dd6cb7f Merge pull request #86 from gustavo-marques/bug_fix_convert_IOB_to_forces - NOAA-GFDL/MOM6@88fd8c6 Change end do to enddo - NOAA-GFDL/MOM6@acc2ef5 Move pointer assignment outside of the loop - NOAA-GFDL/MOM6@a910cd0 Adds meltw into net_mass_src - NOAA-GFDL/MOM6@c284cdd Adds meltw and melth into FW_in and heat_in, respectively - NOAA-GFDL/MOM6@62709d7 Extended comments to clarify Z units - NOAA-GFDL/MOM6@47a3574 Merge pull request #885 from nikizadehgfdl/nikizadehgfdl/fix_compile_generics - NOAA-GFDL/MOM6@16d0745 This update fixes compilation issues of ESM - NOAA-GFDL/MOM6@28a83f1 Merge branch 'Hallberg-NOAA-rescale_topography' into dev/gfdl - NOAA-GFDL/MOM6@27e3a1d Merge branch 'rescale_topography' of https://github.com/Hallberg-NOAA/MOM6 into Hallberg-NOAA-rescale_topography - NOAA-GFDL/MOM6@378eb63 Merge branch 'Hallberg-NOAA-eliminate_Zd_to_m' into dev/gfdl - NOAA-GFDL/MOM6@50d1aeb Merge branch 'eliminate_Zd_to_m' of https://github.com/Hallberg-NOAA/MOM6 into Hallberg-NOAA-eliminate_Zd_to_m - NOAA-GFDL/MOM6@2925a58 Merge branch 'MFJansen-dev/gfdl' into dev/gfdl - NOAA-GFDL/MOM6@07b8936 Merge branch 'dev/ncar' into update_mct_fluxes - NOAA-GFDL/MOM6@24cdc5c Add heat_content_meltw - NOAA-GFDL/MOM6@5e5e315 Adds random noise option for Neverland IC - NOAA-GFDL/MOM6@45a6400 Added run-time parameter for Neverland perturbation - NOAA-GFDL/MOM6@de69ac0 Merge branch 'dev/gfdl' of https://github.com/MFJansen/MOM6 into MFJansen-dev/gfdl - NOAA-GFDL/MOM6@604a716 Rescale topography during initialization - NOAA-GFDL/MOM6@bc808be +Rescale topography in MOM_shared_initialization - NOAA-GFDL/MOM6@74014e7 Better comments in initialize_topography routines - NOAA-GFDL/MOM6@c9517fe +Rescale depth in USER_initialize_topography - NOAA-GFDL/MOM6@8560c62 +Rescale depth in shelfwave_initialize_topography - NOAA-GFDL/MOM6@c40b482 +Rescale depth in benchmark_initialize_topography - NOAA-GFDL/MOM6@e543439 +Rescale depth in Phillips_initialize_topography - NOAA-GFDL/MOM6@f272edc +Rescale depth in Kelvin_initialize_topography - NOAA-GFDL/MOM6@771e44f +Rescale depth in ISOMIP_initialize_topography - NOAA-GFDL/MOM6@a1653f6 +Rescale depth in DOME_initialize_topography - NOAA-GFDL/MOM6@f909e93 Merge branch 'dev/gfdl' into eliminate_Zd_to_m - NOAA-GFDL/MOM6@7f73764 +Recast ustar_gustless into Z/s - NOAA-GFDL/MOM6@5810cf0 Recast internal MOM_barotropic variables into Z - NOAA-GFDL/MOM6@fac1464 +Eliminated Zd_to_m from grid types - NOAA-GFDL/MOM6@3d4c891 +Add optional unit_scale_type arg to initialize_masks - NOAA-GFDL/MOM6@6c47801 +Add unit_scale_type arg to MOM_sum_output_init - NOAA-GFDL/MOM6@366efc8 +Add unit_scale_type arg to MOM_initialize_fixed - NOAA-GFDL/MOM6@d2bfd73 +Add unit_scale_type argument to diag_remap_update - NOAA-GFDL/MOM6@47909a1 Added perturbations to initial layer thicknesses in Neverland - NOAA-GFDL/MOM6@9ac67cc +Add unit_scale_type argument to tracer_Z_init - NOAA-GFDL/MOM6@967e470 +Rescaled variables in MOM_tidal_mixing - NOAA-GFDL/MOM6@375bab5 +Rescaled variables in MOM_internal_tides - NOAA-GFDL/MOM6@dcdc509 +Add US arg to set_up_ALE_sponge_vel_field_varying - NOAA-GFDL/MOM6@ca03196 Merge pull request #84 from gustavo-marques/merge-dev-master-candidate-2018-10-15 - NOAA-GFDL/MOM6@3cd18ca Sets CS%ignore_fluxes_over_land = .false. when ePBL is not used - NOAA-GFDL/MOM6@622d19e Delete comment on whether meltw is needed in PRmE - NOAA-GFDL/MOM6@cd2648d Take meltw into account when adjust_net_fresh_water_to_zero=true - NOAA-GFDL/MOM6@9ede781 Merge branch 'dev-master-candidate-2018-10-15' into merge-dev-master-candidate-2018-10-15 - NOAA-GFDL/MOM6@f44b215 Merge branch 'dev-master-candidate-2018-10-15' into merge-dev-master-candidate-2018-10-15 - NOAA-GFDL/MOM6@7194593 Re-introduces salt_flux contribution into net_FW - NOAA-GFDL/MOM6@6acc499 Ignores volume flux of sea ice via reverse engineering - NOAA-GFDL/MOM6@9b0af26 Adds meltw and melth into fluxes - NOAA-GFDL/MOM6@d581094 Updates MCT doxygen after adding meltw and melth - NOAA-GFDL/MOM6@918f218 Adds meltw (water flux from seaice and snow) - NOAA-GFDL/MOM6@67e70c5 Add more complete description of Fioi_meltw - NOAA-GFDL/MOM6@70779e6 Deletes TODO comments. Signs are correct. - NOAA-GFDL/MOM6@e495d0c Add heat flux term deu to melt/freeze of sea ice - NOAA-GFDL/MOM6@a3dbe02 Merge pull request #81 from gustavo-marques/fix_salt_flux - NOAA-GFDL/MOM6@a2e9c1e Merge branch 'dev/ncar' into fix_salt_flux - NOAA-GFDL/MOM6@48582eb Merge pull request #82 from NOAA-GFDL/dev/master - NOAA-GFDL/MOM6@6f12f84 Adds a missing parameter and fixes a bug
- Last commit updates doc strings - NOAA-GFDL/MOM6@0f4ebf607 Merge pull request #81 from Hallberg-NOAA/add_Hybgen_remapping - NOAA-GFDL/MOM6@3675c2169 +Add Hybgen remapping options - NOAA-GFDL/MOM6@6e85b236a Merge pull request #78 from Hallberg-NOAA/fix_homogenize_forcing - NOAA-GFDL/MOM6@92f5a9861 Merge branch 'dev/gfdl' into fix_homogenize_forcing - NOAA-GFDL/MOM6@304294260 Fix nolibs build in CI pipeline - NOAA-GFDL/MOM6@d7b6f4fe6 Merge branch 'dev/gfdl' into fix_homogenize_forcing - NOAA-GFDL/MOM6@ab50f0ee3 Merge pull request #82 from marshallward/offline_static_bugfix - NOAA-GFDL/MOM6@efa503bd2 bugfix: static h_new shape remaining_transport_sum - NOAA-GFDL/MOM6@464046138 (*)Avoid negative thicknesses in mixed_layer_restrat - NOAA-GFDL/MOM6@fa2832c11 +(*)Rescale variables with homogenize_forcing - NOAA-GFDL/MOM6@b3e80f73f +(*)Add tmp_scale arguments to global_area_mean
I've been successful at running a couple of test problems on two types of Amazon EC2 instances. I get consistent test results between the two instances. I can also obtain consistent results using the wiki instructions and the Makefile. For one problem, I get different results if I choose a different number of processors. The test case that I am currently working with is ocean_only/double_gyre. The results were initially different between the Makefile and the wiki instructions. For the wiki I chose 4 for number of processors and in the Makefile the default is 8 processors -- that generated different results. Updating the Makefile to 4 and re-running obtains identical results. From this point on, I will just refer to using the instructions on the wiki.
My goal is to establish some sort of baseline for regression testing. I'd also be interested in automatically testing the 2x2 matrix of static vs. dynamic and symmetric vs. non-symmetric. No matter what mode, we should theoretically arrive at the same result? Will there be a different baseline/checksum obtained for different compiler/cpu?
First, lets look at instance details & compilers. I've added a local Ubuntu system (home laptop).
A.
c4.large 2 vCPU 3.75Gb RAM
High frequency Intel Xeon E5-2666 v3 (Haswell) processors optimized specifically for EC2
Fedora Core 21
Compiler: gcc version 4.9.2 20150212 (Red Hat 4.9.2-6) (GCC)
OpenMPI: 1.8.3
Netcdf-fortran-openmpi: 4.2
B.
m4.xlarge 4 vCPU 16Gb RAM
2.4 GHz Intel Xeon® E5-2676 v3 (Haswell) processors
Fedora Core 23
Compiler: gcc version 5.3.1 20160406 (Red Hat 5.3.1-6) (GCC)
OpenMPI: 1.8.8
Netcdf-fortran-openmpi: 4.3.3.1
C.
Laptop 4 CPU 8 Gb RAM
Intel(R) Core(TM) i3-2310M CPU @ 2.10GHz
Ubuntu 14.04
Compiler: gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.1)
OpenMPI: 1.6.5
Netcdf: 4.1.3
I have carefully run tests with 4 and 8 processors. The results across A, B and C are consistent, but the results differ between 4 and 8 processors/threads. Is this reasonable to see a change between number of processors? Would this be considered our baseline for running this test?
4 processors:
(rm Depth_list.nc; . ./../../build/gnu/env ; mpirun -np 4 ../../build/gnu/ocean_only/repro/MOM6)
MOM Day 0.000 0: En 1.424331E-13, MaxCFL 0.00000, Mass 5.288178268008E+18 Total Energy: 4126FC775E10DF73 7.5321168372247962E+05 Total Mass: 5.2881782680077681E+18, Change: 0.0000000000000000E+00 Error: 0.00000E+00 ( 0.0E+00)
MOM Day 1.000 72: En 4.580432E-06, MaxCFL 0.00023, Mass 5.288178268008E+18 Total Energy: 42B607A80A851DA8 2.4222139843869656E+13 Total Mass: 5.2881782680077681E+18, Change: -1.7202096100332227E+01 Error: -1.72021E+01 (-3.3E-18) ....
8 processors:
(rm Depth_list.nc; . ./../../build/gnu/env ; mpirun -np 8 ../../build/gnu/ocean_only/repro/MOM6)
MOM Day 0.000 0: En 1.424361E-13, MaxCFL 0.00000, Mass 5.288178268008E+18 Total Energy: 4126FC96B8ADCFE7 7.5322736070108123E+05 Total Mass: 5.2881782680077681E+18, Change: 0.0000000000000000E+00 Error: 0.00000E+00 ( 0.0E+00)
MOM Day 1.000 72: En 4.580432E-06, MaxCFL 0.00023, Mass 5.288178268008E+18 Total Energy: 42B607A80A852EA4 2.4222139843886641E+13 Total Mass: 5.2881782680077681E+18, Change: -1.7202096100332227E+01 Error: -1.72021E+01 (-3.3E-18) ....
The text was updated successfully, but these errors were encountered: