Skip to content

Commit 01d20f6

Browse files
committed
Updating users guide with info on MPI parallelization; including timing tests
1 parent 3cb2ab1 commit 01d20f6

1 file changed

Lines changed: 36 additions & 3 deletions

File tree

  • doc/UsersGuide/BuildingRunningTesting

doc/UsersGuide/BuildingRunningTesting/FIRE.rst

Lines changed: 36 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -98,13 +98,44 @@ The fire module has the ability to print out additional messages to the log file
9898
fire:
9999
FIRE_PRINT_MSG: 1
100100
101-
The fire module now supports OpenMP parallelization. By default, parallelization is off, but it can be enabled by setting ``OMP_NUM_THREADS_FIRE`` to a value greater than 1. In testing with the default case (200x200 domain) we have observed a 10-25% speedup with ``OMP_NUM_THREADS_FIRE: 2`` vs 1, with only marginal additional speedup for ``OMP_NUM_THREADS_FIRE>2``. However, larger domains may benefit from additional parallel threads.
101+
The fire module supports both OpenMP and MPI parallelization; they can be used individually or together. By default, parallelization is off, but it can be enabled at runtime with the following settings.
102+
103+
OpenMP parallelization can be activated by setting ``OMP_NUM_THREADS_FIRE`` to a value greater than 1.
102104

103105
.. code-block:: console
104106
105107
fire:
106108
OMP_NUM_THREADS_FIRE: 2
107109
110+
MPI parallelization can be activated by setting ``FIRE_NUM_TASKS`` to a value greater than 1.
111+
112+
.. code-block:: console
113+
114+
fire:
115+
FIRE_NUM_TASKS: 2
116+
117+
We tested several combinations of parallelization methods using a 15-hour one-way coupled (ATM->FIRE) forecast; the results are shown in the table below. As a summary, MPI parallelization shows more efficient speedup per core than OpenMP parallelization, though multiple combinations resulted in significant speedup. Scaling from single-core to 2 MPI tasks resulted in nearly linear speedup (45% reduction in wallclock time). It is likely that larger domains will benefit more from additional tasks, both for OpenMP and MPI.
118+
119+
.. list-table:: Tests of different parallelization options with 200x200 3km atmospheric grid, 200x200 100m fire grid
120+
:header-rows: 1
121+
:stub-columns: 1
122+
123+
* - Timings for parallel tests (s)
124+
- MPI 1
125+
- MPI 2
126+
- MPI 4
127+
* - OpenMP 1
128+
- 2820.200802
129+
- 1577.748477
130+
- 1343.323408
131+
* - OpenMP 2
132+
- 2168.499091
133+
- 1372.190139
134+
- 1334.157103
135+
* - OpenMP 4
136+
- 1867.509120
137+
- 1373.244105
138+
- 1340.811422
108139

109140
Additional boundary conditions file
110141
-----------------------------------
@@ -119,7 +150,9 @@ Once the file is acquired/created, you will need to specify its location in your
119150
120151
fire:
121152
envvars:
122-
FIRE_INPUT_DIR: /directory/containing/geo_em/file
153+
FIRE_GEO_EM_FILE: /directory/containing/geo_em/file/geo_em.d01.nc
154+
155+
Note that you can use a different filename if you prefer.
123156

124157
Specifying a fire ignition
125158
---------------------------
@@ -138,7 +171,7 @@ Here is one example of settings that can be specified for a UFS FIRE simulation:
138171
fire:
139172
envvars:
140173
UFS_FIRE: True
141-
FIRE_INPUT_DIR: /home/fire_input
174+
FIRE_GEO_EM_FILE: /home/fire_input/geo_em.d01.nc
142175
DT_FIRE: 0.5
143176
OUTPUT_DT_FIRE: 1800
144177
FIRE_NUM_IGNITIONS: 1

0 commit comments

Comments
 (0)