WRF-Fire merge testing: Difference between revisions

From openwfm
 
(34 intermediate revisions by 2 users not shown)
Line 1: Line 1:
[[Category:WRF-Fire merge]]
[[Category:WRF-Fire merge]]
* Base all future testing on {{wrf-fire-merge-branch|fuel-moisture-model-jm}}, add your own commits as necessary
 
''Please see [[Talk:WRF-Fire_merge_testing]] for permanent notes.''
 
==The basics==
 
The version to test is {{wrf-fire-merge-branch|fuel-moisture-model}} currently at commit {{wrf-fire-merge-commit|c1cedfc7eba28a2ed|}}
 
The baseline is WRF4 {{wrf-fire-merge-branch|develop}} currently at commit {{wrf-fire-merge-commit|0f296f9c0f674f9|}}
 
When either branch advances we have to retest - after any fix in fuel-moisture-model, and, after we are done, we will have to forward branch develop to current WRF4 and merge it into fuel-moisture-model. For this reason (and to reduce confusion), I am trying to organize the tests in a way that they are really easy to rerun without modifying any files - separate clones for different compilation options and separate copies of test/em_fire directory for different test cases.
 
The namelist.input and namelist.fire with variables that turn the fuel moisture model and fire on are in  test/em_fire_rain/rain.  The description of the namelist variables is at [[Fuel_moisture_model#Configuration]]. Other features from WRF-SFIRE are not carried over - only the fuel moisture model.
 
==Who is doing what==
 
* Angel - [[WTF]], parallel testing of both branches for identical results, all test cases in test/em_fire
* Adam - a real problem
* Jan - fixing, selected testing as needed
 
 
==How to test==
* Record also unsuccessful tests, when fixed, replace by the final result and include link to the commit used
* Record also unsuccessful tests, when fixed, replace by the final result and include link to the commit used
* All tests should be reproducible by checking out the commit noted, which should include all data for ideal runs
* All tests should be reproducible by checking out the commit noted, which should include all data for ideal runs
* For real runs, link to the datasets
* For real runs, please link to the datasets to be reproducible
==Jan==
==What needs to be tested==
* Fuel moisture model off vs. WRF4 baseline, with and without fire, did we change anything?
* reading fmc_g,  is it doing what it should?
* Fuel moisture model on, fire on, is it doing what it should?
* Serial and parallel execution with different numbers of CPUs, are the numbers same?
* WTF as specified in [http://www2.mmm.ucar.edu/wrf/users/testing.html  WRF testing requirements]
* All ideal cases in test/em_fire and some real
 
==Jan's test results==
All kingspeak runs are in /uufs/chpc.utah.edu/common/home/u6015690/merge and run on node kingspeak11 (nodes can be different).
All kingspeak runs are in /uufs/chpc.utah.edu/common/home/u6015690/merge and run on node kingspeak11 (nodes can be different).


===Using fmc_g off vs. WRF4 baseline===
===Baseline===
* jm1: ifort serial (13), nesting 0, configure -d, WRF-Fire-merge-fuel-moisture-model/test/em_fire/ {{wrf-fire-merge-branch|fuel-moisture-model}} {{wrf-fire-merge-commit|c1cedfc7eba28a2ed|MERGED CODE COMPILES AS SERIAL}} namelist.input -> namelist.input_hill_simple: SUCCESS COMPLETE WRF
{{wrf-fire-merge-branch|develop}} {{wrf-fire-merge-commit|0f296f9c0f674f9|}}  
* jm2: ifort serial (13), nesting 0, configure -d, WRF-Fire-merge-develop/test/em_fire/ {{wrf-fire-merge-branch|develop}} {{wrf-fire-merge-commit|0f296f9c0f674f9|BUG FIX, remove PX updates}} namelist.input -> namelist.input_hill_simple:
* ifort serial (13), nesting 0, configure -d, WRF-Fire-merge-develop/test/em_fire/  


===Fuel moisture model off vs. WRF4 baseline===
===Using fmc_g===
* ifort serial (13), nesting 1, configure -d, WRF-Fire-merge-fuel-moisture-model-jm {{wrf-fire-merge-branch|fuel-moisture-model-jm}} {{wrf-fire-merge-commit| 23437602c5633051| Merge branch 'fuel-moisture-model-rain' into fuel-moisture-model-jm}}  
* ifort serial (13), nesting 0, configure -d, WRF-Fire-merge-fuel-moisture-model/test/em_fire/ {{wrf-fire-merge-branch|fuel-moisture-model}} {{wrf-fire-merge-commit|c1cedfc7eba28a2ed|}} namelist.input -> namelist.input_hill_simple:
** jm3 test/em_fire_simple files at default: namelist.input -> namelist.input_hill_simple input_sounding -> input_sounding_hill_simple [now still running]
** jm4 test/em_fire_simple files at default: namelist.input -> namelist.input_hill_simple input_sounding -> input_sounding_hill_simple namelist.fire -> namelist.fire_fmc namelist.input -> namelist.input_hill_fuel_moisture [now still running]


===Fuel moisture model on===
===Fuel moisture model===
* jm5: ifort serial (13), nesting 1, configure -d, WRF-Fire-merge-fuel-moisture-model/test/em_fire/rain {{wrf-fire-merge-branch|fuel-moisture-model}} {{wrf-fire-merge-commit|21e4b028d80723ca|}}: SUCCESS COMPLETE WRF
{{wrf-fire-merge-branch|fuel-moisture-model}}, copies of test/em_fire as em_fire_xxxx
* ifort serial (13), nesting 1, configure -d, WRF-Fire-merge-fuel-moisture-model-jm {{wrf-fire-merge-branch|fuel-moisture-model-jm}} {{wrf-fire-merge-commit|21e4b028d80723ca|}}  
** em_fire_orig (no change)
** em_fire_fmc/fmc
** em_fire_rain/rain commit {{wrf-fire-merge-commit|8b3acf710816d8e10|}} no change for 1,2,3,4,6 cpus


==Angel==
==Angel's test results==
All kingspeak runs are in /uufs/chpc.utah.edu/common/home/kochanski-group3/farguella and run on node kingspeak11 and kinspeak12.
All kingspeak runs are in /uufs/chpc.utah.edu/common/home/kochanski-group3/farguella/merge.


Test are from list in https://www.openwfm.org/index.php?title=Porting_WRF-SFIRE_fuel_moisture_model_to_WRF4.
===Branch develop vs. added-fmc_g===


===Branch develop vs. added-fmc_g===
The {{wrf-fire-merge-branch|develop}} and {{wrf-fire-merge-branch|added-fmc_g}} are in kingspeak in folders WRF-Fire-merge-develop and WRF-Fire-merge-added-fmc_g respectively. They are tested in order to see the first new functionalities of adding variable FMC_G in WRF4 baseline. Tests are from list in https://www.openwfm.org/index.php?title=Porting_WRF-SFIRE_fuel_moisture_model_to_WRF4#Testing_to_be_done.
The {{wrf-fire-merge-branch|develop}} and {{wrf-fire-merge-branch|added-fmc_g}} are in kingspeak in folders WRF-Fire-merge-develop and WRF-Fire-merge-added-fmc_g respectively. The tests are:
 
* fire_fmc_read not present in namelist.input: One can observe that both simple hill simulations are exactly the same running
All the runs are on node kingspeak11 and kinspeak12 and all the compilations are done using ifort serial (13), nesting 0.
 
====fire_fmc_read not present in namelist.input====
 
One can observe that both simple hill simulations are exactly the same running
<pre>
<pre>
diff WRF-Fire-merge-develop/test/em_fire/wrf.log WRF-Fire-merge-added-fmc_g/test/em_fire/hill_tests/original/wrf.log -I Timing
diff WRF-Fire-merge-develop/test/em_fire/wrf.log WRF-Fire-merge-added-fmc_g/test/em_fire/hill_tests/original/wrf.log -I Timing
Line 39: Line 73:
Therefore, the only difference is in the allocation size as expected.
Therefore, the only difference is in the allocation size as expected.


However, the new {{wrf-fire-merge-branch|added-fmc_g}} is creating new variable FMC_G taken constant value of fuelmc_g from namelist.fire all over the domain.
However, the new {{wrf-fire-merge-branch|added-fmc_g}} is creating new variable FMC_G taken constant value of fuelmc_g from namelist.fire all over the domain. Changing value of fuelmc_g in namelist.fire changes the value of the new variable FMC_G.
 
====fire_fmc_read present in namelist.input====


* fire_fmc_read present in namelist.input: Setting  
Setting  
<pre>
<pre>
fire_fmc_read=0
fire_fmc_read=0
</pre>
</pre>
and poblating FMC_G variable in wrfinput_d01 using [https://github.com/openwfm/wrf-fire/blob/master/other/Matlab/netcdf/ncreplace.m ncreplace] in Matlab. The {{wrf-fire-merge-branch|added-fmc_g}} uses the new FMC_G in the simulation from new wrfinputs. Tested using:
* Constant FMC_G field of 0.07: WRF-Fire-merge-added-fmc_g/test/em_fire/hill_tests/fmc_07.
* Constant FMC_G field of 0.08: WRF-Fire-merge-added-fmc_g/test/em_fire/hill_tests/fmc_08. Exactly the same results that {{wrf-fire-merge-branch|develop}} which was taking the information from namelist.fire file.
* Random FMC_G field: WRF-Fire-merge-added-fmc_g/test/em_fire/hill_tests/fmc_rand. Gives the progression with random bumps as expected.
* Slope FMC_G field: RF-Fire-merge-added-fmc_g/test/em_fire/hill_tests/fmc_slope.
===Branch develop vs. fuel-moisture-model without fuel moisture===
The experiments tested are hill_simple and two_fires ideal cases. In the branch fuel-moisture-model, the fuel moisture model is turned off and we want to obtain exactly the same results than using branch develop.
The {{wrf-fire-merge-branch|develop}} and {{wrf-fire-merge-branch|fuel-moisture-model}} are compiled and runned in Cheyenne in folders /gpfs/fs1/p/univ/ucud0004/angelfc/merge/develop* and /gpfs/fs1/p/univ/ucud0004/angelfc/merge/fuel-moiture-model* respectively.
All the simulations are done in folders test/em_fire/hill_simple and test/em_fire/two_fires.
====Intel====
* Serial executions: develop-intel-serial and fuel-moisture-model-intel-serial. They are compiled using configure option: ifort compiler with icc serial (13), nesting 0. Both hill simple and two fires cases give exactly the same results.
* OpenMP executions: develop-intel-openmp and fuel-moisture-model-intel-openmp. They are compiled using configure option: ifort compiler with icc dmpar (14), nesting 0.
* MPI executions: develop-intel-mpi and fuel-moisture-model-intel-mpi. They are compiled using configure option: ifort compiler with icc dmpar (15), nesting 1. In both ideal cases hill simple and two fires, same results in variables U, V, and TIGN_G from wrfouts. Using 1, 2, 4 and 8 MPI processes.
* Hybrid executions: develop-intel-hybrid and fuel-moisture-model-intel-hybrid. They are compiled using configure option: ifort compiler with icc dmpar (16), nesting 1. All the executions crash because of memory corruption.
===WRF in fuel-moisture-model branch===
In order to test WRF in the new {{wrf-fire-merge-branch|fuel-moisture-model}}, the WTF is used.
====Running WTF in Cheyenne====
The new WTF code is updated to work on Cheyenne and using run_from_github.py. New update is in:
<pre>
git clone https://github.com/openwfm/WTF
</pre>
After that, one can change to the correct branch using
<pre>
git checkout angelfc
</pre>
Then one can just run run_from_github.py python execution doing:
<pre>
./run_from_github.py
</pre>
One needs to give also the github repository to test and the branch which are going to be:
<pre>
URL of the repository: https://github.com/openwfm/WRF-Fire-merge
branch: master
</pre>
and
<pre>
URL of the repository: https://github.com/openwfm/WRF-Fire-merge
branch: develop
</pre>
and
<pre>
URL of the repository: https://github.com/openwfm/WRF-Fire-merge
branch: fuel-moisture-model
</pre>
All these executions are run in order to compare the three different results.


==Adam==
==Adam's test results==


==See also==
==See also==
* [[How to build WRF4]]
* [[How to build WRF4]]
* [[Fuel_moisture_model#Configuration Fuel moisture model Configuration]]
* [http://www2.mmm.ucar.edu/wrf/users/testing.html  WRF testing requirements]
* [http://www2.mmm.ucar.edu/wrf/users/testing.html  WRF testing requirements]
* [http://www2.mmm.ucar.edu/wrf/users/contrib_info.php Information for WRF contributors (outdated but still relevant)]
* [http://www2.mmm.ucar.edu/wrf/users/contrib_info.php Information for WRF contributors (outdated but still relevant)]
* Comments in {{wrf-fire-merge-commit|e26f21fb33|Fri Mar 9 11:07:01 2018}} Cumulative fire commit for v4.0
* Comments in {{wrf-fire-merge-commit|e26f21fb33|Fri Mar 9 11:07:01 2018}} Cumulative fire commit for v4.0
* https://github.com/wrf-model/WRF/wiki/Making-a-good-pull-request-message
* https://github.com/openwfm/WRF-Fire-merge/blob/master/.github/PULL_REQUEST_TEMPLATE
* https://www2.cisl.ucar.edu/resources/computational-systems/cheyenne/running-jobs/submitting-jobs-pbs/process-binding
* https://www2.cisl.ucar.edu/resources/computational-systems/cheyenne/running-jobs/submitting-jobs-pbs

Latest revision as of 17:47, 18 February 2019


Please see Talk:WRF-Fire_merge_testing for permanent notes.

The basics

The version to test is branch fuel-moisture-model currently at commit c1cedfc7eba28a2ed

The baseline is WRF4 branch develop currently at commit 0f296f9c0f674f9

When either branch advances we have to retest - after any fix in fuel-moisture-model, and, after we are done, we will have to forward branch develop to current WRF4 and merge it into fuel-moisture-model. For this reason (and to reduce confusion), I am trying to organize the tests in a way that they are really easy to rerun without modifying any files - separate clones for different compilation options and separate copies of test/em_fire directory for different test cases.

The namelist.input and namelist.fire with variables that turn the fuel moisture model and fire on are in test/em_fire_rain/rain. The description of the namelist variables is at Fuel_moisture_model#Configuration. Other features from WRF-SFIRE are not carried over - only the fuel moisture model.

Who is doing what

  • Angel - WTF, parallel testing of both branches for identical results, all test cases in test/em_fire
  • Adam - a real problem
  • Jan - fixing, selected testing as needed


How to test

  • Record also unsuccessful tests, when fixed, replace by the final result and include link to the commit used
  • All tests should be reproducible by checking out the commit noted, which should include all data for ideal runs
  • For real runs, please link to the datasets to be reproducible

What needs to be tested

  • Fuel moisture model off vs. WRF4 baseline, with and without fire, did we change anything?
  • reading fmc_g, is it doing what it should?
  • Fuel moisture model on, fire on, is it doing what it should?
  • Serial and parallel execution with different numbers of CPUs, are the numbers same?
  • WTF as specified in WRF testing requirements
  • All ideal cases in test/em_fire and some real

Jan's test results

All kingspeak runs are in /uufs/chpc.utah.edu/common/home/u6015690/merge and run on node kingspeak11 (nodes can be different).

Baseline

branch develop 0f296f9c0f674f9

  • ifort serial (13), nesting 0, configure -d, WRF-Fire-merge-develop/test/em_fire/

Using fmc_g

Fuel moisture model

branch fuel-moisture-model, copies of test/em_fire as em_fire_xxxx

Angel's test results

All kingspeak runs are in /uufs/chpc.utah.edu/common/home/kochanski-group3/farguella/merge.

Branch develop vs. added-fmc_g

The branch develop and branch added-fmc_g are in kingspeak in folders WRF-Fire-merge-develop and WRF-Fire-merge-added-fmc_g respectively. They are tested in order to see the first new functionalities of adding variable FMC_G in WRF4 baseline. Tests are from list in https://www.openwfm.org/index.php?title=Porting_WRF-SFIRE_fuel_moisture_model_to_WRF4#Testing_to_be_done.

All the runs are on node kingspeak11 and kinspeak12 and all the compilations are done using ifort serial (13), nesting 0.

fire_fmc_read not present in namelist.input

One can observe that both simple hill simulations are exactly the same running

diff WRF-Fire-merge-develop/test/em_fire/wrf.log WRF-Fire-merge-added-fmc_g/test/em_fire/hill_tests/original/wrf.log -I Timing

which returns

10c10
<    alloc_space_field: domain            1 ,              344571608  bytes allocated
---
>    alloc_space_field: domain            1 ,              345388824  bytes allocated

Therefore, the only difference is in the allocation size as expected.

However, the new branch added-fmc_g is creating new variable FMC_G taken constant value of fuelmc_g from namelist.fire all over the domain. Changing value of fuelmc_g in namelist.fire changes the value of the new variable FMC_G.

fire_fmc_read present in namelist.input

Setting

fire_fmc_read=0

and poblating FMC_G variable in wrfinput_d01 using ncreplace in Matlab. The branch added-fmc_g uses the new FMC_G in the simulation from new wrfinputs. Tested using:

  • Constant FMC_G field of 0.07: WRF-Fire-merge-added-fmc_g/test/em_fire/hill_tests/fmc_07.
  • Constant FMC_G field of 0.08: WRF-Fire-merge-added-fmc_g/test/em_fire/hill_tests/fmc_08. Exactly the same results that branch develop which was taking the information from namelist.fire file.
  • Random FMC_G field: WRF-Fire-merge-added-fmc_g/test/em_fire/hill_tests/fmc_rand. Gives the progression with random bumps as expected.
  • Slope FMC_G field: RF-Fire-merge-added-fmc_g/test/em_fire/hill_tests/fmc_slope.

Branch develop vs. fuel-moisture-model without fuel moisture

The experiments tested are hill_simple and two_fires ideal cases. In the branch fuel-moisture-model, the fuel moisture model is turned off and we want to obtain exactly the same results than using branch develop.

The branch develop and branch fuel-moisture-model are compiled and runned in Cheyenne in folders /gpfs/fs1/p/univ/ucud0004/angelfc/merge/develop* and /gpfs/fs1/p/univ/ucud0004/angelfc/merge/fuel-moiture-model* respectively.

All the simulations are done in folders test/em_fire/hill_simple and test/em_fire/two_fires.

Intel

  • Serial executions: develop-intel-serial and fuel-moisture-model-intel-serial. They are compiled using configure option: ifort compiler with icc serial (13), nesting 0. Both hill simple and two fires cases give exactly the same results.
  • OpenMP executions: develop-intel-openmp and fuel-moisture-model-intel-openmp. They are compiled using configure option: ifort compiler with icc dmpar (14), nesting 0.
  • MPI executions: develop-intel-mpi and fuel-moisture-model-intel-mpi. They are compiled using configure option: ifort compiler with icc dmpar (15), nesting 1. In both ideal cases hill simple and two fires, same results in variables U, V, and TIGN_G from wrfouts. Using 1, 2, 4 and 8 MPI processes.
  • Hybrid executions: develop-intel-hybrid and fuel-moisture-model-intel-hybrid. They are compiled using configure option: ifort compiler with icc dmpar (16), nesting 1. All the executions crash because of memory corruption.

WRF in fuel-moisture-model branch

In order to test WRF in the new branch fuel-moisture-model, the WTF is used.

Running WTF in Cheyenne

The new WTF code is updated to work on Cheyenne and using run_from_github.py. New update is in:

git clone https://github.com/openwfm/WTF

After that, one can change to the correct branch using

git checkout angelfc

Then one can just run run_from_github.py python execution doing:

./run_from_github.py

One needs to give also the github repository to test and the branch which are going to be:

URL of the repository: https://github.com/openwfm/WRF-Fire-merge
branch: master

and

URL of the repository: https://github.com/openwfm/WRF-Fire-merge
branch: develop

and

URL of the repository: https://github.com/openwfm/WRF-Fire-merge
branch: fuel-moisture-model

All these executions are run in order to compare the three different results.

Adam's test results

See also