97 |
\resizebox{!}{4.5in}{\includegraphics{part4/fit_in_wrapper.eps}} |
\resizebox{!}{4.5in}{\includegraphics{part4/fit_in_wrapper.eps}} |
98 |
\end{center} |
\end{center} |
99 |
\caption{ |
\caption{ |
100 |
Numerical code is written too fit within a software support |
Numerical code is written to fit within a software support |
101 |
infrastructure called WRAPPER. The WRAPPER is portable and |
infrastructure called WRAPPER. The WRAPPER is portable and |
102 |
can be specialized for a wide range of specific target hardware and |
can be specialized for a wide range of specific target hardware and |
103 |
programming environments, without impacting numerical code that fits |
programming environments, without impacting numerical code that fits |
120 |
(UMA) and non-uniform memory access (NUMA) designs. Significant work has also |
(UMA) and non-uniform memory access (NUMA) designs. Significant work has also |
121 |
been undertaken on x86 cluster systems, Alpha processor based clustered SMP |
been undertaken on x86 cluster systems, Alpha processor based clustered SMP |
122 |
systems, and on cache-coherent NUMA (CC-NUMA) systems from Silicon Graphics. |
systems, and on cache-coherent NUMA (CC-NUMA) systems from Silicon Graphics. |
123 |
The MITgcm code, operating within the WRAPPER, is also used routinely used on |
The MITgcm code, operating within the WRAPPER, is also routinely used on |
124 |
large scale MPP systems (for example T3E systems and IBM SP systems). In all |
large scale MPP systems (for example T3E systems and IBM SP systems). In all |
125 |
cases numerical code, operating within the WRAPPER, performs and scales very |
cases numerical code, operating within the WRAPPER, performs and scales very |
126 |
competitively with equivalent numerical code that has been modified to contain |
competitively with equivalent numerical code that has been modified to contain |
661 |
computation is performed concurrently over as many processes and threads |
computation is performed concurrently over as many processes and threads |
662 |
as there are physical processors available to compute. |
as there are physical processors available to compute. |
663 |
|
|
664 |
|
An exception to the the use of {\em bi} and {\em bj} in loops arises in the |
665 |
|
exchange routines used when the exch2 package is used with the cubed |
666 |
|
sphere. In this case {\em bj} is generally set to 1 and the loop runs from |
667 |
|
1,{\em bi}. Within the loop {\em bi} is used to retrieve the tile number, |
668 |
|
which is then used to reference exchange parameters. |
669 |
|
|
670 |
The amount of computation that can be embedded |
The amount of computation that can be embedded |
671 |
a single loop over {\em bi} and {\em bj} varies for different parts of the |
a single loop over {\em bi} and {\em bj} varies for different parts of the |
672 |
MITgcm algorithm. Figure \ref{fig:bibj_extract} shows a code extract |
MITgcm algorithm. Figure \ref{fig:bibj_extract} shows a code extract |
787 |
forty grid points in y. The two sub-domains in each process will be computed |
forty grid points in y. The two sub-domains in each process will be computed |
788 |
sequentially if they are given to a single thread within a single process. |
sequentially if they are given to a single thread within a single process. |
789 |
Alternatively if the code is invoked with multiple threads per process |
Alternatively if the code is invoked with multiple threads per process |
790 |
the two domains in y may be computed on concurrently. |
the two domains in y may be computed concurrently. |
791 |
\item |
\item |
792 |
\begin{verbatim} |
\begin{verbatim} |
793 |
PARAMETER ( |
PARAMETER ( |
935 |
File: {\em eesupp/inc/MAIN\_PDIRECTIVES2.h}\\ |
File: {\em eesupp/inc/MAIN\_PDIRECTIVES2.h}\\ |
936 |
File: {\em model/src/THE\_MODEL\_MAIN.F}\\ |
File: {\em model/src/THE\_MODEL\_MAIN.F}\\ |
937 |
File: {\em eesupp/src/MAIN.F}\\ |
File: {\em eesupp/src/MAIN.F}\\ |
938 |
File: {\em tools/genmake}\\ |
File: {\em tools/genmake2}\\ |
939 |
File: {\em eedata}\\ |
File: {\em eedata}\\ |
940 |
CPP: {\em TARGET\_SUN}\\ |
CPP: {\em TARGET\_SUN}\\ |
941 |
CPP: {\em TARGET\_DEC}\\ |
CPP: {\em TARGET\_DEC}\\ |
990 |
|
|
991 |
Additionally, compile time options are required to link in the |
Additionally, compile time options are required to link in the |
992 |
MPI libraries and header files. Examples of these options |
MPI libraries and header files. Examples of these options |
993 |
can be found in the {\em genmake} script that creates makefiles |
can be found in the {\em genmake2} script that creates makefiles |
994 |
for compilation. When this script is executed with the {bf -mpi} |
for compilation. When this script is executed with the {bf -mpi} |
995 |
flag it will generate a makefile that includes |
flag it will generate a makefile that includes |
996 |
paths for search for MPI head files and for linking in |
paths for search for MPI head files and for linking in |
1012 |
|
|
1013 |
\fbox{ |
\fbox{ |
1014 |
\begin{minipage}{4.75in} |
\begin{minipage}{4.75in} |
1015 |
File: {\em tools/genmake} |
File: {\em tools/genmake2} |
1016 |
\end{minipage} |
\end{minipage} |
1017 |
} \\ |
} \\ |
1018 |
\paragraph{\bf Execution} The mechanics of starting a program in |
\paragraph{\bf Execution} The mechanics of starting a program in |