\batchmode



\documentclass{article}
\makeatletter



\usepackage{psfig}



\makeatother
\newenvironment{tex2html_wrap}{}{}
\newwrite\lthtmlwrite
\def\lthtmltypeout#1{{\let\protect\string\immediate\write\lthtmlwrite{#1}}}%
\newbox\sizebox
\begin{document}
\pagestyle{empty}
{\newpage
\clearpage
\samepage \setbox\sizebox=\hbox{$t^{\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  T}}_{\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  com}}$}\lthtmltypeout{latex2htmlSize :tex2html_wrap_inline1600: \the\ht\sizebox::\the\dp\sizebox.}\box\sizebox
}

{\newpage
\clearpage
\samepage \setbox\sizebox=\hbox{$\dag  $}\lthtmltypeout{latex2htmlSize :tex2html_wrap_inline1602: \the\ht\sizebox::\the\dp\sizebox.}\box\sizebox
}

{\newpage
\clearpage
\samepage \setbox\sizebox=\hbox{$\S  $}\lthtmltypeout{latex2htmlSize :tex2html_wrap_inline1604: \the\ht\sizebox::\the\dp\sizebox.}\box\sizebox
}

\stepcounter{section}
\stepcounter{subsection}
\stepcounter{subsection}
\stepcounter{section}
{\newpage
\clearpage
\samepage \begin{figure}[bt]
\centerline{
\begin{tabular}{| l | l |} \hline
MPI datatype & Java datatype \\ 
\hline
MPJ.BYTE     & {\tt byte} \\ 
MPJ.CHAR     & {\tt char} \\ 
MPJ.SHORT    & {\tt short} \\ 
MPJ.BOOLEAN  & {\tt boolean} \\ 
MPJ.INT      & {\tt int} \\ 
MPJ.LONG     & {\tt long} \\ 
MPJ.FLOAT    & {\tt float} \\ 
MPJ.DOUBLE   & {\tt double} \\ 
MPJ.OBJECT   & {\tt Object} \\ 
\hline
\end{tabular}
}

\end{figure}
}

\stepcounter{section}
\stepcounter{section}
{\newpage
\clearpage
\samepage \setbox\sizebox=\hbox{$N^2$}\lthtmltypeout{latex2htmlSize :tex2html_wrap_inline1612: \the\ht\sizebox::\the\dp\sizebox.}\box\sizebox
}

{\newpage
\clearpage
\samepage \begin{figure*}[t]
\centerline{\bf $N^2$ float vector}
\centerline{
\begin{minipage}[t]{0in}
\footnotesize
\tt
\begin{tabbing}
\hspace{2.6in} \\ 
float [] buf = new float [N * N] ; \\ 
MPJ.COMM\_WORLD.send(\=buf, 0, N * N, \\ 
                     \>MPJ.FLOAT, \\ 
                     \>dst, tag) ;
\end{tabbing}
\end{minipage}
\begin{minipage}[t]{0in}
\footnotesize
\tt
\begin{tabbing}
\hspace{0in} \\ 
float [] buf = new float [N * N] ; \\ 
MPJ.COMM\_WORLD.recv(\=buf, 0, N * N, \\ 
                     \>MPJ.FLOAT, \\ 
                     \>src, tag) ;
\end{tabbing}
\end{minipage}
}
\vspace{0.2in}
\centerline{\bf $N \times N$ float array}
\centerline{
\begin{minipage}[t]{0in}
\footnotesize
\tt
\begin{tabbing}
\hspace{2.6in} \\ 
float [] [] buf = new float [N] [N] ; \\ 
MPJ.COMM\_WORLD.send(\=buf, 0, N, \\ 
                    \>MPJ.OBJECT, \\ 
                    \>dst, tag) ;
\end{tabbing}
\end{minipage}
\begin{minipage}[t]{0in}
\footnotesize
\tt
\begin{tabbing}
\hspace{0in} \\ 
float [] [] buf = new float [N] [] ; \\ 
MPJ.COMM\_WORLD.recv(\=buf, 0, N, \\ 
                    \>MPJ.OBJECT, \\ 
                    \>src, tag) ;
\end{tabbing}
\end{minipage}
}
\vspace{0.2in}
\centerline{\bf $1 \times N^2$ float array}
\centerline{
\begin{minipage}[t]{0in}
\footnotesize
\tt
\begin{tabbing}
\hspace{2.6in} \\ 
float [] [] buf = new float [1] [N * N] ; \\ 
MPJ.COMM\_WORLD.send(\=buf, 0, 1, \\ 
                    \>MPJ.OBJECT, \\ 
                    \>dst, tag) ; \\ 
\end{tabbing}
\end{minipage}
\begin{minipage}[t]{0in}
\footnotesize
\tt
\begin{tabbing}
\hspace{0in} \\ 
float [] [] buf = new float [1] [] ; \\ 
MPJ.COMM\_WORLD.recv(\=buf, 0, 1, \\ 
                    \>MPJ.OBJECT, \\ 
                    \>src, tag) ;
\end{tabbing}
\end{minipage}
}

\end{figure*}
}

