![]() |
Poseidon Ocean Model | ||
|
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
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
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
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.
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.
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.
The sample script uses the prun facility of the HP-Compaq Alphaserver system at NASA GSFC. A suitablle mpirun command is needed.
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)
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 Sciences George Mason University | Home Code Support |