Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Adding a new

...

In general, the SE team is happy to set up configuration for new machines provided the machine is "high profile" (an institutional cluster or LCF) and someone on the SE team. If this is not the case, you may have to set up the machine yourself.

Step-by-step guide

  1. Add your machine to <ACME>/scripts/ccsm_utils/Machines/config_machines.xml
    1. The easiest approach is probably to copy the configuration for some other machine and then replace all the values
    2. Most of the values should be obvious. You can look at the "userdefined" block to see which items are required and to see documentation on each item.
  2. Add compiler-specific information for each compiler supported by your machine to <ACME>/scripts/ccsm_utils/Machines/config_compilers.xml
    1. Here, for each compiler you want to support, you'll need to create a block <compiler COMPILER="<toolset>" MACH="<machine>">
    2. This block will inherit the properties of the primary block for that toolset and allow you to add/override values for your machine.
      1. The most common thing you'll need to do is add link flags with the ADD_SLIBS item.
      2. You may also need to define NETCDF_PATH and PNETCDF_PATH
  3. Add environment settings for your machine by creating this file: <ACME>/scripts/ccsm_utils/Machines/env_mach_specific.<machine>
    1. This is a csh script that, once sourced, should setup your environment for running ACME
    2. Common actions here are loading modules, setting PATH and LD_LIBRARY_PATH
    3. You may need indirection in this file if your machine supports multiple compilers, e.g: if ($COMPILER == "intel") then; module load intel; else; module load gcc; endif
  4. Add batch settings for your machine by creating this file: <ACME>/scripts/ccsm_utils/Machines/mkbatch.<machine>
    1. It will be much easier to start by copying mkbatch.userdefined and then editing
    2. Machines with similar batch systems should serve a good example of what to put in your file
  5. Now add tests for your machine, starting with the acme_developer tests
    1. Add <ACME>/scripts/acme to your PATH
    2. Cd to <ACME>/scripts/ccsm_utils/Testlistxml
    3. Run: update_acme_tests acme_developer ./testlist.xml -p <machine>,<compiler>
  6. Now lets make sure the acme_developer tests pass, for your first run of any test, you'll need to generate baselines, all subsequent runs should compare against these baselines
    1. cd <ACME>/scripts
    2. ./create_test -xml_category acme_developer -xml_mach <machine> -xml_compiler <compiler> -testroot <any-path> -project <batch project> -generate <some-name-for-these-baselines>
    3. cd <testroot>
    4. <ACME>/scripts/acme/wait_for_tests */TestStatus
      1. Note: The wait_for_tests script requires a minimum python version number of 2.7.
    5. All tests should pass

Adding a new test

Step-by-step guide

...

test to acme_developer or integration

Under most situations, tests should be added to one of the acme categories.

  1. Edit <ACME>/cime/scripts/lib/update_acme_tests.py
  2. You'll see a python dict at the top of the file called TEST_SUITES, find the test category you want to change in this dict and add your testcase to the list

  3. cd <ACME>/scripts/ccsm_utils/Testlistxml
  4. update_acme_tests <category> ./testlist.xml
  5. Case 2: Adding a testcase to a non-acme-supported category
    1. cd <ACME>/scripts/ccsm_utils/Testlistxml
    2. manage_xml_entries -query -outputlist -machine <machine> -compiler <compiler> -category <category> > SOME_FILE
    3. edit SOME_FILE
    4. add a line for you new test anywhere in the file, save
    5. manage_xml_entries -addlist -file SOME_FILE -category <category>
    6. The above command will produce a new file: "testlist-<date>-<time>.xml"
    7. Replace testlist.xml with the above file
  6. If a test is being run on a machine for the first time, you'll need to generate a baseline for it
    1. ./create_test -testname <new-test-case>.<machine>_<compiler> -testroot <any-path> -project <batch-project> -generate <some-name-for-your-baselines>

 

...

  1. .  Note the comment at the top of this file indicating that you add a test with this format: test>.<grid>.<compset>, and then there is a second argument for mods.

NOTE: acme_integration is a superset of acme_developer (IE, every test in acme_developer automatically goes into acme_integration as well).


Test definition modifiers

The following modifiers can be used in the test name
_CG = gregorian calendar
_D = debug
_E = esmf interfaces
_IOP*= PnetCDF IO test where * is A(atm), C(cpl), G(glc) , I(ice), L(clm), O(ocn), W(wav) or blank (all components)
_L* = set run length y, m, d, h, s, n(nsteps) plus integer (ie _Lm6 for 6 months)
_M* = set the mpilib to *, where * is default, mpi-serial, mpich, etc
_N* = set NINST_ env value to *, where * is an integer
_P* = set pecount to *, where * are specific values which include T, S, M, L, X, 1, 1x1, 16, 16x1, 4x4, etc...
_R* = PTS_MODE test case, valid values are LA, LB, OA, OB


Related articles

Filter by label (Content by label)
showLabelsfalse
max5
spacesDocs
showSpacefalse
sortmodified
reversetrue
typepage
cqllabel = "kb-how-to-article" and type = "page" and space = "Docs"
labelskb-how-to-article

Page Properties
hiddentrue


Related issues