{\newpage
\clearpage
\samepage \setbox\sizebox=\hbox{$t^{\mbox{\scriptsize T}}_{\mbox{\scriptsize ser}}$}\lthtmltypeout{latex2htmlSize :tex2html_wrap_inline1624: \the\ht\sizebox::\the\dp\sizebox.}\box\sizebox
}

{\newpage
\clearpage
\samepage \setbox\sizebox=\hbox{$t^{\mbox{\scriptsize vec}}_{\mbox{\scriptsize ser}}$}\lthtmltypeout{latex2htmlSize :tex2html_wrap_inline1626: \the\ht\sizebox::\the\dp\sizebox.}\box\sizebox
}

{\newpage
\clearpage
\samepage \setbox\sizebox=\hbox{$t^{\mbox{\scriptsize T}}_{\mbox{\scriptsize unser}}$}\lthtmltypeout{latex2htmlSize :tex2html_wrap_inline1628: \the\ht\sizebox::\the\dp\sizebox.}\box\sizebox
}

{\newpage
\clearpage
\samepage \setbox\sizebox=\hbox{$t^{\mbox{\scriptsize vec}}_{\mbox{\scriptsize unser}}$}\lthtmltypeout{latex2htmlSize :tex2html_wrap_inline1630: \the\ht\sizebox::\the\dp\sizebox.}\box\sizebox
}

{\newpage
\clearpage
\samepage \setbox\sizebox=\hbox{$t^{\mbox{\scriptsize T}}_{\mbox{\scriptsize com}}$}\lthtmltypeout{latex2htmlSize :tex2html_wrap_inline1632: \the\ht\sizebox::\the\dp\sizebox.}\box\sizebox
}

{\newpage
\clearpage
\samepage \begin{eqnarray}t^{\mbox{\small \tt T[$N^2$]}}     & = & c +
    t^{\mbox{\scriptsize T}}_{\mbox{\scriptsize com}} N^2 \label{eqn:mod1} \\ 
t^{\mbox{\small \tt T[1][$N^2$]}} & = & c' +
   (t^{\mbox{\scriptsize T}}_{\mbox{\scriptsize ser}} +
    t^{\mbox{\scriptsize T}}_{\mbox{\scriptsize com}} +
    t^{\mbox{\scriptsize T}}_{\mbox{\scriptsize unser}}) N^2
                                                        \label{eqn:mod2} \\ 
t^{\mbox{\small \tt T[$N$][$N$]}} & = & c'' +
   (t^{\mbox{\scriptsize vec}}_{\mbox{\scriptsize ser}} +
    t^{\mbox{\scriptsize vec}}_{\mbox{\scriptsize unser}}) N + \nonumber \\ 
&& (t^{\mbox{\scriptsize T}}_{\mbox{\scriptsize ser}} +
    t^{\mbox{\scriptsize T}}_{\mbox{\scriptsize com}} +
    t^{\mbox{\scriptsize T}}_{\mbox{\scriptsize unser}}) N^2
                                                        \label{eqn:mod3}
\end{eqnarray}
}

{\newpage
\clearpage
\samepage \setbox\sizebox=\hbox{$t^{\mbox{\small \tt T[$N^2$]}}$}\lthtmltypeout{latex2htmlSize :tex2html_wrap_inline1654: \the\ht\sizebox::\the\dp\sizebox.}\box\sizebox
}

{\newpage
\clearpage
\samepage \begin{table}[tb]
\centerline{
\begin{tabular}{ r @{\hspace{0.1in}=\hspace{0.1in}} l @{\hspace{0.4in}}
                 r @{\hspace{0.1in}=\hspace{0.1in}} l @{\hspace{0.4in}} 
                 r @{\hspace{0.1in}=\hspace{0.1in}} l }
$t^{\mbox{\scriptsize byte}}_{\mbox{\scriptsize ser}}$    & 0.043 &
$t^{\mbox{\scriptsize float}}_{\mbox{\scriptsize ser}}$   & 2.1 &
$t^{\mbox{\scriptsize vec}}_{\mbox{\scriptsize ser}}$     & 100 \\ [0.07in]
$t^{\mbox{\scriptsize byte}}_{\mbox{\scriptsize unser}}$  & 0.027 &
$t^{\mbox{\scriptsize float}}_{\mbox{\scriptsize unser}}$ & 1.4 &
$t^{\mbox{\scriptsize vec}}_{\mbox{\scriptsize unser}}$   & 53 \\ [0.07in]
$t^{\mbox{\scriptsize byte}}_{\mbox{\scriptsize com}}$    & $0.062^\dag$ &
$t^{\mbox{\scriptsize float}}_{\mbox{\scriptsize com}}$   & $0.25^\dag$ \\ [0.07in]
$t^{\mbox{\scriptsize byte}}_{\mbox{\scriptsize com}}$    & $0.008^\S$ &
$t^{\mbox{\scriptsize float}}_{\mbox{\scriptsize com}}$   & $0.038^\S$ \\ [0.07in]
\end{tabular}
}


\end{table}
}

