Poseidon Ocean Model
Poseidon GEMS Eq_State

COLA Benchmark (August, 2004)

 

Instructions:

  1. Construct a base directory for the run. Within that directory, construct a subdirectory ./Library. Download gemslib.tgz, eq_state.tgz and neptune.tgz into that Library subdirectory. Un-tar then build the three libraries (make neptune last).
  2. Return to the base directory and download supervisor.tgz, restarts.tgz, bcs.tgz and scripts.tgz.
  3. Build the main program from ./supervisor
  4. Download and apply updates and corrections (See Below).

Pseudo-script:

 mkdir benchmark
 cd benchmark
 BASEDIR=`pwd`
 mkdir Library
 cd Library
 LIBDIR=`pwd`
 >> get gemslib.tgz eq_state.tgz neptune.tgz << 
 tar xzf gemslib.tgz
 cd gems/gemslib_mpi_32
 make
 cd $LIBDIR
 tar xzf eq_state.tgz
 cd eq_state/wright/lib_red_32
 make
 cd $LIBDIR
 tar xzf neptune.tgz
 cd neptune/lib_red_32
 make
 cd $BASEDIR
 >> get supervisor.tgz <<
 tar xzf supervisor.tgz
 cd supervisor
 make
 cd $BASEDIR
 >> get restarts.tgz bcs.tgz scripts.tgz <<
 tar xzf restarts.tgz
 tar xzf bcs.tgz
 tar xzf scripts.tgz
 submit ./run
 

 

Library Codes:

Main Code, Scripts, Data Files for 5/8 x 1/3 global run:

Manifest:

Main directory:

     3619  run
      194  clock.namelist
     1563  layer_control
 14874720  bcs/dQ_climatology
 14874816  bcs/LH_climatology
  1239560  bcs/pendepth_climatology
 14874720  bcs/Q0_climatology
 14874816  bcs/rain_data
 14874816  bcs/SW_data
 14874720  bcs/Sobs_climatology
 14874816  bcs/taux_data
 14874816  bcs/tauy_data
 14874720  bcs/Tobs_climatology
  7447096  restarts/gridfile
307414144  restarts/p_12_2004
     6290  supervisor/Makefile
    10072  supervisor/fakearies.f90
     2587  supervisor/faries.f90
    10107  supervisor/faries.read.f90
     3972  supervisor/faries.setup.f90
     6634  supervisor/fbio.f90
    41756  supervisor/super1.f90

