Skip to content

Commit bc31d2a

Browse files
Update documentation
1 parent e396607 commit bc31d2a

15 files changed

+100
-48
lines changed
0 Bytes
Binary file not shown.
Binary file not shown.
Binary file not shown.

main/.doctrees/environment.pickle

1.39 KB
Binary file not shown.
128 Bytes
Binary file not shown.

main/_modules/mache/spack/config_machines.html

Lines changed: 9 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,6 @@
8585
<h1>Source code for mache.spack.config_machines</h1><div class="highlight"><pre>
8686
<span></span><span class="kn">import</span><span class="w"> </span><span class="nn">re</span>
8787
<span class="kn">from</span><span class="w"> </span><span class="nn">collections</span><span class="w"> </span><span class="kn">import</span> <span class="n">defaultdict</span>
88-
<span class="kn">from</span><span class="w"> </span><span class="nn">importlib</span><span class="w"> </span><span class="kn">import</span> <span class="n">resources</span> <span class="k">as</span> <span class="n">importlib_resources</span>
8988

9089
<span class="kn">from</span><span class="w"> </span><span class="nn">lxml</span><span class="w"> </span><span class="kn">import</span> <span class="n">etree</span>
9190

@@ -195,13 +194,13 @@ <h1>Source code for mache.spack.config_machines</h1><div class="highlight"><pre>
195194
<span class="n">script_lines</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">&#39;&#39;</span><span class="p">)</span>
196195

197196
<span class="k">if</span> <span class="n">e3sm_hdf5_netcdf_modules</span><span class="p">:</span>
198-
<span class="n">script_lines</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">&#39;{</span><span class="si">%- i</span><span class="s1">f e3sm_hdf5_netcdf %}&#39;</span><span class="p">)</span>
197+
<span class="n">script_lines</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">&#39;{</span><span class="si">% i</span><span class="s1">f e3sm_hdf5_netcdf %}&#39;</span><span class="p">)</span>
199198
<span class="n">script_lines</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span>
200199
<span class="n">_convert_module_commands_to_script_lines</span><span class="p">(</span>
201200
<span class="n">e3sm_hdf5_netcdf_modules</span><span class="p">,</span> <span class="n">shell_type</span>
202201
<span class="p">)</span>
203202
<span class="p">)</span>
204-
<span class="n">script_lines</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">&#39;{</span><span class="si">%- e</span><span class="s1">ndif %}&#39;</span><span class="p">)</span>
203+
<span class="n">script_lines</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">&#39;{</span><span class="si">% e</span><span class="s1">ndif %}&#39;</span><span class="p">)</span>
205204
<span class="n">script_lines</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">&#39;&#39;</span><span class="p">)</span>
206205

