Previous Section Headers
22.214.171.124 Out-of-Core Data Storage: The SSD Work Units
Data flow to and from the out-of-core units is depicted in Figure
3.3 for the main model buffers and the radiation buffer. The buffers
are portrayed by vertical rectangles, and the out-of-core work units by
the multi-layered cylinders. Each layer of a cylinder represents a latitude
slice of data. The arrows connecting the buffers to the out-of-core units
show the specific multitasked routines that perform the I/O. nra1, nrb1,
and nabem are the Fortran unit
numbers associated with the out-of-core work units. On startup, subroutine
inidat does the initial copy of data from the main model buffers
to units nra1 and nrb1. Data flow between the history
buffer and out-of-core work unit sunit is analogous to the main
model buffers. All I/O is synchronous. In addition to being simpler and
easier to understand than an asynchronous double-buffering scheme, single-buffered,
synchronous I/O allows the use of standard Fortran read and write,
which makes porting the code to different computer architectures an easier
task. On Cray machines, CCM3.6 uses the UNICOS "Secondary Data Segment"
(SDS) file interface on the SSD for the work
files required by the out-of-core implementation. These files are written
as Fortran direct access files, where each record represents a latitude
band of data. All I/O to the out-of-core work units is done as unblocked
files. Record size is computed by rounding up to the nearest multiple of
512 words. This saves an enormous amount of system CPU time which would
otherwise have to be spent blocking and unblocking the data records for
Figure 3.3.Use of SSD Work Units.
Arrows indicate movement between model buffers (vertical rectangles)
and the out-of-core word units (layered cylinders). The variable name holding
the Fortran unit number of each out-of-core unit is shown on the top layer
of each cylinder. Each arrow is labeled with the subroutine name responsible
for the data transfer.
Questions on these pages can be sent to...
$Name: ccm3_6_6_latest2 $ $Revision: 126.96.36.199 $ $Date: 1999/03/25 21:38:28 $ $Author: erik $