You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 18 Next »

Introduction

The OpenIFS tarfile distribution includes a simple low resolution (T21) test job that can be used to verify the model is working correctly in the directory: oifs/t21test. It is strongly recommended that after compiling the model successfully, these short tests are run.

  1. Single task / single thread.
  2. 2 x OpenMP threads; 2 x MPI tasks; 2 x threads + 2 tasks.
  3. Acceptance (reference) tests.

These are described below.

Test directory

The directory oifs/t21test contains a number of files:

% cd oifs
% ls t21test
ICMGGepc8      ICMGGepc8INIUA  ICMSHepc8INIT  ifsdata  namelists     ref_021_0018
ICMGGepc8INIT  ICMSHepc8       README         job      ref_021_0006  ref_021_0144

Files beginning with 'ICM'.
These are the input files for this T21 experiment. They are in GRIB format. Do not move them from this directory. OpenIFS expects to find it's input files in the same directory as the main executable.

epc8 - this is the Experiment ID.
ICMGGepc8 - 'GG' indicates these contain gridpoint fields.
ICMSHepc8 - 'SH' indicates these contains spherical harmonic fields.

You can use the 'grib_ls' and 'grib_dump' commands to see the contents of these files (grib_ls/dump will be in your grib_api directory).

job
Simple shell script to run the model. Described in more detail below.

ifsdata
Climate data fields used for T21 test integration. You should not move or rename this directory as the model will expect to find the climate files it needs in a directory of this name.

namelists
This file contains all of the input model fortran NAMELISTS. Not all of the namelists have their variables listed, only the variables commonly changed are listed here. Users should copy this file and modify it for the tests described below.

ref_021_*
These files are reference output for the model tests. The model can be run in 'reference' mode where it checks it is working correctly by comparing some mathematical norms against these files. Reference runs are described in more detail under 'Acceptance testing' below.

Test integrations

A number of short model runs are recommended to verify the model is working correctly. Once you have compiled the model without errors, follow these steps.

These tests will ensure the model can run with multiple OpenMP threads, with MPI tasks and in mixed OpenMP/MPI mode. A further acceptance test can be run which compares the model output on your machine with reference data obtained from machines at ECMWF.

Serial : single task, single thread.

a) Build the model in the oifs/make directory. Use the optimized ('opt') build configuration. If you find these tests do not work with this configuration, use the 'noopt' configuration and then experiment by raising the optimization level.

b) In directory oifs/t21test  edit the file 'job' to change the line beginning:

export GRIB_SAMPLES_PATH=...

to match the location of your grib_api installation. 

c) Copy the namelists and run the model with a single task and single thread by executing the job script:

cp namelists fort.4
./job

The model will expect to find a file called fort.4 in the same directory as the executable. This script copies the executable from oifs/make/build/bin.

If the run works you will see output like:

...
signal_drhook(SIGSYS=31): New handler installed at 0x4d06cf; old preserved at 0x0
MPL_BUFFER_METHOD:  2           0
   16:03:46 STEP    0 H=   0:00 +CPU=  3.598
   16:03:46 STEP    1 H=   0:10 +CPU=  0.535
   16:03:47 STEP    2 H=   0:20 +CPU=  0.537
   16:03:48 STEP    3 H=   0:30 +CPU=  0.537
   16:03:48 STEP    4 H=   0:40 +CPU=  0.527
   16:03:49 STEP    5 H=   0:50 +CPU=  0.526
   16:03:49 STEP    6 H=   1:00 +CPU=  0.530

This test runs only 6 timesteps.

Model output

The model writes its output to a several files.

NODE_001.01 contains the text output (WRITE/PRINT statements). The numbers refer to task number and thread number. Only output from the master task & thread is normally output but this can be changed for debugging purposes.

ICM*epc8+0000 is the model output in GRIB format split into 2 files; one for the gridpoint, the other for spectral fields. These contain only a few output variables in this test. This file is a mix of GRIB1 and GRIB2 messages. See the Documentation for how to process this output.

ifs.stat is a small file that prints the model steps, time taken for each step and a 'norm' measure. This file can be usually ignored but is useful for debugging.

Likely errors

The model will fail with an error if it cannot find the 'ifs_samples' directory in the grib_api installation:

signal_drhook(SIGSYS=31): New handler installed at 0x4d06cf; old preserved at 0x0
MPL_BUFFER_METHOD:  2           0
GRIB_API ERROR   :  Unable to locate sample file gg_sfc_grib1.tmpl
                    in /home/rd/openifs/software/grib_api/1.9.18/grib_api-gcc-4.5.0/ifs_samples/grib1_mlgrib2
 GRIB_NEW_FROM_TEMPLATE gg_sfc_grib1 FAILED          -2

Check the location of the grib samples and correct the 'job' script.

If you see an error like this:

mpirun noticed that job rank 0 with PID 7429 on node elvira exited on
signal 11 (Segmentation fault).

or

MEMORY FAULT

it is most likely because OpenIFS requries more 'stack' memory than your default setting. Sometimes, this can happen when increasing the number of OpenMP threads.

To solve the problem add the line:

ulimit -s unlimited

to the file job just before the mpirun line. This will increase the per-process stack memory limit to the maximum the operating system allows.

If the model still fails, contact openifs-support@ecmwf.int for assistance.

 

Parallel: 2 threads and 2 tasks

These next short tests verify the model works correctly with either OpenMP parallel threading, MPI tasks and both and follow on from the serial tests above.

Acceptance testing

 

 

  • No labels