207206
<span class="n">script_lines</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">_convert_env_vars_to_script_lines</span><span class="p">(</span><span class="n">config</span><span class="p">,</span> <span class="n">shell_type</span><span class="p">))</span>
@@ -215,7 +214,7 @@ <h1>Source code for mache.spack.config_machines</h1><div class="highlight"><pre>
215214
<div class="viewcode-block" id="extract_spack_from_config_machines">
216215
<a class="viewcode-back" href="../../../developers_guide/generated/mache.spack.extract_spack_from_config_machines.html#mache.spack.extract_spack_from_config_machines">[docs]</a>
217216
<span class="k">def</span><span class="w"> </span><span class="nf">extract_spack_from_config_machines</span><span class="p">(</span>
218-
<span class="n">machine</span><span class="p">,</span> <span class="n">compiler</span><span class="p">,</span> <span class="n">mpilib</span><span class="p">,</span> <span class="n">shell</span><span class="p">,</span> <span class="n">output</span><span class="o">=</span><span class="kc">None</span>
217+
<span class="n">machine</span><span class="p">,</span> <span class="n">compiler</span><span class="p">,</span> <span class="n">mpilib</span><span class="p">,</span> <span class="n">shell</span><span class="p">,</span> <span class="n">output</span>
219218
<span class="p">):</span>
220219
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
221220
<span class="sd"> Extract machine configuration from XML and write it to a shell script.</span>
@@ -230,18 +229,10 @@ <h1>Source code for mache.spack.config_machines</h1><div class="highlight"><pre>
230229
<span class="sd"> MPI library name.</span>
231230
<span class="sd"> shell : str</span>
232231
<span class="sd"> Shell script type (&#39;sh&#39; or &#39;csh&#39;).</span>
233-
<span class="sd"> output : str, optional</span>
232+
<span class="sd"> output : str</span>
234233
<span class="sd"> Output file to write the shell script.</span>
235-
236-
<span class="sd"> Returns</span>
237-
<span class="sd"> -------</span>
238-
<span class="sd"> script: str</span>
239-
<span class="sd"> The generated shell script as a string.</span>
240234
<span class="sd"> &quot;&quot;&quot;</span>
241-
<span class="n">config_filename</span> <span class="o">=</span> <span class="p">(</span>
242-
<span class="n">importlib_resources</span><span class="o">.</span><span class="n">files</span><span class="p">(</span><span class="s1">&#39;mache.cime_machine_config&#39;</span><span class="p">)</span>
243-
<span class="o">/</span> <span class="s1">&#39;config_machines.xml&#39;</span>
244-
<span class="p">)</span>
235+
<span class="n">config_filename</span> <span class="o">=</span> <span class="s1">&#39;mache/cime_machine_config/config_machines.xml&#39;</span>
245236

246237
<span class="n">config</span> <span class="o">=</span> <span class="n">extract_machine_config</span><span class="p">(</span><span class="n">config_filename</span><span class="p">,</span> <span class="n">machine</span><span class="p">,</span> <span class="n">compiler</span><span class="p">,</span> <span class="n">mpilib</span><span class="p">)</span>
247238
<span class="k">if</span> <span class="n">config</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
@@ -251,11 +242,8 @@ <h1>Source code for mache.spack.config_machines</h1><div class="highlight"><pre>
251242
<span class="p">)</span>
252243

253244
<span class="n">script</span> <span class="o">=</span> <span class="n">config_to_shell_script</span><span class="p">(</span><span class="n">config</span><span class="p">,</span> <span class="n">shell</span><span class="p">)</span>
254-
<span class="k">if</span> <span class="n">output</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
255-
<span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">output</span><span class="p">,</span> <span class="s1">&#39;w&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
256-
<span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">script</span><span class="p">)</span>
257-
258-
<span class="k">return</span> <span class="n">script</span></div>
245+
<span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">output</span><span class="p">,</span> <span class="s1">&#39;w&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
246+
<span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">script</span><span class="p">)</span></div>
259247

260248

261249

@@ -355,13 +343,13 @@ <h1>Source code for mache.spack.config_machines</h1><div class="highlight"><pre>
355343
<span class="n">script_lines</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">&#39;&#39;</span><span class="p">)</span>
356344

357345
<span class="k">if</span> <span class="n">e3sm_hdf5_netcdf_env_vars</span><span class="p">:</span>
358-
<span class="n">script_lines</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">&#39;{</span><span class="si">%- i</span><span class="s1">f e3sm_hdf5_netcdf %}&#39;</span><span class="p">)</span>
346+
<span class="n">script_lines</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">&#39;{</span><span class="si">% i</span><span class="s1">f e3sm_hdf5_netcdf %}&#39;</span><span class="p">)</span>
359347
<span class="k">for</span> <span class="n">name</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">e3sm_hdf5_netcdf_env_vars</span><span class="p">:</span>
360348
<span class="k">if</span> <span class="n">shell_type</span> <span class="o">==</span> <span class="s1">&#39;sh&#39;</span><span class="p">:</span>
361349
<span class="n">script_lines</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s1">&#39;export </span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s1">=&quot;</span><span class="si">{</span><span class="n">value</span><span class="si">}</span><span class="s1">&quot;&#39;</span><span class="p">)</span>
362350
<span class="k">elif</span> <span class="n">shell_type</span> <span class="o">==</span> <span class="s1">&#39;csh&#39;</span><span class="p">:</span>
363351
<span class="n">script_lines</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s1">&#39;setenv </span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s1"> &quot;</span><span class="si">{</span><span class="n">value</span><span class="si">}</span><span class="s1">&quot;&#39;</span><span class="p">)</span>
364-
<span class="n">script_lines</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">&#39;{</span><span class="si">%- e</span><span class="s1">ndif %}&#39;</span><span class="p">)</span>
352+
<span class="n">script_lines</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">&#39;{</span><span class="si">% e</span><span class="s1">ndif %}&#39;</span><span class="p">)</span>
365353

366354
<span class="k">return</span> <span class="n">script_lines</span>
367355
</pre></div>

main/_modules/mache/spack/env.html

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ <h1>Source code for mache.spack.env</h1><div class="highlight"><pre>
9090
<span class="kn">from</span><span class="w"> </span><span class="nn">jinja2</span><span class="w"> </span><span class="kn">import</span> <span class="n">Template</span>
9191

9292
<span class="kn">from</span><span class="w"> </span><span class="nn">mache.machine_info</span><span class="w"> </span><span class="kn">import</span> <span class="n">MachineInfo</span><span class="p">,</span> <span class="n">discover_machine</span>
93-
<span class="kn">from</span><span class="w"> </span><span class="nn">mache.spack.shared</span><span class="w"> </span><span class="kn">import</span> <span class="n">_get_yaml_data</span>
93+
<span class="kn">from</span><span class="w"> </span><span class="nn">mache.spack.shared</span><span class="w"> </span><span class="kn">import</span> <span class="n">_get_modules</span><span class="p">,</span> <span class="n">_get_yaml_data</span>
9494
<span class="kn">from</span><span class="w"> </span><span class="nn">mache.version</span><span class="w"> </span><span class="kn">import</span> <span class="n">__version__</span>
9595

9696

@@ -176,6 +176,12 @@ <h1>Source code for mache.spack.env</h1><div class="highlight"><pre>
176176
<span class="k">if</span> <span class="n">config_file</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
177177
<span class="n">config</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="n">config_file</span><span class="p">)</span>
178178

