Skip to content
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

Auto PR - develop β†’ MAPL-v3 - update repos, add option to ldas_setup #687

Merged
merged 13 commits into from
Dec 4, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .circleci/config.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
version: 2.1

# Anchor to prevent forgetting to update a version
baselibs_version: &baselibs_version v7.13.0
baselibs_version: &baselibs_version v7.16.0

orbs:
ci: geos-esm/circleci-tools@1
Expand Down
22 changes: 11 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ This document explains how to build, set up, and run the GEOS land modeling and

## How to Build GEOSldas

### Step 1: Load the Build Modules
### Step 1: Load the Build Modules

Load the `GEOSenv` module provided by the GMAO Software Infrastructure team. It contains the latest `git`, `CMake`, and `mepo` modules and must be loaded in any interactive window that is used to check out and build the model.

Expand All @@ -13,7 +13,7 @@ module use -a (path)
module load GEOSenv
```

where `(path)` depends on the computer and operating system:
where `(path)` depends on the computer and operating system:

| System | Path |
| ------------- |---------------------------------------------------|
Expand All @@ -28,7 +28,7 @@ For development work, clone the _entire_ repository and use the `develop` branch
```
git clone -b develop git@github.com:GEOS-ESM/GEOSldas.git
```
For science runs, you can also obtain a specific tag or branch _only_ (as opposed to the _entire_ repository), e.g.:
For science runs, you can also obtain a specific tag or branch _only_ (as opposed to the _entire_ repository), e.g.:
```
git clone -b v17.9.1 --single-branch git@github.com:GEOS-ESM/GEOSldas.git
```
Expand All @@ -40,10 +40,10 @@ To build the model in a single step, do the following:
```
cd ./GEOSldas
parallel_build.csh
```
from a head node. Doing so will check out all the external repositories of the model (albeit only on the first run, [see subsection on mepo below](#mepo)!) and build the model. When done, the resulting model build will be found in `build/` and the installation will be found in `install/`, with setup scripts like `ldas_setup` in `install/bin`.
```
from a head node. Doing so will check out all the external repositories of the model (albeit only on the first run, [see subsection on mepo below](#mepo)!) and build the model. When done, the resulting model build will be found in `build-SLES12/` and the installation will be found in `install-SLES12/`, with setup scripts like `ldas_setup` in `install-SLES12/bin`.

To obtain a build that is suitable for debugging, use `parallel_build.csh -debug`, which will build in `build-Debug/` and install in `install-Debug/`. There is also an option for aggressive optimization. For details, see [GEOSldas Wiki](https://github.com/GEOS-ESM/GEOSldas/wiki).
To obtain a build that is suitable for debugging, use `parallel_build.csh -debug`, which will build in `build-Debug-SLES12/` and install in `install-Debug-SLES12/`. There is also an option for aggressive optimization. For details, see [GEOSldas Wiki](https://github.com/GEOS-ESM/GEOSldas/wiki).

See below for how to build the model in multiple steps.

Expand All @@ -57,7 +57,7 @@ a) Set up the job as follows:
cd (build_path)/GEOSldas/install/bin
source g5_modules [for bash or zsh: source g5_modules.[z]sh]
./ldas_setup setup [-v] (exp_path) ("exe"_input_filename) ("bat"_input_filename)
```
```

where

Expand All @@ -70,14 +70,14 @@ where

The three arguments for `ldas_setup` are positional and must be ordered as indicated above.

The latter two files contain essential information about the experiment setup.
The latter two files contain essential information about the experiment setup.
Sample files can be generated as follows:
```
```
ldas_setup sample --exeinp > YOUR_exeinp.txt
ldas_setup sample --batinp > YOUR_batinp.txt
```

Edit these sample files following the examples and comments within the sample files.
Edit these sample files following the examples and comments within the sample files.

The ldas_setup script creates a run directory and other directories at:
`[exp_path]/[exp_name]`
Expand Down Expand Up @@ -156,7 +156,7 @@ and CMake will install there.
```
make -j6 install
```
If you are at NCCS, you **should** run `make -j6 install` on an interactive _compute_ node.
If you are at NCCS, you **should** run `make -j6 install` on an interactive _compute_ node.


## Contributing
Expand Down
10 changes: 5 additions & 5 deletions components.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,13 @@ GEOSldas:
env:
local: ./@env
remote: ../ESMA_env.git
tag: v4.17.0
tag: v4.23.0
develop: main

cmake:
local: ./@cmake
remote: ../ESMA_cmake.git
tag: v3.30.0
tag: v3.36.0
develop: develop

ecbuild:
Expand All @@ -22,20 +22,20 @@ ecbuild:
GMAO_Shared:
local: ./src/Shared/@GMAO_Shared
remote: ../GMAO_Shared.git
tag: v1.9.1
tag: v1.9.6
sparse: ./config/GMAO_Shared.sparse
develop: main

GEOS_Util:
local: ./src/Shared/@GMAO_Shared/@GEOS_Util
remote: ../GEOS_Util.git
tag: v2.0.2
tag: v2.0.3
develop: main

MAPL:
local: ./src/Shared/@MAPL
remote: ../MAPL.git
tag: v2.39.4
tag: v2.42.1
develop: develop

GEOSgcm_GridComp:
Expand Down
8 changes: 3 additions & 5 deletions src/Applications/LDAS_App/ldas_setup
Original file line number Diff line number Diff line change
Expand Up @@ -1335,8 +1335,6 @@ class LDASsetup:
fout.write(line_.replace('MY_NTASKS_PER_NODE',str(self.rqdRmInp['ntasks-per-node'])))
if int(self.rqdRmInp['ntasks-per-node']) > 40:
fout.write("#SBATCH --constraint=cas\n")
if (28 < int(self.rqdRmInp['ntasks-per-node']) and int(self.rqdRmInp['ntasks-per-node']) <= 40) :
fout.write("#SBATCH --constraint=sky\n")
elif 'MY_OSERVER_NODES' in line :
fout.write(line.replace('MY_OSERVER_NODES',str(self.optRmInp['oserver_nodes'])))
elif 'MY_WRITERS_NPES' in line :
Expand Down Expand Up @@ -1609,9 +1607,9 @@ def _printRmInputKeys(rqdRmInpKeys, optRmInpKeys):
print ('# [At NCCS: Use command "getsponsor" to see available account number(s).]' )
print ('# - walltime = walltime requested; format is HH:MM:SS (hours/minutes/seconds)')
print ('# - ntasks_model = number of processors requested for the model (typically 112; output server is not included)')
print ('# - ntasks-per-node = number of tasks per node (typically 46 for cascade lake*, 40 for skylake, and 28 for haswell nodes)')
print ('# [If >40, cascade lake nodes will be allocated, if >28, cascade or skylake, else cascade, skylake or haswell.]')
print ('# [*NCCS recommends <=46 cores per node on SCU16 (cascade lake) due to OS issues (as of 6 Oct 2021).]')
print ('# - ntasks-per-node = number of tasks per node (typically 46 for cascade* and 40 for skylake nodes)')
print ('# [If >40, cascade nodes will be allocated, else cascade or skylake.]')
print ('# [*NCCS recommends <=46 cores per node on SCU16 (cascade) due to OS issues (as of 6 Oct 2021).]')
print ('#')
for key in rqdRmInpKeys:
print (key + ':')
Expand Down