{\newpage
\clearpage
\samepage \setbox\sizebox=\hbox{$t^{\mbox{\small \tt
T[1][$N^2$]}}$}\lthtmltypeout{latex2htmlSize :tex2html_wrap_inline1694: \the\ht\sizebox::\the\dp\sizebox.}\box\sizebox
}

{\newpage
\clearpage
\samepage \setbox\sizebox=\hbox{$t^{\mbox{\small \tt T[$N$][$N$]}}$}\lthtmltypeout{latex2htmlSize :tex2html_wrap_inline1696: \the\ht\sizebox::\the\dp\sizebox.}\box\sizebox
}

{\newpage
\clearpage
\samepage \begin{figure*}[t]
\centerline{\psfig{figure=nonsh_byte.eps,width=2.4in}
            \psfig{figure=sh_byte.eps,width=2.4in}}
\centerline{\psfig{figure=nonsh_float.eps,width=2.4in}
            \psfig{figure=sh_float.eps,width=2.4in}}

\end{figure*}
}

\stepcounter{section}
{\newpage
\clearpage
\samepage \begin{figure*}[tp]
\centerline{\psfig{figure=arrayProtocol.eps,width=4.5in}}

\end{figure*}
}

{\newpage
\clearpage
\samepage \begin{figure*}[t]
\centerline{
\begin{minipage}[t]{0in}
\footnotesize
\tt
\begin{tabbing}
XXX \= XXX \= XXX \=  \kill
class ArrayOutputStream extends ObjectOutputStream \{ \\ 
  \> Vector dataVector ;\\ 
\\ 
  \> public Object replaceObject(Object obj) \{ \\ 
  \>  \> if(obj instanceof int []) \{ \\ 
  \>  \>  \> dataVector.addElement(obj) \\ 
  \>  \>  \> return new ArrayIntProxy(((int []) obj).length) ; \\ 
  \>  \> \} \\ 
  \>  \> {\em \ldots \ deal with other primitive array types \ldots} \\ 
  \>  \> else \\ 
  \>  \>  \> return obj \\ 
  \> \} \\ 
\} \\ 
\\ 
class ArrayInputStream extends ObjectInputStream \{ \\ 
  \> Vector dataVector ;\\ 
\\ 
  \> public Object resolveObject(Object obj) \{ \\ 
  \>  \> if(obj instanceof ArrayIntProxy) \{ \\ 
  \>  \>  \> int dat = new int [((ArrayIntProxy) obj).length] ; \\ 
  \>  \>  \> dataVector.addElement(dat) \\ 
  \>  \>  \> return dat ; \\ 
  \>  \> \} \\ 
  \>  \> {\em \ldots \ deal with other array proxy types \ldots} \\ 
  \>  \> else \\ 
  \>  \>  \> return obj \\ 
  \> \} \\ 
\}
\end{tabbing}
\end{minipage}
}

\end{figure*}
}

{\newpage
\clearpage
\samepage \begin{figure*}[tp]
\centerline{\psfig{figure=nonsh_byte_opt1.eps,width=2.4in}
            \psfig{figure=sh_byte_opt1.eps,width=2.4in}}
\centerline{\psfig{figure=nonsh_float_opt1.eps,width=2.4in}
            \psfig{figure=sh_float_opt1.eps,width=2.4in}}

\end{figure*}
}

{\newpage
\clearpage
\samepage \begin{figure*}[tp]
\centerline{\psfig{figure=nonsh_byte_opt2.eps,width=2.4in}
            \psfig{figure=sh_byte_opt2.eps,width=2.4in}}
\centerline{\psfig{figure=nonsh_float_opt2.eps,width=2.4in}
            \psfig{figure=sh_float_opt2.eps,width=2.4in}}

\end{figure*}
}

\stepcounter{section}
\stepcounter{section}

\end{document}