179+
<span class="n">section</span> <span class="o">=</span> <span class="n">config</span><span class="p">[</span><span class="s1">&#39;spack&#39;</span><span class="p">]</span>
180+
181+
<span class="n">with_modules</span> <span class="o">=</span> <span class="n">section</span><span class="o">.</span><span class="n">getboolean</span><span class="p">(</span><span class="s1">&#39;modules_before&#39;</span><span class="p">)</span> <span class="ow">or</span> <span class="n">section</span><span class="o">.</span><span class="n">getboolean</span><span class="p">(</span>
182+
<span class="s1">&#39;modules_after&#39;</span>
183+
<span class="p">)</span>
184+
179185
<span class="n">yaml_data</span> <span class="o">=</span> <span class="n">_get_yaml_data</span><span class="p">(</span>
180186
<span class="n">machine</span><span class="p">,</span>
181187
<span class="n">compiler</span><span class="p">,</span>
@@ -190,7 +196,11 @@ <h1>Source code for mache.spack.env</h1><div class="highlight"><pre>
190196
<span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">yaml_filename</span><span class="p">,</span> <span class="s1">&#39;w&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">handle</span><span class="p">:</span>
191197
<span class="n">handle</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">yaml_data</span><span class="p">)</span>
192198

193-
<span class="n">modules</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span>
199+
<span class="k">if</span> <span class="n">with_modules</span><span class="p">:</span>
200+
<span class="n">mods</span> <span class="o">=</span> <span class="n">_get_modules</span><span class="p">(</span><span class="n">yaml_data</span><span class="p">)</span>
201+
<span class="n">modules</span> <span class="o">=</span> <span class="sa">f</span><span class="s1">&#39;module purge</span><span class="se">\n</span><span class="si">{</span><span class="n">mods</span><span class="si">}</span><span class="s1">&#39;</span>
202+
<span class="k">else</span><span class="p">:</span>
203+
<span class="n">modules</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span>
194204

195205
<span class="k">for</span> <span class="n">shell_filename</span> <span class="ow">in</span> <span class="p">[</span><span class="sa">f</span><span class="s1">&#39;</span><span class="si">{</span><span class="n">machine</span><span class="si">}</span><span class="s1">.sh&#39;</span><span class="p">,</span> <span class="sa">f</span><span class="s1">&#39;</span><span class="si">{</span><span class="n">machine</span><span class="si">}</span><span class="s1">_</span><span class="si">{</span><span class="n">compiler</span><span class="si">}</span><span class="s1">_</span><span class="si">{</span><span class="n">mpi</span><span class="si">}</span><span class="s1">.sh&#39;</span><span class="p">]:</span>
196206
<span class="c1"># load modules, etc. for this machine</span>
@@ -254,6 +264,7 @@ <h1>Source code for mache.spack.env</h1><div class="highlight"><pre>
254264
<span class="n">shell</span><span class="p">,</span>
255265
<span class="n">include_e3sm_lapack</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
256266
<span class="n">include_e3sm_hdf5_netcdf</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
267+
<span class="n">yaml_template</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
257268
<span class="p">):</span>
258269
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
259270
<span class="sd"> Get the non-spack modules, environment variables and compiler names for a</span>
@@ -282,6 +293,11 @@ <h1>Source code for mache.spack.env</h1><div class="highlight"><pre>
282293
<span class="sd"> Whether to include the same hdf5, netcdf-c, netcdf-fortran and pnetcdf</span>
283294
<span class="sd"> as used in E3SM</span>
284295

296+
<span class="sd"> yaml_template : str, optional</span>
297+
<span class="sd"> A jinja template for a yaml file to be used for the environment instead</span>
298+
<span class="sd"> of the mache template. This allows you to use compilers and other</span>
299+
<span class="sd"> modules that differ from E3SM.</span>
300+
285301
<span class="sd"> Returns</span>
286302
<span class="sd"> -------</span>
287303
<span class="sd"> mpicc : str</span>
@@ -310,10 +326,27 @@ <h1>Source code for mache.spack.env</h1><div class="highlight"><pre>
310326
<span class="k">if</span> <span class="n">config</span><span class="o">.</span><span class="n">has_section</span><span class="p">(</span><span class="s1">&#39;spack&#39;</span><span class="p">):</span>
311327
<span class="n">section</span> <span class="o">=</span> <span class="n">config</span><span class="p">[</span><span class="s1">&#39;spack&#39;</span><span class="p">]</span>
312328

329+
<span class="n">with_modules</span> <span class="o">=</span> <span class="n">section</span><span class="o">.</span><span class="n">getboolean</span><span class="p">(</span>
330+
<span class="s1">&#39;modules_before&#39;</span>
331+
<span class="p">)</span> <span class="ow">or</span> <span class="n">section</span><span class="o">.</span><span class="n">getboolean</span><span class="p">(</span><span class="s1">&#39;modules_after&#39;</span><span class="p">)</span>
313332
<span class="k">if</span> <span class="n">config</span><span class="o">.</span><span class="n">has_option</span><span class="p">(</span><span class="s1">&#39;spack&#39;</span><span class="p">,</span> <span class="s1">&#39;cray_compilers&#39;</span><span class="p">):</span>
314333
<span class="n">cray_compilers</span> <span class="o">=</span> <span class="n">section</span><span class="o">.</span><span class="n">getboolean</span><span class="p">(</span><span class="s1">&#39;cray_compilers&#39;</span><span class="p">)</span>
334+
<span class="k">else</span><span class="p">:</span>
335+
<span class="n">with_modules</span> <span class="o">=</span> <span class="kc">False</span>
315336

316337
<span class="n">mod_env_commands</span> <span class="o">=</span> <span class="s1">&#39;module purge</span><span class="se">\n</span><span class="s1">&#39;</span>
338+
<span class="k">if</span> <span class="n">with_modules</span><span class="p">:</span>
339+
<span class="n">yaml_data</span> <span class="o">=</span> <span class="n">_get_yaml_data</span><span class="p">(</span>
340+
<span class="n">machine</span><span class="p">,</span>
341+
<span class="n">compiler</span><span class="p">,</span>
342+
<span class="n">mpi</span><span class="p">,</span>
343+
<span class="n">include_e3sm_lapack</span><span class="p">,</span>
344+
<span class="n">include_e3sm_hdf5_netcdf</span><span class="p">,</span>
345+
<span class="n">specs</span><span class="o">=</span><span class="p">[],</span>
346+
<span class="n">yaml_template</span><span class="o">=</span><span class="n">yaml_template</span><span class="p">,</span>
347+
<span class="p">)</span>
348+
<span class="n">mods</span> <span class="o">=</span> <span class="n">_get_modules</span><span class="p">(</span><span class="n">yaml_data</span><span class="p">)</span>
349+
<span class="n">mod_env_commands</span> <span class="o">=</span> <span class="sa">f</span><span class="s1">&#39;</span><span class="si">{</span><span class="n">mod_env_commands</span><span class="si">}</span><span class="se">\n</span><span class="si">{</span><span class="n">mods</span><span class="si">}</span><span class="se">\n</span><span class="s1">&#39;</span>
317350

318351
<span class="k">for</span> <span class="n">shell_filename</span> <span class="ow">in</span> <span class="p">[</span>
319352
<span class="sa">f</span><span class="s1">&#39;</span><span class="si">{</span><span class="n">machine</span><span class="si">}</span><span class="s1">.</span><span class="si">{</span><span class="n">shell</span><span class="si">}</span><span class="s1">&#39;</span><span class="p">,</span>

0 commit comments

Comments
 (0)