diff options
author | allen <allen@b61c5cb5-eaca-4651-9a7a-d64986f99364> | 2001-07-10 09:16:24 +0000 |
---|---|---|
committer | allen <allen@b61c5cb5-eaca-4651-9a7a-d64986f99364> | 2001-07-10 09:16:24 +0000 |
commit | 2842fdbb75b6d85bf89aa9b01214c28b1a72b9db (patch) | |
tree | 4a3e3f48b0817aedbf15599cb3f9862f4cc90504 /doc | |
parent | 12feb3e7ffb60bbd561ff628ed92c1abc7868736 (diff) |
Initial doc for PUGH.
Still need to add details about processor decomposition, and the default load distribution wrt
ghostzones, periodicity and that.
git-svn-id: http://svn.cactuscode.org/arrangements/CactusPUGH/PUGH/trunk@339 b61c5cb5-eaca-4651-9a7a-d64986f99364
Diffstat (limited to 'doc')
-rw-r--r-- | doc/documentation.tex | 233 | ||||
-rw-r--r-- | doc/periodic.eps | 277 | ||||
-rw-r--r-- | doc/periodic.fig | 109 |
3 files changed, 619 insertions, 0 deletions
diff --git a/doc/documentation.tex b/doc/documentation.tex new file mode 100644 index 0000000..ac5251f --- /dev/null +++ b/doc/documentation.tex @@ -0,0 +1,233 @@ +\documentclass{article} + +\usepackage{fancyhdr,ifthen,calc} + +\newif\ifpdf +\ifx\pdfoutput\undefined +\pdffalse % we are not running PDFLaTeX +\else +\pdfoutput=1 % we are running PDFLaTeX +\pdftrue +\fi + +\ifpdf +\usepackage[pdftex]{graphicx} +\else +\usepackage{graphicx} +\fi + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% MANPAGE like description setting for options, use as +% \begin{Lentry} \item[text] text \end{Lentry} + +\newcommand{\entrylabel}[1]{\mbox{\textsf{#1}}\hfil} +\newenvironment{entry} + {\begin{list}{} + {\renewcommand{\makelabel}{\entrylabel} + \setlength{\labelwidth}{90pt} + \setlength{\leftmargin}{\labelwidth+\labelsep} + } + } + {\end{list}} + +\newlength{\Mylen} +\newcommand{\Lentrylabel}[1]{% + \settowidth{\Mylen}{\textsf{#1}}% + \ifthenelse{\lengthtest{\Mylen > \labelwidth}}% + {\parbox[b]{\labelwidth} % term > labelwidth + {\makebox[0pt][l]{\textsf{#1}}\\}} % + {\textsf{#1}} % + + \hfil\relax} +\newenvironment{Lentry} + {\renewcommand{\entrylabel}{\Lentrylabel} + \begin{entry}} + {\end{entry}} +%%%%%% + +\begin{document} + +\title{PUGH} +\author{Gabrielle Allen} +\date{2001} +\maketitle + +\abstract{The default unigrid driver for Cactus for both multiprocessor and single process runs, handling grid variables and communications.} + +\section{Description} + +PUGH can create, handle and communicate grid scalars, arrays and functions +in 1, 2 or 3-dimensions. + +\section{Compilation} + +PUGH can be compiled with or without MPI. Compiling without MPI results +in an executable which can only be used on a single processor, compiling +with MPI leads to an executable which can be used with either single or +multiple processors. + +For configuring with MPI, see the Cactus User's Guide. + +\section{Grid Size} + +The number of grid points used for a simulation can be set in PUGH either +globally (that is, the total number of points across all processors), or +locally (that is, the number of points on each processor). + +To set the global size of a 2D grid to be $40\times 40$ use + +{\tt +\begin{verbatim} +driver::global_nx = 40 +driver::global_ny = 40 +\end{verbatim} +} + +To set the local size of a 2D grid to be $40\times 20$ on each processor, use + +{\tt +\begin{verbatim} +pugh::local_nx = 40 +pugh::local_ny = 20 +\end{verbatim} +} + + + +\section{Periodic Boundary Conditions} + +PUGH can implement periodic boundary conditions during the synchronization +of grid functions. Although this may a first seem a little confusing, and +unlike the usual use of boundary conditions which are directly called from +evolution routines, it is the most efficient and natural place for periodic +boundary conditions. + +PUGH applied periodic conditions by simply communicating the appropriate +ghostzones between "end" processors. For example, for a 1D domain with two +ghostzones, split across two processors, Figure~\ref{pugh::fig1} shows the implementation of periodic boundary conditions. + +\begin{figure}[ht] +\begin{center} +\ifpdf +\else +\includegraphics[angle=0,width=8cm]{periodic.eps} +\fi +\end{center} +\caption[]{Implementation of periodic boundary conditions for a 1D domain, with two ghostzones, split across two processors. The lines labelled {\bf A} show the {\it standard} communications during synchronisation, the lines labelled +{\bf B} show the additional communications for periodic boundary conditions.} +\label{pugh::fig1} +\end{figure} + +Periodic boundary conditions are applied to all grid functions, by default +they are applied in all directions, although this behaviour can be customised +to switch them off in given directions. + +By default, no periodic boundary conditions are applied. To apply periodic boundary conditions in all directions, set + +{\tt +\begin{verbatim} +driver::periodic = "yes" +\end{verbatim} +} + +To apply periodic boundary conditions in just the x- and y- directions or +a 3 dimension domain, use + +{\tt +\begin{verbatim} +driver::periodic = "yes" +driver::periodic_z = "no" +\end{verbatim} +} + +\section{Processor Decomposition} + +\section{Load Balancing} + +By default PUGH will distribute the computational grid evenly across +all processors. This may not be efficient if there is a different +computational load on different processors, or for example for a simulation +distributed across different processor speeds. + +The computational grid can be manually distributed using the parameters +{\tt partition[\_1d\_x|\_2d\_x|\_2d\_y|\_3d\_x|\_3d\_y|\_3d\_z]}. To manual specify the +load distribution, set {\tt pugh::partition = ``manual''} and then, +depending on the grid dimension, set the remaining parameters +to distribute the load in each direction. Note that for this you need +to know apriori the processor decomposition. + +The decomposition is easiest to explain with an example, +to distribute a grid with $30 \times 30$ points across +4 processors (decomposed as $2 \times 2$) as: + +\begin{tabular}{cc} +$20\times 15$ & $10 \times 15$ \\ +$20\times 15$ & $10 \times 15$ +\end{tabular} + +use the parameters + +{\tt +\begin{verbatim} +pugh::partition=''manual'' +pugh::partition_2d_x=''20:10'' +pugh::partition_2d_y=''15:15'' +\end{verbatim} +} + + +Note that an empty string for a direction will apply the automatic distribution. + +\section{Useful Parameters} + +There are several parameters in PUGH which are useful for debugging and +optimisation: + +\begin{Lentry} + +\item[{\tt pugh::enable\_all\_storage}] + + Enables storage for all grid variables (that is, not only + those set in a thorns {\tt schedule.ccl} file). Try this parameter + if you are getting segmentation faults, if enabling all storage + removes the problem, it most likely means that you are accessing + a grid variable (probably in a Fortran thorn) for which storage + has not been set. + +\item[{\tt pugh::initialise\_memory}] + + By default, when PUGH allocates storage for a grid variable it + does not initialise its elements. If you access an + uninitialised variable on some platforms you will get a + segmentation fault (and in general you will see erratic + behaviour). This parameter can be used to initialise all + elements to zero, if this removes your segmentation fault you + can then track down the cause of the problem by using the same + parameter to initialize all elements to NaNs and then track + them with the thorn {\tt CactusUtils/NaNChecker}. + + Note that it isn't recommended to simply use this parameter to + initialise all elements to zero, instead we recommend you to + set all variables to their correct values before using them. + +\item[{\tt pugh::storage\_verbose}] + + This parameter can be set to print out the number of grid variables + which have storage allocated at each iteration, and the total + size of the storage allocated by Cactus. Note that this total + does not include storage allocated independently in thorns. + +\item[{\tt timer\_output}] + + This parameter can be set to provide the time spent communicating + variables between processors. + +\end{Lentry} + + +% Automatically created from the ccl files by using gmake thorndoc +\include{interface} +\include{param} +\include{schedule} + +\end{document} diff --git a/doc/periodic.eps b/doc/periodic.eps new file mode 100644 index 0000000..50d7941 --- /dev/null +++ b/doc/periodic.eps @@ -0,0 +1,277 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: periodic.eps +%%Creator: fig2dev Version 3.2.3 Patchlevel +%%CreationDate: Tue Jul 10 10:10:56 2001 +%%For: allen@gullveig.aei.mpg.de (Gab) +%%BoundingBox: 0 0 412 242 +%%Magnification: 1.0000 +%%EndComments +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/col-1 {0 setgray} bind def +/col0 {0.000 0.000 0.000 srgb} bind def +/col1 {0.000 0.000 1.000 srgb} bind def +/col2 {0.000 1.000 0.000 srgb} bind def +/col3 {0.000 1.000 1.000 srgb} bind def +/col4 {1.000 0.000 0.000 srgb} bind def +/col5 {1.000 0.000 1.000 srgb} bind def +/col6 {1.000 1.000 0.000 srgb} bind def +/col7 {1.000 1.000 1.000 srgb} bind def +/col8 {0.000 0.000 0.560 srgb} bind def +/col9 {0.000 0.000 0.690 srgb} bind def +/col10 {0.000 0.000 0.820 srgb} bind def +/col11 {0.530 0.810 1.000 srgb} bind def +/col12 {0.000 0.560 0.000 srgb} bind def +/col13 {0.000 0.690 0.000 srgb} bind def +/col14 {0.000 0.820 0.000 srgb} bind def +/col15 {0.000 0.560 0.560 srgb} bind def +/col16 {0.000 0.690 0.690 srgb} bind def +/col17 {0.000 0.820 0.820 srgb} bind def +/col18 {0.560 0.000 0.000 srgb} bind def +/col19 {0.690 0.000 0.000 srgb} bind def +/col20 {0.820 0.000 0.000 srgb} bind def +/col21 {0.560 0.000 0.560 srgb} bind def +/col22 {0.690 0.000 0.690 srgb} bind def +/col23 {0.820 0.000 0.820 srgb} bind def +/col24 {0.500 0.190 0.000 srgb} bind def +/col25 {0.630 0.250 0.000 srgb} bind def +/col26 {0.750 0.380 0.000 srgb} bind def +/col27 {1.000 0.500 0.500 srgb} bind def +/col28 {1.000 0.630 0.630 srgb} bind def +/col29 {1.000 0.750 0.750 srgb} bind def +/col30 {1.000 0.880 0.880 srgb} bind def +/col31 {1.000 0.840 0.000 srgb} bind def + +end +save +newpath 0 242 moveto 0 0 lineto 412 0 lineto 412 242 lineto closepath clip newpath +% Fill background color +0 0 moveto 412 0 lineto 412 242 lineto 0 242 lineto +closepath 1.00 1.00 1.00 setrgbcolor fill + +-55.0 429.0 translate +1 -1 scale + +/cp {closepath} bind def +/ef {eofill} bind def +/gr {grestore} bind def +/gs {gsave} bind def +/sa {save} bind def +/rs {restore} bind def +/l {lineto} bind def +/m {moveto} bind def +/rm {rmoveto} bind def +/n {newpath} bind def +/s {stroke} bind def +/sh {show} bind def +/slc {setlinecap} bind def +/slj {setlinejoin} bind def +/slw {setlinewidth} bind def +/srgb {setrgbcolor} bind def +/rot {rotate} bind def +/sc {scale} bind def +/sd {setdash} bind def +/ff {findfont} bind def +/sf {setfont} bind def +/scf {scalefont} bind def +/sw {stringwidth} bind def +/tr {translate} bind def +/tnt {dup dup currentrgbcolor + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} + bind def +/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul + 4 -2 roll mul srgb} bind def + /DrawEllipse { + /endangle exch def + /startangle exch def + /yrad exch def + /xrad exch def + /y exch def + /x exch def + /savematrix mtrx currentmatrix def + x y tr xrad yrad sc 0 0 1 startangle endangle arc + closepath + savematrix setmatrix + } def + +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def + +$F2psBegin +%%Page: 1 1 +10 setmiterlimit + 0.06000 0.06000 sc +% Polyline +30.000 slw +n 1125 5025 m + 1275 5175 l gs col0 s gr +% Polyline +n 1125 5175 m + 1275 5025 l gs col0 s gr +% Polyline +n 1425 5025 m + 1575 5175 l gs col0 s gr +% Polyline +n 1425 5175 m + 1575 5025 l gs col0 s gr +% Polyline +n 3825 5025 m + 3975 5175 l gs col0 s gr +% Polyline +n 3825 5175 m + 3975 5025 l gs col0 s gr +% Polyline +n 3525 5025 m + 3675 5175 l gs col0 s gr +% Polyline +n 3525 5175 m + 3675 5025 l gs col0 s gr +% Polyline +n 1125 5025 m + 1275 5175 l gs col0 s gr +% Polyline +n 1125 5175 m + 1275 5025 l gs col0 s gr +% Polyline +7.500 slw +n 1200 5100 m + 3900 5100 l gs col0 s gr +% Ellipse +n 1800 5100 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr + +% Ellipse +n 2100 5100 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr + +% Ellipse +n 2400 5100 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr + +% Ellipse +n 2700 5100 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr + +% Ellipse +n 3000 5100 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr + +% Ellipse +n 3300 5100 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr + +% Polyline +30.000 slw +n 4725 5025 m + 4875 5175 l gs col0 s gr +% Polyline +n 4725 5175 m + 4875 5025 l gs col0 s gr +% Polyline +n 5025 5025 m + 5175 5175 l gs col0 s gr +% Polyline +n 5025 5175 m + 5175 5025 l gs col0 s gr +% Polyline +n 7425 5025 m + 7575 5175 l gs col0 s gr +% Polyline +n 7425 5175 m + 7575 5025 l gs col0 s gr +% Polyline +n 7125 5025 m + 7275 5175 l gs col0 s gr +% Polyline +n 7125 5175 m + 7275 5025 l gs col0 s gr +% Polyline +n 4725 5025 m + 4875 5175 l gs col0 s gr +% Polyline +n 4725 5175 m + 4875 5025 l gs col0 s gr +% Polyline +7.500 slw +n 4800 5100 m + 7500 5100 l gs col0 s gr +% Ellipse +n 5400 5100 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr + +% Ellipse +n 5700 5100 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr + +% Ellipse +n 6000 5100 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr + +% Ellipse +n 6300 5100 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr + +% Ellipse +n 6600 5100 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr + +% Ellipse +n 6900 5100 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr + +% Arc +gs clippath +3716 4800 m 3770 4826 l 3869 4616 l 3791 4712 l 3814 4590 l cp +eoclip +n 4650.0 5156.2 967.9 -158.4 -21.6 arc +gs col0 s gr + gr + +% arrowhead +45.000 slw +n 3814 4590 m 3791 4712 l 3869 4616 l 3814 4590 l cp gs 0.00 setgray ef gr col0 s +% Arc +7.500 slw +gs clippath +4983 5399 m 4929 5373 l 4830 5583 l 4909 5488 l 4885 5609 l cp +eoclip +n 4050.0 5043.8 967.9 21.6 158.4 arc +gs col0 s gr + gr + +% arrowhead +45.000 slw +n 4885 5609 m 4909 5488 l 4830 5583 l 4885 5609 l cp gs 0.00 setgray ef gr col0 s +% Polyline +7.500 slw +gs clippath +1320 4815 m 1380 4815 l 1380 4583 l 1350 4703 l 1320 4583 l cp +eoclip +n 1350 4800 m 1350 3600 l 6750 3600 l + 6750 4800 l gs col0 s gr gr + +% arrowhead +45.000 slw +n 1320 4583 m 1350 4703 l 1380 4583 l 1320 4583 l cp gs 0.00 setgray ef gr col0 s +% Polyline +7.500 slw +gs clippath +7380 5385 m 7320 5385 l 7320 5617 l 7350 5497 l 7380 5617 l cp +eoclip +n 7350 5400 m 7350 6600 l 1950 6600 l + 1950 5400 l gs col0 s gr gr + +% arrowhead +45.000 slw +n 7380 5617 m 7350 5497 l 7320 5617 l 7380 5617 l cp gs 0.00 setgray ef gr col0 s +/Times-Bold ff 180.00 scf sf +2025 4725 m +gs 1 -1 sc (PROCESSOR 0) col0 sh gr +/Times-Bold ff 180.00 scf sf +5475 5625 m +gs 1 -1 sc (PROCESSOR 1) col0 sh gr +/Times-Bold ff 240.00 scf sf +4050 3450 m +gs 1 -1 sc (B) col0 sh gr +/Times-Bold ff 240.00 scf sf +4575 6975 m +gs 1 -1 sc (B) col0 sh gr +/Times-Bold ff 240.00 scf sf +5400 4350 m +gs 1 -1 sc (A) col0 sh gr +/Times-Bold ff 240.00 scf sf +3150 5925 m +gs 1 -1 sc (A) col0 sh gr +$F2psEnd +rs diff --git a/doc/periodic.fig b/doc/periodic.fig new file mode 100644 index 0000000..f3b18f4 --- /dev/null +++ b/doc/periodic.fig @@ -0,0 +1,109 @@ +#FIG 3.2 +Landscape +Center +Inches +Letter +100.00 +Single +-2 +1200 2 +5 1 0 1 0 7 50 0 -1 0.000 0 0 0 1 4650.000 5156.250 3750 4800 4800 4200 5550 4800 + 1 1 4.00 60.00 120.00 +5 1 0 1 0 7 50 0 -1 0.000 0 0 0 1 4050.000 5043.750 4950 5400 3900 6000 3150 5400 + 1 1 4.00 60.00 120.00 +6 975 4875 4125 5325 +6 975 4875 4125 5325 +6 975 4875 1425 5325 +2 1 0 3 0 7 50 0 -1 0.000 0 0 -1 0 0 2 + 1125 5025 1275 5175 +2 1 0 3 0 7 50 0 -1 0.000 0 0 -1 0 0 2 + 1125 5175 1275 5025 +-6 +6 1275 4875 1725 5325 +2 1 0 3 0 7 50 0 -1 0.000 0 0 -1 0 0 2 + 1425 5025 1575 5175 +2 1 0 3 0 7 50 0 -1 0.000 0 0 -1 0 0 2 + 1425 5175 1575 5025 +-6 +6 3675 4875 4125 5325 +2 1 0 3 0 7 50 0 -1 0.000 0 0 -1 0 0 2 + 3825 5025 3975 5175 +2 1 0 3 0 7 50 0 -1 0.000 0 0 -1 0 0 2 + 3825 5175 3975 5025 +-6 +6 3375 4875 3825 5325 +2 1 0 3 0 7 50 0 -1 0.000 0 0 -1 0 0 2 + 3525 5025 3675 5175 +2 1 0 3 0 7 50 0 -1 0.000 0 0 -1 0 0 2 + 3525 5175 3675 5025 +-6 +6 975 4875 1425 5325 +2 1 0 3 0 7 50 0 -1 0.000 0 0 -1 0 0 2 + 1125 5025 1275 5175 +2 1 0 3 0 7 50 0 -1 0.000 0 0 -1 0 0 2 + 1125 5175 1275 5025 +-6 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 + 1200 5100 3900 5100 +-6 +1 3 0 1 0 0 50 0 20 0.000 1 0.0000 1800 5100 75 75 1800 5100 1875 5100 +1 3 0 1 0 0 50 0 20 0.000 1 0.0000 2100 5100 75 75 2100 5100 2175 5100 +1 3 0 1 0 0 50 0 20 0.000 1 0.0000 2400 5100 75 75 2400 5100 2475 5100 +1 3 0 1 0 0 50 0 20 0.000 1 0.0000 2700 5100 75 75 2700 5100 2775 5100 +1 3 0 1 0 0 50 0 20 0.000 1 0.0000 3000 5100 75 75 3000 5100 3075 5100 +1 3 0 1 0 0 50 0 20 0.000 1 0.0000 3300 5100 75 75 3300 5100 3375 5100 +-6 +6 4575 4875 7725 5325 +6 4575 4875 7725 5325 +6 4575 4875 5025 5325 +2 1 0 3 0 7 50 0 -1 0.000 0 0 -1 0 0 2 + 4725 5025 4875 5175 +2 1 0 3 0 7 50 0 -1 0.000 0 0 -1 0 0 2 + 4725 5175 4875 5025 +-6 +6 4875 4875 5325 5325 +2 1 0 3 0 7 50 0 -1 0.000 0 0 -1 0 0 2 + 5025 5025 5175 5175 +2 1 0 3 0 7 50 0 -1 0.000 0 0 -1 0 0 2 + 5025 5175 5175 5025 +-6 +6 7275 4875 7725 5325 +2 1 0 3 0 7 50 0 -1 0.000 0 0 -1 0 0 2 + 7425 5025 7575 5175 +2 1 0 3 0 7 50 0 -1 0.000 0 0 -1 0 0 2 + 7425 5175 7575 5025 +-6 +6 6975 4875 7425 5325 +2 1 0 3 0 7 50 0 -1 0.000 0 0 -1 0 0 2 + 7125 5025 7275 5175 +2 1 0 3 0 7 50 0 -1 0.000 0 0 -1 0 0 2 + 7125 5175 7275 5025 +-6 +6 4575 4875 5025 5325 +2 1 0 3 0 7 50 0 -1 0.000 0 0 -1 0 0 2 + 4725 5025 4875 5175 +2 1 0 3 0 7 50 0 -1 0.000 0 0 -1 0 0 2 + 4725 5175 4875 5025 +-6 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 + 4800 5100 7500 5100 +-6 +1 3 0 1 0 0 50 0 20 0.000 1 0.0000 5400 5100 75 75 5400 5100 5475 5100 +1 3 0 1 0 0 50 0 20 0.000 1 0.0000 5700 5100 75 75 5700 5100 5775 5100 +1 3 0 1 0 0 50 0 20 0.000 1 0.0000 6000 5100 75 75 6000 5100 6075 5100 +1 3 0 1 0 0 50 0 20 0.000 1 0.0000 6300 5100 75 75 6300 5100 6375 5100 +1 3 0 1 0 0 50 0 20 0.000 1 0.0000 6600 5100 75 75 6600 5100 6675 5100 +1 3 0 1 0 0 50 0 20 0.000 1 0.0000 6900 5100 75 75 6900 5100 6975 5100 +-6 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 1 4 + 1 1 4.00 60.00 120.00 + 1350 4800 1350 3600 6750 3600 6750 4800 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 1 4 + 1 1 4.00 60.00 120.00 + 7350 5400 7350 6600 1950 6600 1950 5400 +4 0 0 50 0 2 12 0.0000 4 135 1245 2025 4725 PROCESSOR 0\001 +4 0 0 50 0 2 12 0.0000 4 135 1245 5475 5625 PROCESSOR 1\001 +4 0 0 50 0 2 16 0.0000 4 165 165 4050 3450 B\001 +4 0 0 50 0 2 16 0.0000 4 165 165 4575 6975 B\001 +4 0 0 50 0 2 16 0.0000 4 165 165 5400 4350 A\001 +4 0 0 50 0 2 16 0.0000 4 165 165 3150 5925 A\001 |