-
Notifications
You must be signed in to change notification settings - Fork 200
Using HPE SmartSim with CESM
Currently the CESM interface to SmartSim is on a branch and the SmartSim interface works on casper and cheyenne. There are gpu's on casper but the queue wait could be quite long.
First you need to install the SmartSim tool, you should only need to do this once, from a casper (cheyenne) login:
- module purge
- module load python/3.7.9 gnu/9.1.0 ncarenv ncarcompilers cmake git cuda cudnn
- ncar_pylib -c 20201220 /glade/work/$USER/casper_npl_clone (cheyenne_npl_clone)
- ncar_pylib casper_npl_clone (cheyenne_npl_clone)
- pip install --no-cache-dir smartsim
- smart --device gpu (cpu) (this step requires gnu make >- 4.0, my build is in /glade/work/jedwards/make-4.3/bin)
After you have completed the above steps once you just need to repeat step 4 each time you login.
- git clone https://github.com/jedwards4b/cesm -b jedwards/smartsim cesm2_3.smartsim
- cd cesm2_3.smartsim/cime/scripts
- create the case you must specify the openmpi comm library with --mpilib openmpi
- cd casedir
- ./xmlchange USE_SMARTSIM=TRUE
The call to initialize smartredis is in components/cmeps/driver/cime/esmApp.F90 and the client variable is sr_client
the client is available in any component by adding the line
use esm_utils_mod, only: sr_client
Once you have completed the build step and you are ready to submit a job:
- export CESM_ROOT=/path/to/src/cesm2_3.smartsim
- $CESM_ROOT/cime/tools/smartsim/launch.py (--help for options)
- This will start the database and your case or cases.
Tests using the cime testing infrastructure are available on casper and cheyenne with the intel and gnu compilers. For example:
- export CESM_ROOT=/path/to/src/cesm2_3.smartsim
- cd $CESM_ROOT/cime/scripts
- ./create_test SMS_Vnuopc.f19_g17.X.casper_intel.drv-smartsim
This tests a simple put get interaction with the database from the xatm component.
Further information on cime testing can be found here.