diff --git a/.circleci/config.yml b/.circleci/config.yml index f886bcce..23de0f65 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -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 diff --git a/README.md b/README.md index 172d3dfd..5b81ce44 100644 --- a/README.md +++ b/README.md @@ -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. @@ -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 | | ------------- |---------------------------------------------------| @@ -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 ``` @@ -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. @@ -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 @@ -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]` @@ -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 diff --git a/components.yaml b/components.yaml index 4c0d15ab..9caaa855 100644 --- a/components.yaml +++ b/components.yaml @@ -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: @@ -22,7 +22,7 @@ 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 diff --git a/src/Applications/LDAS_App/ldas_setup b/src/Applications/LDAS_App/ldas_setup index e2ecbabd..f8860681 100755 --- a/src/Applications/LDAS_App/ldas_setup +++ b/src/Applications/LDAS_App/ldas_setup @@ -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 : @@ -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 + ':')