![]() |
|||||||||||||||
| |
Development
of an Earth System Model (ESM): Abstract The ocean general circulation model (OGCM) is one of the four component modules in the Earth System Model (ESM) being developed as part of the National Aeronautics and Space Administration (NASA)'s High-Performance Computing and Communication (HPCC) grand challenge applications. Here we discuss the progress in the parallel implementation and optimization of OGCM. This document serves the purpose of a combined users' guide and reference manual, andis submitted in compliance with milestone requirement of contract CAN-NCCS5-149. It includes descriptions of the model equations and solution algorithm, instructions on how to obtain the OGCM, how to compile the code with various options, and how to run the code, and how to perform diagnostic tests and timings. Introduction Ocean modeling plays an important role in both understanding the current climatic conditions and predicting the future climate change. In situ oceanographic instruments provide only sparse measurements over the world ocean. Although remote-sensed data from satellites cover the world ocean, it only provides information on the ocean surface. Information below the ocean surface has to be obtained from 3-dimensional ocean general circulation models (OGCMs). Ocean General Circulation Model
The OGCM is based on the Parallel Ocean
Program (POP) developed at Los Alamos National Laboratory (Smith
et al., 1992). This ocean model evolved from the Bryan-Cox 3-dimensional
primitive equations ocean model (Bryan, 1969; Cox, 1984), developed
at NOAA Geophysical Fluid Dynamics Laboratory (GFDL), and later
known as the Semtner and Chervin (1988; 1992) model or the Modular
Ocean Model (MOM; Pacanowski et al., 1992). This ocean model solves
the 3-dimensional primitive equations with the finite difference
technique. Optimization The original POP code was developed in FORTRAN 90 on the Los Alamos CM-2 Connection Machine. During the first half of 1994, the code was ported to the T3D by Cray Research using SHMEM-based message passing. Since the code on the T3D was still time- consuming when large problems were encountered, improving the code performance was required. In order to significantly reduce wallclock time, the code was optimized using single PE optimization techniques and other strategies that are documented in our previous technical reports I and II. Performance
A test problem was chosen with a local grid
size of 37 x 34 x 60 cells. Timings were run for machine sizes from
1 to 256 processors, corresponding to a global grid of up to 592
x 544 x 60. The POP code decompose the grid in blocks in both x
and y, and all z data for a given (x,y) is local to one processor.
All results shown in this section refer to scaled size problems,
where the problem size per processor is fixed and the number of
processors is varied. Software Package POP (Parallel Ocean Program) is a software package that runs on Cray T3D massively parallel computers for modeling global ocean circulation. This software is freely and publicly available from the authors. We request that any images produced by the software contain the following acknowledgement: This work was conducted at the Jet Propulsion Laboratory (JPL), California Institute of Technology, under contract with the National Aeronautics and Space Administration (NASA). For further information about the POP code, see the POP webpages at http://lochness.jpl.nasa.gov. Any questions about this code distribution can be addressed to:
Yi Chao or Benny
Cheng Obtaining the OGCM source code The OGCM code can be found at the anonymous ftp site at yosemite.atmos.ucla.edu (enter anonymous as your username). Once you are in, cd to /pub/hpcc. The compressed tar file is POP.tar.Z. For further information, please contact Yi Chao at yc@pacific.jpl.nasa.gov. About the source code
POP has been compiled successfully for the
Cray T3D machine, running UNICOS 9.0.2.4 and up to 1024 processors
in parallel. The following compilers must be present in the system:
cft77, cc, and cam. The input data for initializing the model are
in the file initial.F, which can be modified to suit your own purpose.
Other initialization data are in the set_*.F files and the size
of the grid can be altered in params.H. Running the OGCM
Uncompress and untar the package POP.tar.Z
into your directory. In the POP subdirectory, edit the Makefile
to tell the computer where the paths are to your compilers, and
any other options you wish to compile with.
See CRAY's Scientific Libraries Reference
Manual, publication SR-2081, for more information on BLAS routines.
The code is set up to run a simple test problem with idealized geometry. This test problem can be run with arbitrary resolution. To set the horizontal resolution, change parameters imt & jmt in 'params.H'. To set the vertical resolution, change parameter km in 'params.H', and and make sure that the input files 'in_depths.dat' and 'in_ts.dat' contain data for km levels. The convergence criterion on the elliptic solver is set to an adequately small value. For purposes of timing the code, it is suggested that the number of iterations be hardwired to 100. To do this, go into file input.dat and set: err = 1.0e-25 and mxscan = 100. The makefile uses the C preprocessor to make .h include files from .H files, and .f files from .F files, with various precompiler options. The compiled code, if successful, is named "pop". You can then run the code by typing: ./pop -npes # where # is the number of PE's desired. Diagnostic routines The POP comes with diagnostic routines to check the accuracy of the output. These can be turned on by setting -diagnostic=1 in the Makefile and then recompiling the program. Make sure to type make clean" to clean out any old code before recompiling. A sample diagnostic output (from stdout) for 256 PE is given in the file SAMPLE included in the distribution. The diagnostic routines also produces a numerical output file containing the final values of the ocean variables and it is called IO_out. This is a Cray binary output file, which can be read by rd_2d_hpcc.f. This program can be compiled with cf77 rd_2d_hpcc.f" and then executed with ./a.out -npes 1 We have integrated the POP code for 10 days, and analyzed the sea level at the end of the 10-day integration. Results from the optimized code matched well with the original code within error bounds. Timing the code
To get an estimate of the rate of the program
in gflops/sec, run the program without the -Ta option (default),
and take note of the number of seconds in Timer 1. Then turn on
the apprentice option -Ta, in the Makefile, compile the code, run
the program, and count the FLOPS as specified in our webpage. The
estimated speed is given by the ratio of the above two numbers.
Note that the current default local grid size is 64x32x20. For example,
based on 10 time steps and 50 iterations (scans) with 64 processors,
we obtained the following table: Setting up a new model configuration In order to set up a particular model configuration for your own applications, one needs to obtain many data files, including the bottom topography, surface forcings (wind stress, heat and fresh-water flux), and side boundary conditions (historical 3-dimensional profiles of temperature and salinity). We have collected various data files which can be used for various applications. If you are interested in obtaining these data or a subset of these data files, please contact Yi Chao. Summary
This document serves the purpose of a combined
users' guide and reference manual for the OGCM. It includes descriptions
of the model equations and solution algorithm, instructions on how
to obtain the OGCM, how to compile the code with various options,
and how to run the code and perform diagnostic tests and timings.
There is also discussions of the procedure for constructing a new
application of a user's choice. References
|
||||||||||||||