Library:
  27211 gems/gemslib_mpi_32/arrays_module.f90
   1009 gems/gemslib_mpi_32/assert.f90
 147794 gems/gemslib_mpi_32/communication_primitives.f90
 340475 gems/gemslib_mpi_32/communication_utilities.f90
  66813 gems/gemslib_mpi_32/coupler.f90
  23463 gems/gemslib_mpi_32/DEPENDENT.generic.f90
  94751 gems/gemslib_mpi_32/ghost_module.f90
   7386 gems/gemslib_mpi_32/grid_types.f90
 113181 gems/gemslib_mpi_32/grid_utilities.f90
  44660 gems/gemslib_mpi_32/grids_module.f90
   5568 gems/gemslib_mpi_32/hermes_types.f90
    429 gems/gemslib_mpi_32/kind_module.f90
   2405 gems/gemslib_mpi_32/Makefile
   4108 gems/gemslib_mpi_32/mpif.f90.in
   5465 gems/gemslib_mpi_32/mpif90.h
  11296 gems/gemslib_mpi_32/p_linear_algebra.f90
  18333 gems/gemslib_mpi_32/polygon.f90
   1197 gems/gemslib_mpi_32/README
  37060 gems/gemslib_mpi_32/rotate.f90
  29761 gems/gemslib_mpi_32/tbd.f90
 184605 gems/gemslib_mpi_32/zeus_clocks.f90
   3687 eq_state/wright/lib_red_32/eos80.f90
  31534 eq_state/wright/lib_red_32/eq_state.f90
   1867 eq_state/wright/lib_red_32/global_constants.f90
    694 eq_state/wright/lib_red_32/kind_module.f90
   1192 eq_state/wright/lib_red_32/Makefile
   6100 eq_state/wright/lib_red_32/test_program.f90
  74192 eq_state/wright/lib_red_32/test_program.output
   8979 neptune/lib_red_32/budget.module.f90
 165683 neptune/lib_red_32/diagnostics.module.f90
   4705 neptune/lib_red_32/gems.f90
  14924 neptune/lib_red_32/gemsX.ibm.mpi.f90
 108873 neptune/lib_red_32/gemsX.mpi.f90
   2040 neptune/lib_red_32/global_constants.f90
   2558 neptune/lib_red_32/ieee.f90
  20113 neptune/lib_red_32/kappa.f90
    694 neptune/lib_red_32/kind_module.f90
   7578 neptune/lib_red_32/Makefile
  12724 neptune/lib_red_32/OptionalArray.module.f90
  36288 neptune/lib_red_32/poseidon.budget.f90
 118667 neptune/lib_red_32/poseidon.f90
 113157 neptune/lib_red_32/poseidon.grid.f90
 264352 neptune/lib_red_32/poseidon.hydro.f90
  36176 neptune/lib_red_32/poseidon.misc.f90
  63304 neptune/lib_red_32/poseidon.ohist.f90
 128720 neptune/lib_red_32/poseidon.restarts.f90
  14096 neptune/lib_red_32/poseidon_physinfo_module.f90
  73255 neptune/lib_red_32/poseidon_types.f90
 142265 neptune/lib_red_32/remap_module.f90
  35475 neptune/lib_red_32/shapiro.f90
  81277 neptune/lib_red_32/zdf_module.f90

Known Issues:

mpif.h

The main problem facing the deployment of this benchmark is the linkage to the MPI library, and the use of mpif.h or mpif90.f90 include. This occurs when compiling communications_primitives.f90 in gems/gemslib_mpi_32.

flush()

The flush() subroutine is available with some compiler systems, and not with others. In the supplied code, neptune/lib_red_32/gems.f90, we have included

 
175:  use XLFUTILITY, only: FLUSH_
 
196:  subroutine FLUSH( lunit, errno )
197:  integer, intent(in)  :: lunit
198:  integer, intent(out),optional :: ERRNO
199:  if ( PRESENT(ERRNO) ) errno=0
200:  
201:! If whe have a FLUSH, use it 
202:!  On IBM, flush is flush_ 
203: 
204:	call FLUSH_(lunit)  
205:
206:  end subroutine FLUSH

This code may be removed and/or replaced with appropriate calls. Flush is not necessary in the routine operation of the model. It simply ensures that I/O buffers are flushed. A suitable change is to simply delete line 175 and 204.

Fortran95 - C interaction

A possible problem has been identified with the Poseidon code, in that it passes array sections to GEMS subroutines that then call MPI procedures that are written in C. Contact Paul Schopf for further details, or should any problem arise in execution.

Running the executable:

The sample script uses the prun facility of the HP-Compaq Alphaserver system at NASA GSFC. A suitablle mpirun command is needed.

Updates

An issue regarding the use of conflicting unit numbers was identified after the release of the original benchmark. An update file contains a modified version of the neptune/lib_red_32/zdf_module.f90 neptune/lib_red_32/poseidon.grid.f90 and supervisor/faries.f90 codes. These may be downloaded as a gzipped tar file HERE.

To install the update, replace zdf_module.f90 and poseidon.grid.f90 in the poseidon library and re-make the library. Then put the new faries.f90 code in supervisor and re-make.

CVS tree for cvs_mirror: HERE (2.7M)

Output

The STDOUT produced by the benchmark code running on 32 PEs at NASA GSFC is available here.

Last modified: August 26, 2004 9:15 AM

©2003 Paul Schopf, School of Computational SciencesGeorge Mason University HomeCodeSupport