SPEC CPU2017 Benchmark Description

Benchmark Name


Benchmark Author

ROMS is written and maintained by "The ROMS/TOMS Group", which is described as:

Benchmark Program General Category

ROMS is a Regional Ocean Modeling System

Benchmark Description

ROMS is a free-surface, hydrostatic, primitive equation model discretized with a terrain-following vertical coordinate system. It is coded in parallel for multi-threaded and multi-process architectures and has been widely applied in many applications from planetary scales down to the scales of estuarine environments. Forecasts include predictions of water temperature, ocean currents, salinity, and sea surface height.

554.ROMS is based on ROMS/TOMS version 3.2 SVN Revision: 405M except some code from ROMS (573) to solve a race condition.

ROMS usually requires NETCDF, but the BENCHMARK dataset used will make no calls to NETCDF so the port to SPEC includes a few NETCDF constants being defined but does NOT require the NETCDF code to be present.

Input Description

554.roms_r uses the generic BENCHMARK data set.
TITLE = Benchmark Test, Idealized Southern Ocean, Small Grid

The files used are:

  varinfo.dat                   Used by all tests
ocean_benchmarkN.in.x where N=[0123] representing test, train, refrate, and refspeed.

The ocean_benchmarkN.in.x files are read from stdin. They are preprocessed for the OpenMP threaded version to find an optimal and legal set of values for tiling of the I and J dimensions, resulting in files ocean_benchmarkN.in

To create larger or smaller datasets the following parameters in the ocean_benchmarkN.in.x files can be used for this (values shown for test case):

	  Lm == 512           ! Number of I-direction INTERIOR RHO-points
          Mm == 64            ! Number of J-direction INTERIOR RHO-points
           N == 30            ! Number of vertical levels
      NTIMES == 5             ! Total number time-steps in current run.

The 3 first parameters will impact both size (memory) and time spent, the last one only time.

The SPEC-supplied test and train workloads use the Lm, Mm, and N values shown above; they differ only in NTIMES (total number of time steps), with 5 steps done by test and 200 by train. Both use on the order of 270 MiB of memory on a Linux system tested by SPEC.

For the refrate workload (which is used by the rate version), these values are used, and memory increases to about 850 MiB on the same Linux system:

            Lm == 1024          ! Number of I-direction INTERIOR RHO-points
            Mm == 128           ! Number of J-direction INTERIOR RHO-points
             N == 24            ! Number of vertical levels
        NTIMES == 150           ! Total number time-steps in current run.

The refspeed workload (for the speed version of the benchmark) uses about 13.7 GiB on the tested system, and has these values:

            Lm == 2048          ! Number of I-direction INTERIOR RHO-points
            Mm == 512           ! Number of J-direction INTERIOR RHO-points
             N == 40            ! Number of vertical levels
        NTIMES == 100           ! Total number time-steps in current run.

Output Description

After each time step, various calculated energies and volume are printed and validated against a SPEC-supplied set of expected answers. Note that all of the values printed in the table after each step are calculated. The fact that 3 of the 4 values printed are the same on each step is an expected behavior.

The output is written to stdout, which is redirected to:
ocean_benchmarkN.log where N is again 0, 1, 2, or 3.

Programming Language

Fortran 2003

Threading Model

OpenMP only

Known portability issues


Sources and Licensing

The benchmark is based on ROMS 3.2, under the ROMS license.

Please see details in the document SPEC CPU2017 Licenses.


Last updated: $Date: 2017-05-01 13:34:29 -0400 (Mon, 01 May 2017) $