Ctest errors when compiling JEDI in a single precision mode

On Derecho, when I compile JEDI in the default double precision mode, all tests are passed.

But when I compile JEDI in a single precision model, tests are failed starting from the 3rd test “test_mpasjedi_state“.

These are the commands that I use:

git clone -b release/3.0.2 GitHub - JCSDA/mpas-bundle: CMake build configuration for JEDI-MPAS application code

source ./code/env-setup/gnu-derecho.sh

git lfs install

mkdir build

cd build

cmake ../code -DMPAS_DOUBLE_PRECISION=OFF

qsub -A ummm0014 -N build-bundle -q main -l job_priority=premium -l walltime=03:00:00 -l select=1:ncpus=128:mem=235GB -I

source ../code/env-setup/gnu-derecho.sh

make -j20

export LD_LIBRARY_PATH=/glade/work/jiawang/MPASJEDIbundle/mpas_bundle_v3/build/lib:${LD_LIBRARY_PATH}

cd mpas-jedi

ctest

This is a excerpt of “LastTest.log.tmp

Directory: /glade/work/jiawang/MPASJEDIbundle/mpas_bundle_v3/build/mpas-jedi/test

“test_mpasjedi_state” start time: Sep 26 11:59 MDT

Output:

----------------------------------------------------------

OOPS Starting 2025-09-26 11:59:26 (UTC-0600)

Configuration input file is: testinput/state.yaml

Full configuration is:YAMLConfiguration[path=testinput/state.yaml, root={geometry => {nml_file => ./Data/480km/namelist.atmosphere_2018041500 , streams_file => ./Data/480km/streams.atmosphere} , state test => {statefile => {state variables => (temperature,spechum,uReconstructZonal,uReconstructMeridional,surface_pressure) , filename => ./Data/480km/bg/restart.2018-04-15_00.00.00.nc , date => 2018-04-15T00:00:00Z} , date => 2018-04-15T00:00:00Z , norm file => 19735.3 , state generate => {analytic init => {method => dcmip-test-4-0} , state variables => (temperature,spechum,uReconstructZonal,uReconstructMeridional,surface_pressure) , date => 2018-04-15T00:00:00Z} , norm generated state => 20000.4 , tolerance => 1e-08 , write then read test => {state write => {filename => Data/states/mpas.state.2018-04-15_00.00.00.nc} , state read => {state variables => (temperature,spechum,uReconstructZonal,uReconstructMeridional,surface_pressure) , filename => Data/states/mpas.state.2018-04-15_00.00.00.nc , date => 2018-04-15T00:00:00Z , transform model to analysis => false}} , construct to variables => (temperature,spechum,uReconstructZonal,uReconstructMeridional)}}]

OOPS_STATS ObjectCountHelper started.

OOPS_STATS Run start - Runtime: 0.01 sec, Memory: total: 59.45 Mb, per task: min = 59.45 Mb, max = 59.45 Mb

Run: Starting oops::Test running test::State

Running 8 tests:

Running case 0: interface/State/testStateConstructors …

==> create geom

difference between 19735.25 and 19735.265702001503 is 0.015702001503086649, i.e. exceeds 0.00019735265702001503 (FAIL)

^[[31mTest “interface/State/testStateGeometry” failed: Condition failed: oops::is_close(norm2, norm, tol) @ (/glade/work/jiawang/MPASJEDIbundle/mpas_bundle_v3/code/oops/src/test/interface/State.h +267 testStateGeometry)^[[0m

You will see several mpas-jedi ctests failing if the mpas-bundle is built with a single precision MPAS-Model, due to a less precision.

The reference values and tolerance of ctests were generated with a double precision MPAS-Model.

BJ

Then any other tests that we can do to make sure the build is correct?

Hi @JiaWANG,

We do not have a way of confirming if the single precision build is correct.
But I guess the ctest results from single precision and double precision might not show large difference. Some tests can relax the tolerance to compare the results, but in my understanding, not all test have that capability.

Thank you,
BJ