File: dataStructure.tex

package info (click to toggle)
spooles 2.2-16
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 19,760 kB
  • sloc: ansic: 146,836; sh: 7,571; csh: 3,615; makefile: 1,970; perl: 74
file content (111 lines) | stat: -rw-r--r-- 4,813 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
\par
\section{Data Structures}
\label{section:GPart:dataStructure}
\par
The {\tt GPart} structure has a pointer to a {\tt Graph} object
and other fields that contain information about the partition
of the graph.
\par
The following fields are always active.
\begin{itemize}
\item 
{\tt Graph *graph} : pointer to the {\tt Graph} object
\item 
{\tt int nvtx} : number of internal vertices of the graph
\item 
{\tt int nvbnd} : number of boundary vertices of the graph
\item 
{\tt int ncomp} : number of components in the graph
\item 
{\tt IV compidsIV} : an {\tt IV} object that holds the component
ids of the internal vertices --- {\tt compids[v] == 0}
means that the vertex is in the separator or multisector.
\item 
{\tt IV cweightsIV} : an {\tt IV} object that holds the component
weights --- {\tt cweights[icomp]} stores the weight 
of component {\tt icomp}, {\tt cweights[0]} is the separator 
or multisector weight.
\item
{\tt int msglvl} : message level parameter. 
When {\tt msglvl = 0}, no output is produced.
When {\tt msglvl = 1}, only ``scalar'' output is provided,
no vectors are printed or any print statements in a loop.
When {\tt msglvl > 1}, beware, there can be a fair amount of output.
\item
{\tt FILE *msgFile} 
: message file pointer, default value is {\tt stdout}.
\end{itemize}
The following fields are used when building a domain/separator tree
during the recursive dissection process.
\begin{itemize}
\item {\tt int id}  : id of the partition object
\item {\tt GPart *par} : pointer to a parent {\tt GPart} object
\item {\tt GPart *fch} : pointer to a first child {\tt GPart} object
\item {\tt GPart *sib} : pointer to a sibling {\tt GPart} object
\item {\tt IV vtxMapIV} : an {\tt IV} object of size
      {\tt nvtx + nvbnd}, contains a map from the vertices of the graph 
      to either the vertices of its parent or to the vertices 
      of the root graph 
\end{itemize}
\par
The {\tt DDsepInfo} {\it helper}-object is used during the {\tt DDSEP}
recursive bisection process.
It contains input parameters for the different stages of the {\tt
DDSEP} algorithm, and collects statistics about the CPU time spent
in each stage.
\par
\begin{itemize}
\item These parameters are used to generate the domain decomposition.
   \begin{itemize}
   \item {\tt int minweight}: minimum target weight for a domain
   \item {\tt int maxweight}: maximum target weight for a domain
   \item {\tt double freeze}: multiplier used to freeze vertices of high
         degree into the multisector. If the degree of {\tt v} is more
         than {\tt freeze} times the median degree, {\tt v} is placed 
         into the multisector.
   \item {\tt int seed}: random number seed
   \item {\tt int DDoption}: If {\tt 1}, a new domain decomposition is
         constructed for each subgraph. If {\tt 2}, a domain
         decomposition is constructed for the original graph,
         and its projection onto a subgraph is used to define the
         domain decomposition on the subgraph.
   \end{itemize}
\item These parameters are used to find the initial and final bisectors.
   \begin{itemize}
   \item {\tt double alpha}: cost function parameter
   \item {\tt int seed}: random number seed
   \item {\tt int nlayer}: number of layers to use to form a wide
         separator $Y$ from a 2-set partition $[S,B,W]$.
         If {\tt nlayer = 1} or {\tt 2}, 
         $Y = S \cup (Adj(S) \cap B)$
         or $Y = S \cup (Adj(S) \cap W)$.
         When {\tt nlayer = 1} the network is forced to be bipartite.
         If {\tt nlayer = 3}, $Y_3 = S \cup Adj(S)$,
         and for {\tt nlayer = 2k+1},
         $Y_{2k+1} = Y_{2k-1} \cup Adj(Y_{2k-1})$.
   \end{itemize}
\item These parameters accumulate CPU times.
   \begin{itemize}
   \item {\tt double cpuDD}: time to construct the domain decompositions
   \item {\tt double cpuMap}: time to construct the maps from vertices
         to domains and segments
   \item {\tt double cpuBPG}: time to construct the domain/segment
         bipartite graphs
   \item {\tt double cpuBKL}: time to find the initial separators via the
         Block Kernighan-Lin algorithm on the domain/segment graphs
   \item {\tt double cpuSmooth}: time to smooth the bisectors 
   \item {\tt double cpuSplit}: time to split the subgraphs
   \item {\tt double cpuTotal}: total cpu time
   \end{itemize}
\item Miscellaneous parameters.
   \begin{itemize}
   \item {\tt int maxcompweight}: 
         an attempt is made to split any subgraph 
         that has weight greater than {\tt maxcompweight}.
   \item {\tt int ntreeobj}: number of tree objects in the tree, used
         to set {\tt gpart->id} and used to initialize the {\tt DSTree}
         object.
   \item {\tt int msglvl} : message level
   \item {\tt FILE *msgFile} : message file pointer
   \end{itemize}
\end{itemize}