Hitmap 1.3
 All Data Structures Namespaces Files Functions Variables Typedefs Friends Macros Groups Pages
proto.h
Go to the documentation of this file.
1 /*
2  * Copyright 1997, Regents of the University of Minnesota
3  *
4  * proto.h
5  *
6  * This file contains header files
7  *
8  * Started 10/19/95
9  * George
10  *
11  * $Id: proto.h,v 1.1 1998/11/27 17:59:28 karypis Exp $
12  *
13  */
14 
15 /* balance.c */
16 void Balance2Way(CtrlType *, GraphType *, int *, float);
17 void Bnd2WayBalance(CtrlType *, GraphType *, int *);
18 void General2WayBalance(CtrlType *, GraphType *, int *);
19 
20 /* bucketsort.c */
21 void BucketSortKeysInc(int, int, idxtype *, idxtype *, idxtype *);
22 
23 /* ccgraph.c */
24 void CreateCoarseGraph(CtrlType *, GraphType *, int, idxtype *, idxtype *);
28 void ReAdjustMemory(GraphType *, GraphType *, int);
29 
30 /* coarsen.c */
32 
33 /* compress.c */
34 void CompressGraph(CtrlType *, GraphType *, int, idxtype *, idxtype *, idxtype *, idxtype *);
35 void PruneGraph(CtrlType *, GraphType *, int, idxtype *, idxtype *, idxtype *, float);
36 
37 /* debug.c */
38 int ComputeCut(GraphType *, idxtype *);
39 int CheckBnd(GraphType *);
40 int CheckBnd2(GraphType *);
41 int CheckNodeBnd(GraphType *, int);
42 int CheckRInfo(RInfoType *);
44 int IsSeparable(GraphType *);
45 
46 /* estmem.c */
47 void METIS_EstimateMemory(int *, idxtype *, idxtype *, int *, int *, int *);
48 void EstimateCFraction(int, idxtype *, idxtype *, float *, float *);
49 int ComputeCoarseGraphSize(int, idxtype *, idxtype *, int, idxtype *, idxtype *, idxtype *);
50 
51 /* fm.c */
52 void FM_2WayEdgeRefine(CtrlType *, GraphType *, int *, int);
53 
54 /* fortran.c */
55 void Change2CNumbering(int, idxtype *, idxtype *);
56 void Change2FNumbering(int, idxtype *, idxtype *, idxtype *);
57 void Change2FNumbering2(int, idxtype *, idxtype *);
59 void ChangeMesh2CNumbering(int, idxtype *);
60 void ChangeMesh2FNumbering(int, idxtype *, int, idxtype *, idxtype *);
61 void ChangeMesh2FNumbering2(int, idxtype *, int, int, idxtype *, idxtype *);
62 
63 /* frename.c */
64 void METIS_PARTGRAPHRECURSIVE(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
65 void metis_partgraphrecursive(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
66 void metis_partgraphrecursive_(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
67 void metis_partgraphrecursive__(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
68 void METIS_WPARTGRAPHRECURSIVE(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
69 void metis_wpartgraphrecursive(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
70 void metis_wpartgraphrecursive_(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
71 void metis_wpartgraphrecursive__(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
72 void METIS_PARTGRAPHKWAY(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
73 void metis_partgraphkway(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
74 void metis_partgraphkway_(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
75 void metis_partgraphkway__(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
76 void METIS_WPARTGRAPHKWAY(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
77 void metis_wpartgraphkway(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
78 void metis_wpartgraphkway_(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
79 void metis_wpartgraphkway__(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
80 void METIS_EDGEND(int *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *);
81 void metis_edgend(int *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *);
82 void metis_edgend_(int *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *);
83 void metis_edgend__(int *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *);
84 void METIS_NODEND(int *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *);
85 void metis_nodend(int *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *);
86 void metis_nodend_(int *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *);
87 void metis_nodend__(int *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *);
88 void METIS_NODEWND(int *, idxtype *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *);
89 void metis_nodewnd(int *, idxtype *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *);
90 void metis_nodewnd_(int *, idxtype *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *);
91 void metis_nodewnd__(int *, idxtype *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *);
92 void METIS_PARTMESHNODAL(int *, int *, idxtype *, int *, int *, int *, int *, idxtype *, idxtype *);
93 void metis_partmeshnodal(int *, int *, idxtype *, int *, int *, int *, int *, idxtype *, idxtype *);
94 void metis_partmeshnodal_(int *, int *, idxtype *, int *, int *, int *, int *, idxtype *, idxtype *);
95 void metis_partmeshnodal__(int *, int *, idxtype *, int *, int *, int *, int *, idxtype *, idxtype *);
96 void METIS_PARTMESHDUAL(int *, int *, idxtype *, int *, int *, int *, int *, idxtype *, idxtype *);
97 void metis_partmeshdual(int *, int *, idxtype *, int *, int *, int *, int *, idxtype *, idxtype *);
98 void metis_partmeshdual_(int *, int *, idxtype *, int *, int *, int *, int *, idxtype *, idxtype *);
99 void metis_partmeshdual__(int *, int *, idxtype *, int *, int *, int *, int *, idxtype *, idxtype *);
100 void METIS_MESHTONODAL(int *, int *, idxtype *, int *, int *, idxtype *, idxtype *);
101 void metis_meshtonodal(int *, int *, idxtype *, int *, int *, idxtype *, idxtype *);
102 void metis_meshtonodal_(int *, int *, idxtype *, int *, int *, idxtype *, idxtype *);
103 void metis_meshtonodal__(int *, int *, idxtype *, int *, int *, idxtype *, idxtype *);
104 void METIS_MESHTODUAL(int *, int *, idxtype *, int *, int *, idxtype *, idxtype *);
105 void metis_meshtodual(int *, int *, idxtype *, int *, int *, idxtype *, idxtype *);
106 void metis_meshtodual_(int *, int *, idxtype *, int *, int *, idxtype *, idxtype *);
107 void metis_meshtodual__(int *, int *, idxtype *, int *, int *, idxtype *, idxtype *);
108 void METIS_ESTIMATEMEMORY(int *, idxtype *, idxtype *, int *, int *, int *);
109 void metis_estimatememory(int *, idxtype *, idxtype *, int *, int *, int *);
110 void metis_estimatememory_(int *, idxtype *, idxtype *, int *, int *, int *);
111 void metis_estimatememory__(int *, idxtype *, idxtype *, int *, int *, int *);
112 void METIS_MCPARTGRAPHRECURSIVE(int *, int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
113 void metis_mcpartgraphrecursive(int *, int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
114 void metis_mcpartgraphrecursive_(int *, int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
115 void metis_mcpartgraphrecursive__(int *, int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
116 void METIS_MCPARTGRAPHKWAY(int *, int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
117 void metis_mcpartgraphkway(int *, int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
118 void metis_mcpartgraphkway_(int *, int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
119 void metis_mcpartgraphkway__(int *, int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
120 void METIS_PARTGRAPHVKWAY(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
121 void metis_partgraphvkway(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
122 void metis_partgraphvkway_(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
123 void metis_partgraphvkway__(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
124 void METIS_WPARTGRAPHVKWAY(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
125 void metis_wpartgraphvkway(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
126 void metis_wpartgraphvkway_(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
127 void metis_wpartgraphvkway__(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
128 
129 /* graph.c */
130 void SetUpGraph(GraphType *, int, int, int, idxtype *, idxtype *, idxtype *, idxtype *, int);
131 void SetUpGraphKway(GraphType *, int, idxtype *, idxtype *);
132 void SetUpGraph2(GraphType *, int, int, idxtype *, idxtype *, float *, idxtype *);
133 void VolSetUpGraph(GraphType *, int, int, int, idxtype *, idxtype *, idxtype *, idxtype *, int);
134 void RandomizeGraph(GraphType *);
135 int IsConnectedSubdomain(CtrlType *, GraphType *, int, int);
136 int IsConnected(CtrlType *, GraphType *, int);
137 int IsConnected2(GraphType *, int);
139 
140 /* initpart.c */
141 void Init2WayPartition(CtrlType *, GraphType *, int *, float);
142 void InitSeparator(CtrlType *, GraphType *, float);
143 void GrowBisection(CtrlType *, GraphType *, int *, float);
144 void GrowBisectionNode(CtrlType *, GraphType *, float);
145 void RandomBisection(CtrlType *, GraphType *, int *, float);
146 
147 /* kmetis.c */
148 void METIS_PartGraphKway(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
149 void METIS_WPartGraphKway(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
150 int MlevelKWayPartitioning(CtrlType *, GraphType *, int, idxtype *, float *, float);
151 
152 /* kvmetis.c */
153 void METIS_PartGraphVKway(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
154 void METIS_WPartGraphVKway(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
155 int MlevelVolKWayPartitioning(CtrlType *, GraphType *, int, idxtype *, float *, float);
156 
157 /* kwayfm.c */
158 void Random_KWayEdgeRefine(CtrlType *, GraphType *, int, float *, float, int, int);
159 void Greedy_KWayEdgeRefine(CtrlType *, GraphType *, int, float *, float, int);
160 void Greedy_KWayEdgeBalance(CtrlType *, GraphType *, int, float *, float, int);
161 
162 /* kwayrefine.c */
163 void RefineKWay(CtrlType *, GraphType *, GraphType *, int, float *, float);
166 void ProjectKWayPartition(CtrlType *, GraphType *, int);
167 int IsBalanced(idxtype *, int, float *, float);
168 void ComputeKWayBoundary(CtrlType *, GraphType *, int);
170 
171 /* kwayvolfm.c */
172 void Random_KWayVolRefine(CtrlType *, GraphType *, int, float *, float, int, int);
173 void Random_KWayVolRefineMConn(CtrlType *, GraphType *, int, float *, float, int, int);
174 void Greedy_KWayVolBalance(CtrlType *, GraphType *, int, float *, float, int);
175 void Greedy_KWayVolBalanceMConn(CtrlType *, GraphType *, int, float *, float, int);
176 void KWayVolUpdate(CtrlType *, GraphType *, int, int, int, idxtype *, idxtype *, idxtype *);
177 void ComputeKWayVolume(GraphType *, int, idxtype *, idxtype *, idxtype *);
181 void EliminateVolSubDomainEdges(CtrlType *, GraphType *, int, float *);
182 void EliminateVolComponents(CtrlType *, GraphType *, int, float *, float);
183 
184 /* kwayvolrefine.c */
185 void RefineVolKWay(CtrlType *, GraphType *, GraphType *, int, float *, float);
188 void ComputeKWayVolGains(CtrlType *, GraphType *, int);
192 
193 /* match.c */
194 void Match_RM(CtrlType *, GraphType *);
195 void Match_RM_NVW(CtrlType *, GraphType *);
196 void Match_HEM(CtrlType *, GraphType *);
197 void Match_SHEM(CtrlType *, GraphType *);
198 
199 /* mbalance.c */
200 void MocBalance2Way(CtrlType *, GraphType *, float *, float);
201 void MocGeneral2WayBalance(CtrlType *, GraphType *, float *, float);
202 
203 /* mbalance2.c */
204 void MocBalance2Way2(CtrlType *, GraphType *, float *, float *);
205 void MocGeneral2WayBalance2(CtrlType *, GraphType *, float *, float *);
206 void SelectQueue3(int, float *, float *, int *, int *, PQueueType [MAXNCON][2], float *);
207 
208 /* mcoarsen.c */
210 
211 /* memory.c */
212 void AllocateWorkSpace(CtrlType *, GraphType *, int);
213 void FreeWorkSpace(CtrlType *, GraphType *);
214 int WspaceAvail(CtrlType *);
216 void idxwspacefree(CtrlType *, int);
217 float *fwspacemalloc(CtrlType *, int);
218 void fwspacefree(CtrlType *, int);
219 GraphType *CreateGraph(void);
220 void InitGraph(GraphType *);
221 void FreeGraph(GraphType *);
222 
223 /* mesh.c */
224 void METIS_MeshToDual(int *, int *, idxtype *, int *, int *, idxtype *, idxtype *);
225 void METIS_MeshToNodal(int *, int *, idxtype *, int *, int *, idxtype *, idxtype *);
226 void GENDUALMETIS(int, int, int, idxtype *, idxtype *, idxtype *adjncy);
227 void TRINODALMETIS(int, int, idxtype *, idxtype *, idxtype *adjncy);
228 void TETNODALMETIS(int, int, idxtype *, idxtype *, idxtype *adjncy);
229 void HEXNODALMETIS(int, int, idxtype *, idxtype *, idxtype *adjncy);
230 void QUADNODALMETIS(int, int, idxtype *, idxtype *, idxtype *adjncy);
231 
232 /* meshpart.c */
233 void METIS_PartMeshNodal(int *, int *, idxtype *, int *, int *, int *, int *, idxtype *, idxtype *);
234 void METIS_PartMeshDual(int *, int *, idxtype *, int *, int *, int *, int *, idxtype *, idxtype *);
235 
236 /* mfm.c */
237 void MocFM_2WayEdgeRefine(CtrlType *, GraphType *, float *, int);
238 void SelectQueue(int, float *, float *, int *, int *, PQueueType [MAXNCON][2]);
239 int BetterBalance(int, float *, float *, float *);
240 float Compute2WayHLoadImbalance(int, float *, float *);
241 void Compute2WayHLoadImbalanceVec(int, float *, float *, float *);
242 
243 /* mfm2.c */
244 void MocFM_2WayEdgeRefine2(CtrlType *, GraphType *, float *, float *, int);
245 void SelectQueue2(int, float *, float *, int *, int *, PQueueType [MAXNCON][2], float *);
246 int IsBetter2wayBalance(int, float *, float *, float *);
247 
248 /* mincover.o */
249 void MinCover(idxtype *, idxtype *, int, int, idxtype *, int *);
250 int MinCover_Augment(idxtype *, idxtype *, int, idxtype *, idxtype *, idxtype *, int);
251 void MinCover_Decompose(idxtype *, idxtype *, int, int, idxtype *, idxtype *, int *);
252 void MinCover_ColDFS(idxtype *, idxtype *, int, idxtype *, idxtype *, int);
253 void MinCover_RowDFS(idxtype *, idxtype *, int, idxtype *, idxtype *, int);
254 
255 /* minitpart.c */
256 void MocInit2WayPartition(CtrlType *, GraphType *, float *, float);
257 void MocGrowBisection(CtrlType *, GraphType *, float *, float);
258 void MocRandomBisection(CtrlType *, GraphType *, float *, float);
259 void MocInit2WayBalance(CtrlType *, GraphType *, float *);
260 int SelectQueueoneWay(int, float *, float *, int, PQueueType [MAXNCON][2]);
261 
262 /* minitpart2.c */
263 void MocInit2WayPartition2(CtrlType *, GraphType *, float *, float *);
264 void MocGrowBisection2(CtrlType *, GraphType *, float *, float *);
265 void MocGrowBisectionNew2(CtrlType *, GraphType *, float *, float *);
266 void MocInit2WayBalance2(CtrlType *, GraphType *, float *, float *);
267 int SelectQueueOneWay2(int, float *, PQueueType [MAXNCON][2], float *);
268 
269 /* mkmetis.c */
270 void METIS_mCPartGraphKway(int *, int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
271 int MCMlevelKWayPartitioning(CtrlType *, GraphType *, int, idxtype *, float *);
272 
273 /* mkwayfmh.c */
274 void MCRandom_KWayEdgeRefineHorizontal(CtrlType *, GraphType *, int, float *, int);
275 void MCGreedy_KWayEdgeBalanceHorizontal(CtrlType *, GraphType *, int, float *, int);
276 int AreAllHVwgtsBelow(int, float, float *, float, float *, float *);
277 int AreAllHVwgtsAbove(int, float, float *, float, float *, float *);
278 void ComputeHKWayLoadImbalance(int, int, float *, float *);
279 int MocIsHBalanced(int, int, float *, float *);
280 int IsHBalanceBetterFT(int, int, float *, float *, float *, float *);
281 int IsHBalanceBetterTT(int, int, float *, float *, float *, float *);
282 
283 /* mkwayrefine.c */
284 void MocRefineKWayHorizontal(CtrlType *, GraphType *, GraphType *, int, float *);
289 
290 /* mmatch.c */
291 void MCMatch_RM(CtrlType *, GraphType *);
292 void MCMatch_HEM(CtrlType *, GraphType *);
293 void MCMatch_SHEM(CtrlType *, GraphType *);
294 void MCMatch_SHEBM(CtrlType *, GraphType *, int);
295 void MCMatch_SBHEM(CtrlType *, GraphType *, int);
296 float BetterVBalance(int, int, float *, float *, float *);
297 int AreAllVwgtsBelowFast(int, float *, float *, float);
298 
299 /* mmd.c */
300 void genmmd(int, idxtype *, idxtype *, idxtype *, idxtype *, int , idxtype *, idxtype *, idxtype *, idxtype *, int, int *);
301 void mmdelm(int, idxtype *xadj, idxtype *, idxtype *, idxtype *, idxtype *, idxtype *, idxtype *, idxtype *, int, int);
302 int mmdint(int, idxtype *xadj, idxtype *, idxtype *, idxtype *, idxtype *, idxtype *, idxtype *, idxtype *);
303 void mmdnum(int, idxtype *, idxtype *, idxtype *);
304 void mmdupd(int, int, idxtype *, idxtype *, int, int *, idxtype *, idxtype *, idxtype *, idxtype *, idxtype *, idxtype *, int, int *tag);
305 
306 /* mpmetis.c */
307 void METIS_mCPartGraphRecursive(int *, int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
308 void METIS_mCHPartGraphRecursive(int *, int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
309 void METIS_mCPartGraphRecursiveInternal(int *, int *, idxtype *, idxtype *, float *, idxtype *, int *, int *, int *, idxtype *);
310 void METIS_mCHPartGraphRecursiveInternal(int *, int *, idxtype *, idxtype *, float *, idxtype *, int *, float *, int *, int *, idxtype *);
311 int MCMlevelRecursiveBisection(CtrlType *, GraphType *, int, idxtype *, float, int);
312 int MCHMlevelRecursiveBisection(CtrlType *, GraphType *, int, idxtype *, float *, int);
313 void MCMlevelEdgeBisection(CtrlType *, GraphType *, float *, float);
314 void MCHMlevelEdgeBisection(CtrlType *, GraphType *, float *, float *);
315 
316 /* mrefine.c */
317 void MocRefine2Way(CtrlType *, GraphType *, GraphType *, float *, float);
321 
322 /* mrefine2.c */
323 void MocRefine2Way2(CtrlType *, GraphType *, GraphType *, float *, float *);
324 
325 /* mutil.c */
326 int AreAllVwgtsBelow(int, float, float *, float, float *, float);
327 int AreAnyVwgtsBelow(int, float, float *, float, float *, float);
328 int AreAllVwgtsAbove(int, float, float *, float, float *, float);
329 float ComputeLoadImbalance(int, int, float *, float *);
330 int AreAllBelow(int, float *, float *);
331 
332 /* myqsort.c */
333 void iidxsort(int, idxtype *);
334 void iintsort(int, int *);
335 void ikeysort(int, KeyValueType *);
336 void ikeyvalsort(int, KeyValueType *);
337 
338 /* ometis.c */
339 void METIS_EdgeND(int *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *);
340 void METIS_NodeND(int *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *);
341 void METIS_NodeWND(int *, idxtype *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *);
342 void MlevelNestedDissection(CtrlType *, GraphType *, idxtype *, float, int);
343 void MlevelNestedDissectionCC(CtrlType *, GraphType *, idxtype *, float, int);
344 void MlevelNodeBisectionMultiple(CtrlType *, GraphType *, int *, float);
345 void MlevelNodeBisection(CtrlType *, GraphType *, int *, float);
347 void MMDOrder(CtrlType *, GraphType *, idxtype *, int);
349 
350 /* parmetis.c */
351 void METIS_PartGraphKway2(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
352 void METIS_WPartGraphKway2(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
353 void METIS_NodeNDP(int, idxtype *, idxtype *, int, int *, idxtype *, idxtype *, idxtype *);
354 void MlevelNestedDissectionP(CtrlType *, GraphType *, idxtype *, int, int, int, idxtype *);
355 void METIS_NodeComputeSeparator(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, idxtype *);
356 void METIS_EdgeComputeSeparator(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, idxtype *);
357 
358 /* pmetis.c */
359 void METIS_PartGraphRecursive(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
360 void METIS_WPartGraphRecursive(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
361 int MlevelRecursiveBisection(CtrlType *, GraphType *, int, idxtype *, float *, float, int);
362 void MlevelEdgeBisection(CtrlType *, GraphType *, int *, float);
364 void SetUpSplitGraph(GraphType *, GraphType *, int, int);
365 
366 /* pqueue.c */
367 void PQueueInit(CtrlType *ctrl, PQueueType *, int, int);
368 void PQueueReset(PQueueType *);
369 void PQueueFree(CtrlType *ctrl, PQueueType *);
371 int PQueueInsert(PQueueType *, int, int);
372 int PQueueDelete(PQueueType *, int, int);
373 int PQueueUpdate(PQueueType *, int, int, int);
374 void PQueueUpdateUp(PQueueType *, int, int, int);
375 int PQueueGetMax(PQueueType *);
376 int PQueueSeeMax(PQueueType *);
377 int PQueueGetKey(PQueueType *);
378 int CheckHeap(PQueueType *);
379 
380 /* refine.c */
381 void Refine2Way(CtrlType *, GraphType *, GraphType *, int *, float ubfactor);
385 
386 /* separator.c */
387 void ConstructSeparator(CtrlType *, GraphType *, float);
390 
391 /* sfm.c */
392 void FM_2WayNodeRefine(CtrlType *, GraphType *, float, int);
394 void FM_2WayNodeRefine_OneSided(CtrlType *, GraphType *, float, int);
395 void FM_2WayNodeBalance(CtrlType *, GraphType *, float);
396 int ComputeMaxNodeGain(int, idxtype *, idxtype *, idxtype *);
397 
398 /* srefine.c */
399 void Refine2WayNode(CtrlType *, GraphType *, GraphType *, float);
403 
404 /* stat.c */
405 void ComputePartitionInfo(GraphType *, int, idxtype *);
407 void ComputePartitionBalance(GraphType *, int, idxtype *, float *);
408 float ComputeElementBalance(int, int, idxtype *);
409 
410 /* subdomains.c */
411 void Random_KWayEdgeRefineMConn(CtrlType *, GraphType *, int, float *, float, int, int);
412 void Greedy_KWayEdgeBalanceMConn(CtrlType *, GraphType *, int, float *, float, int);
413 void PrintSubDomainGraph(GraphType *, int, idxtype *);
415 void EliminateSubDomainEdges(CtrlType *, GraphType *, int, float *);
416 void MoveGroupMConn(CtrlType *, GraphType *, idxtype *, idxtype *, int, int, int, idxtype *);
417 void EliminateComponents(CtrlType *, GraphType *, int, float *, float);
418 void MoveGroup(CtrlType *, GraphType *, int, int, int, idxtype *, idxtype *);
419 
420 /* timing.c */
421 void InitTimers(CtrlType *);
422 void PrintTimers(CtrlType *);
423 double seconds(void);
424 
425 /* util.c */
426 void errexit(char *,...);
427 #ifndef DMALLOC
428 int *imalloc(int, char *);
429 idxtype *idxmalloc(int, char *);
430 float *fmalloc(int, char *);
431 int *ismalloc(int, int, char *);
432 idxtype *idxsmalloc(int, idxtype, char *);
433 void *GKmalloc(int, char *);
434 #endif
435 /*void GKfree(void **,...); */
436 int *iset(int n, int val, int *x);
437 idxtype *idxset(int n, idxtype val, idxtype *x);
438 float *sset(int n, float val, float *x);
439 int iamax(int, int *);
440 int idxamax(int, idxtype *);
441 int idxamax_strd(int, idxtype *, int);
442 int samax(int, float *);
443 int samax2(int, float *);
444 int idxamin(int, idxtype *);
445 int samin(int, float *);
446 int idxsum(int, idxtype *);
447 int idxsum_strd(int, idxtype *, int);
448 void idxadd(int, idxtype *, idxtype *);
449 int charsum(int, char *);
450 int isum(int, int *);
451 float ssum(int, float *);
452 float ssum_strd(int n, float *x, int);
453 void sscale(int n, float, float *x);
454 float snorm2(int, float *);
455 float sdot(int n, float *, float *);
456 void saxpy(int, float, float *, int, float *, int);
457 void RandomPermute(int, idxtype *, int);
458 double drand48();
459 void srand48(long);
460 int ispow2(int);
461 void InitRandom(int);
462 int log2_function(int);
463 
464 
465 
466 
467 
468 
469 
470 
471 
472 
473 /***************************************************************
474 * Programs Directory
475 ****************************************************************/
476 
477 /* io.c */
478 void ReadGraph(GraphType *, char *, int *);
479 void WritePartition(char *, idxtype *, int, int);
480 void WriteMeshPartition(char *, int, int, idxtype *, int, idxtype *);
481 void WritePermutation(char *, idxtype *, int);
482 int CheckGraph(GraphType *);
483 idxtype *ReadMesh(char *, int *, int *, int *);
484 void WriteGraph(char *, int, idxtype *, idxtype *);
485 
486 /* smbfactor.c */
487 void ComputeFillIn(GraphType *, idxtype *);
489 int smbfct(int, idxtype *, idxtype *, idxtype *, idxtype *, idxtype *, int *, idxtype *, idxtype *, int *);
490 
491 
492 /***************************************************************
493 * Test Directory
494 ****************************************************************/
495 void Test_PartGraph(int, idxtype *, idxtype *);
496 int VerifyPart(int, idxtype *, idxtype *, idxtype *, idxtype *, int, int, idxtype *);
497 int VerifyWPart(int, idxtype *, idxtype *, idxtype *, idxtype *, int, float *, int, idxtype *);
498 void Test_PartGraphV(int, idxtype *, idxtype *);
499 int VerifyPartV(int, idxtype *, idxtype *, idxtype *, idxtype *, int, int, idxtype *);
500 int VerifyWPartV(int, idxtype *, idxtype *, idxtype *, idxtype *, int, float *, int, idxtype *);
501 void Test_PartGraphmC(int, idxtype *, idxtype *);
502 int VerifyPartmC(int, int, idxtype *, idxtype *, idxtype *, idxtype *, int, float *, int, idxtype *);
503 void Test_ND(int, idxtype *, idxtype *);
504 int VerifyND(int, idxtype *, idxtype *);
505 
#define EliminateVolSubDomainEdges
Definition: rename.h:125
#define ComputeCoarseGraphSize
Definition: rename.h:54
#define idxwspacefree
Definition: rename.h:165
void metis_mcpartgraphkway__(int *nvtxs, int *ncon, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, int *wgtflag, int *numflag, int *nparts, float *rubvec, int *options, int *edgecut, idxtype *part)
Definition: frename.c:271
#define PQueueUpdate
Definition: rename.h:320
idxtype * ReadMesh(char *, int *, int *, int *)
void metis_partgraphvkway_(int *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *vsize, int *wgtflag, int *numflag, int *nparts, int *options, int *volume, idxtype *part)
Definition: frename.c:285
void METIS_NODEND(int *nvtxs, idxtype *xadj, idxtype *adjncy, int *numflag, int *options, idxtype *perm, idxtype *iperm)
Definition: frename.c:112
#define ComputeElementBalance
Definition: rename.h:358
void METIS_mCPartGraphKway(int *nvtxs, int *ncon, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, int *wgtflag, int *numflag, int *nparts, float *rubvec, int *options, int *edgecut, idxtype *part)
Definition: mkmetis.c:23
#define mmdelm
Definition: rename.h:254
void metis_partgraphvkway(int *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *vsize, int *wgtflag, int *numflag, int *nparts, int *options, int *volume, idxtype *part)
Definition: frename.c:281
int SelectQueueoneWay(int, float *, float *, int, PQueueType[MAXNCON][2])
#define Greedy_KWayEdgeBalance
Definition: rename.h:102
#define ComputeHKWayLoadImbalance
Definition: rename.h:228
void metis_edgend__(int *nvtxs, idxtype *xadj, idxtype *adjncy, int *numflag, int *options, idxtype *perm, idxtype *iperm)
Definition: frename.c:105
#define ComputePartitionBalance
Definition: rename.h:357
void metis_meshtodual(int *ne, int *nn, idxtype *elmnts, int *etype, int *numflag, idxtype *dxadj, idxtype *dadjncy)
Definition: frename.c:208
#define Bnd2WayBalance
Definition: rename.h:17
void METIS_PARTMESHNODAL(int *ne, int *nn, idxtype *elmnts, int *etype, int *numflag, int *nparts, int *edgecut, idxtype *epart, idxtype *npart)
Definition: frename.c:150
#define Compute2WayNodePartitionParams
Definition: rename.h:351
void METIS_MESHTONODAL(int *ne, int *nn, idxtype *elmnts, int *etype, int *numflag, idxtype *dxadj, idxtype *dadjncy)
Definition: frename.c:186
#define Balance2Way
Definition: rename.h:16
void METIS_WPartGraphKway(int *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, int *wgtflag, int *numflag, int *nparts, float *tpwgts, int *options, int *edgecut, idxtype *part)
Definition: kmetis.c:43
void WritePermutation(char *, idxtype *, int)
void METIS_WPARTGRAPHRECURSIVE(int *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, int *wgtflag, int *numflag, int *nparts, float *tpwgts, int *options, int *edgecut, idxtype *part)
Definition: frename.c:36
#define iset
Definition: rename.h:389
#define SelectQueue
Definition: rename.h:183
#define MCGreedy_KWayEdgeBalanceHorizontal
Definition: rename.h:225
#define Match_RM
Definition: rename.h:139
#define isum
Definition: rename.h:403
#define CheckVolKWayPartitionParams
Definition: rename.h:123
void METIS_NodeND(int *nvtxs, idxtype *xadj, idxtype *adjncy, int *numflag, int *options, idxtype *perm, idxtype *iperm)
Definition: ometis.c:79
#define genmmd
Definition: rename.h:253
#define log2_function
Definition: rename.h:414
void METIS_EdgeComputeSeparator(int *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, int *options, int *sepsize, idxtype *part)
Definition: parmetis.c:320
#define SplitGraphOrder
Definition: rename.h:298
#define CreateCoarseGraph_NVW
Definition: rename.h:28
#define MCHMlevelEdgeBisection
Definition: rename.h:264
void metis_partgraphrecursive__(int *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, int *wgtflag, int *numflag, int *nparts, int *options, int *edgecut, idxtype *part)
Definition: frename.c:30
void GENDUALMETIS(int nelmnts, int nvtxs, int etype, idxtype *elmnts, idxtype *dxadj, idxtype *dadjncy)
Definition: mesh.c:74
#define ConstructMinCoverSeparator
Definition: rename.h:337
#define Project2WayPartition
Definition: rename.h:331
void metis_wpartgraphkway_(int *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, int *wgtflag, int *numflag, int *nparts, float *tpwgts, int *options, int *edgecut, idxtype *part)
Definition: frename.c:82
#define MocRefine2Way2
Definition: rename.h:275
#define ComputeKWayBalanceBoundary
Definition: rename.h:112
#define idxadd
Definition: rename.h:401
void METIS_mCPartGraphRecursive(int *nvtxs, int *ncon, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, int *wgtflag, int *numflag, int *nparts, int *options, int *edgecut, idxtype *part)
Definition: mpmetis.c:24
#define saxpy
Definition: rename.h:409
#define imalloc
Definition: rename.h:382
#define BucketSortKeysInc
Definition: rename.h:22
idxtype ComputeFillIn2(GraphType *, idxtype *)
#define CheckNodeBnd
Definition: rename.h:46
#define RandomizeGraph
Definition: rename.h:76
#define ComputeKWayVolGains
Definition: rename.h:132
void metis_nodewnd__(int *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, int *numflag, int *options, idxtype *perm, idxtype *iperm)
Definition: frename.c:143
void metis_estimatememory__(int *nvtxs, idxtype *xadj, idxtype *adjncy, int *numflag, int *optype, int *nbytes)
Definition: frename.c:234
void metis_partgraphvkway__(int *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *vsize, int *wgtflag, int *numflag, int *nparts, int *options, int *volume, idxtype *part)
Definition: frename.c:289
#define Random_KWayEdgeRefineMConn
Definition: rename.h:362
#define SplitGraphPart
Definition: rename.h:310
void metis_wpartgraphrecursive(int *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, int *wgtflag, int *numflag, int *nparts, float *tpwgts, int *options, int *edgecut, idxtype *part)
Definition: frename.c:40
#define MocInit2WayPartition2
Definition: rename.h:212
void METIS_EstimateMemory(int *nvtxs, idxtype *xadj, idxtype *adjncy, int *numflag, int *optype, int *nbytes)
Definition: estmem.c:22
#define charsum
Definition: rename.h:402
#define Random_KWayEdgeRefine
Definition: rename.h:100
void metis_nodend__(int *nvtxs, idxtype *xadj, idxtype *adjncy, int *numflag, int *options, idxtype *perm, idxtype *iperm)
Definition: frename.c:124
void srand48(long)
#define IsHBalanceBetterFT
Definition: rename.h:230
void METIS_NodeWND(int *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, int *numflag, int *options, idxtype *perm, idxtype *iperm)
Definition: ometis.c:204
#define MocGrowBisection
Definition: rename.h:205
void metis_partmeshnodal__(int *ne, int *nn, idxtype *elmnts, int *etype, int *numflag, int *nparts, int *edgecut, idxtype *epart, idxtype *npart)
Definition: frename.c:162
#define ProjectVolKWayPartition
Definition: rename.h:133
#define SetUpGraph
Definition: rename.h:72
void fwspacefree(CtrlType *ctrl, int n)
Definition: memory.c:140
void metis_mcpartgraphkway_(int *nvtxs, int *ncon, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, int *wgtflag, int *numflag, int *nparts, float *rubvec, int *options, int *edgecut, idxtype *part)
Definition: frename.c:267
#define FreeGraph
Definition: rename.h:169
#define fmalloc
Definition: rename.h:384
#define MocRefineKWayHorizontal
Definition: rename.h:235
#define AreAllVwgtsAbove
Definition: rename.h:281
#define mmdnum
Definition: rename.h:256
#define Compute2WayHLoadImbalance
Definition: rename.h:185
#define iidxsort
Definition: rename.h:287
#define SelectQueue2
Definition: rename.h:191
void METIS_PARTGRAPHKWAY(int *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, int *wgtflag, int *numflag, int *nparts, int *options, int *edgecut, idxtype *part)
Definition: frename.c:55
int VerifyND(int, idxtype *, idxtype *)
#define Random_KWayVolRefine
Definition: rename.h:116
#define EliminateComponents
Definition: rename.h:368
void metis_meshtonodal_(int *ne, int *nn, idxtype *elmnts, int *etype, int *numflag, idxtype *dxadj, idxtype *dadjncy)
Definition: frename.c:194
#define RandomBisection
Definition: rename.h:88
#define AreAnyVwgtsBelow
Definition: rename.h:280
#define MinCover_RowDFS
Definition: rename.h:200
#define MCCoarsen2Way
Definition: rename.h:157
#define MlevelRecursiveBisection
Definition: rename.h:308
#define MocAllocateKWayPartitionMemory
Definition: rename.h:236
void metis_wpartgraphvkway(int *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *vsize, int *wgtflag, int *numflag, int *nparts, float *tpwgts, int *options, int *volume, idxtype *part)
Definition: frename.c:298
#define Coarsen2Way
Definition: rename.h:34
#define BetterBalance
Definition: rename.h:184
#define AreAllVwgtsBelow
Definition: rename.h:279
#define BetterVBalance
Definition: rename.h:248
#define TRINODALMETIS
Definition: rename.h:176
#define Greedy_KWayVolBalance
Definition: rename.h:118
#define ikeyvalsort
Definition: rename.h:290
#define ikeysort
Definition: rename.h:289
void metis_mcpartgraphkway(int *nvtxs, int *ncon, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, int *wgtflag, int *numflag, int *nparts, float *rubvec, int *options, int *edgecut, idxtype *part)
Definition: frename.c:263
void METIS_NODEWND(int *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, int *numflag, int *options, idxtype *perm, idxtype *iperm)
Definition: frename.c:131
#define MocProject2WayPartition
Definition: rename.h:271
#define MlevelNodeBisectionMultiple
Definition: rename.h:296
void metis_wpartgraphvkway_(int *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *vsize, int *wgtflag, int *numflag, int *nparts, float *tpwgts, int *options, int *volume, idxtype *part)
Definition: frename.c:302
#define Compute2WayPartitionParams
Definition: rename.h:330
int VerifyPart(int, idxtype *, idxtype *, idxtype *, idxtype *, int, int, idxtype *)
#define AllocateKWayPartitionMemory
Definition: rename.h:107
void metis_nodend_(int *nvtxs, idxtype *xadj, idxtype *adjncy, int *numflag, int *options, idxtype *perm, idxtype *iperm)
Definition: frename.c:120
#define CheckNodePartitionParams
Definition: rename.h:48
#define ComputePartitionInfo
Definition: rename.h:356
#define idxwspacemalloc
Definition: rename.h:164
#define SetUpSplitGraph
Definition: rename.h:311
#define idxsum
Definition: rename.h:399
void WriteGraph(char *, int, idxtype *, idxtype *)
#define Match_HEM
Definition: rename.h:141
#define ReAdjustMemory
Definition: rename.h:30
#define AreAllVwgtsBelowFast
Definition: rename.h:249
#define AreAllHVwgtsBelow
Definition: rename.h:226
#define samax2
Definition: rename.h:396
#define Change2FNumberingOrder
Definition: rename.h:65
#define idxamax_strd
Definition: rename.h:394
#define Allocate2WayNodePartitionMemory
Definition: rename.h:350
void METIS_MeshToNodal(int *ne, int *nn, idxtype *elmnts, int *etype, int *numflag, idxtype *dxadj, idxtype *dadjncy)
Definition: mesh.c:42
#define CreateCoarseGraphNoMask
Definition: rename.h:27
#define ComputeLoadImbalance
Definition: rename.h:282
#define MocFM_2WayEdgeRefine2
Definition: rename.h:190
#define MocGrowBisectionNew2
Definition: rename.h:214
#define HEXNODALMETIS
Definition: rename.h:178
#define MocComputeKWayPartitionParams
Definition: rename.h:237
void METIS_PartGraphKway2(int *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, int *wgtflag, int *numflag, int *nparts, int *options, int *edgecut, idxtype *part)
Definition: parmetis.c:22
#define MCMlevelRecursiveBisection
Definition: rename.h:261
#define Refine2Way
Definition: rename.h:328
void METIS_WPARTGRAPHKWAY(int *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, int *wgtflag, int *numflag, int *nparts, float *tpwgts, int *options, int *edgecut, idxtype *part)
Definition: frename.c:74
#define ComputeMaxNodeGain
Definition: rename.h:345
void METIS_MESHTODUAL(int *ne, int *nn, idxtype *elmnts, int *etype, int *numflag, idxtype *dxadj, idxtype *dadjncy)
Definition: frename.c:204
#define PruneGraph
Definition: rename.h:39
#define Greedy_KWayEdgeRefine
Definition: rename.h:101
void metis_wpartgraphrecursive_(int *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, int *wgtflag, int *numflag, int *nparts, float *tpwgts, int *options, int *edgecut, idxtype *part)
Definition: frename.c:44
void METIS_PartMeshDual(int *ne, int *nn, idxtype *elmnts, int *etype, int *numflag, int *nparts, int *edgecut, idxtype *epart, idxtype *npart)
Definition: meshpart.c:110
#define MCMatch_HEM
Definition: rename.h:244
#define MCMatch_SBHEM
Definition: rename.h:247
int idxtype
Definition: struct.h:19
void metis_partgraphrecursive(int *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, int *wgtflag, int *numflag, int *nparts, int *options, int *edgecut, idxtype *part)
Definition: frename.c:22
#define MocGrowBisection2
Definition: rename.h:213
#define CheckHeap
Definition: rename.h:324
#define InitRandom
Definition: rename.h:412
#define AllocateWorkSpace
Definition: rename.h:161
void Test_ND(int, idxtype *, idxtype *)
#define iamax
Definition: rename.h:392
void metis_partgraphkway_(int *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, int *wgtflag, int *numflag, int *nparts, int *options, int *edgecut, idxtype *part)
Definition: frename.c:63
#define SetUpGraphKway
Definition: rename.h:73
#define MlevelNestedDissection
Definition: rename.h:294
#define IsBetter2wayBalance
Definition: rename.h:192
#define sdot
Definition: rename.h:408
#define MinCover_Decompose
Definition: rename.h:198
#define ssum
Definition: rename.h:404
void METIS_EDGEND(int *nvtxs, idxtype *xadj, idxtype *adjncy, int *numflag, int *options, idxtype *perm, idxtype *iperm)
Definition: frename.c:93
#define ComputeVolKWayBoundary
Definition: rename.h:134
#define SetUpGraph2
Definition: rename.h:74
#define idxsmalloc
Definition: rename.h:386
void METIS_MCPARTGRAPHRECURSIVE(int *nvtxs, int *ncon, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, int *wgtflag, int *numflag, int *nparts, int *options, int *edgecut, idxtype *part)
Definition: frename.c:241
#define ChangeMesh2FNumbering2
Definition: rename.h:68
#define PQueueReset
Definition: rename.h:316
#define SplitGraphOrderCC
Definition: rename.h:300
#define fwspacemalloc
Definition: rename.h:166
#define MocFM_2WayEdgeRefine
Definition: rename.h:182
void metis_nodewnd_(int *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, int *numflag, int *options, idxtype *perm, idxtype *iperm)
Definition: frename.c:139
#define MocGeneral2WayBalance2
Definition: rename.h:152
void Test_PartGraph(int, idxtype *, idxtype *)
#define x
#define MocCompute2WayPartitionParams
Definition: rename.h:270
#define ConstructSeparator
Definition: rename.h:335
#define mmdint
Definition: rename.h:255
#define InitTimers
Definition: rename.h:373
void METIS_WPartGraphRecursive(int *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, int *wgtflag, int *numflag, int *nparts, float *tpwgts, int *options, int *edgecut, idxtype *part)
Definition: pmetis.c:45
#define Project2WayNodePartition
Definition: rename.h:352
void QUADNODALMETIS(int nelmnts, int nvtxs, idxtype *elmnts, idxtype *dxadj, idxtype *dadjncy)
Definition: mesh.c:340
#define Change2CNumbering
Definition: rename.h:62
#define IsSeparable
Definition: rename.h:49
void METIS_PartGraphRecursive(int *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, int *wgtflag, int *numflag, int *nparts, int *options, int *edgecut, idxtype *part)
Definition: pmetis.c:22
int PQueueGetSize(PQueueType *queue)
Definition: pqueue.c:129
#define GrowBisection
Definition: rename.h:86
#define EliminateSubDomainEdges
Definition: rename.h:366
#define General2WayBalance
Definition: rename.h:18
#define ispow2
Definition: rename.h:411
#define Change2FNumbering2
Definition: rename.h:64
#define IsConnected2
Definition: rename.h:79
#define Refine2WayNode
Definition: rename.h:349
void metis_edgend(int *nvtxs, idxtype *xadj, idxtype *adjncy, int *numflag, int *options, idxtype *perm, idxtype *iperm)
Definition: frename.c:97
#define IsConnected
Definition: rename.h:78
int smbfct(int, idxtype *, idxtype *, idxtype *, idxtype *, idxtype *, int *, idxtype *, idxtype *, int *)
void METIS_NodeComputeSeparator(int *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, int *options, int *sepsize, idxtype *part)
Definition: parmetis.c:262
void metis_mcpartgraphrecursive_(int *nvtxs, int *ncon, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, int *wgtflag, int *numflag, int *nparts, int *options, int *edgecut, idxtype *part)
Definition: frename.c:249
void ComputePartitionInfoBipartite(GraphType *, int, idxtype *)
Definition: stat.c:130
#define InitSeparator
Definition: rename.h:85
void metis_meshtodual_(int *ne, int *nn, idxtype *elmnts, int *etype, int *numflag, idxtype *dxadj, idxtype *dadjncy)
Definition: frename.c:212
void metis_partmeshdual(int *ne, int *nn, idxtype *elmnts, int *etype, int *numflag, int *nparts, int *edgecut, idxtype *epart, idxtype *npart)
Definition: frename.c:172
#define CheckBnd
Definition: rename.h:44
#define MoveGroupMConn
Definition: rename.h:367
#define TETNODALMETIS
Definition: rename.h:177
#define AreAllHVwgtsAbove
Definition: rename.h:227
#define IsConnectedSubdomain
Definition: rename.h:77
#define idxset
Definition: rename.h:390
void metis_meshtonodal(int *ne, int *nn, idxtype *elmnts, int *etype, int *numflag, idxtype *dxadj, idxtype *dadjncy)
Definition: frename.c:190
#define idxamin
Definition: rename.h:397
#define MocInit2WayBalance2
Definition: rename.h:215
#define PrintSubDomainGraph
Definition: rename.h:364
int VerifyPartV(int, idxtype *, idxtype *, idxtype *, idxtype *, int, int, idxtype *)
void METIS_PartGraphKway(int *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, int *wgtflag, int *numflag, int *nparts, int *options, int *edgecut, idxtype *part)
Definition: kmetis.c:22
void METIS_mCPartGraphRecursiveInternal(int *nvtxs, int *ncon, idxtype *xadj, idxtype *adjncy, float *nvwgt, idxtype *adjwgt, int *nparts, int *options, int *edgecut, idxtype *part)
Definition: mpmetis.c:137
void ReadGraph(GraphType *, char *, int *)
#define PQueueSeeMax
Definition: rename.h:323
#define ComputeVolume
Definition: rename.h:122
void metis_nodewnd(int *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, int *numflag, int *options, idxtype *perm, idxtype *iperm)
Definition: frename.c:135
void EliminateVolComponents(CtrlType *ctrl, GraphType *graph, int nparts, float *tpwgts, float ubfactor)
Definition: kwayvolfm.c:1614
#define MinCover_ColDFS
Definition: rename.h:199
#define ssum_strd
Definition: rename.h:405
#define MCRandom_KWayEdgeRefineHorizontal
Definition: rename.h:224
#define WspaceAvail
Definition: rename.h:163
void metis_partmeshnodal(int *ne, int *nn, idxtype *elmnts, int *etype, int *numflag, int *nparts, int *edgecut, idxtype *epart, idxtype *npart)
Definition: frename.c:154
#define MocComputeKWayBalanceBoundary
Definition: rename.h:239
#define CheckRInfo
Definition: rename.h:47
#define SelectQueueOneWay2
Definition: rename.h:216
#define Random_KWayVolRefineMConn
Definition: rename.h:117
void metis_nodend(int *nvtxs, idxtype *xadj, idxtype *adjncy, int *numflag, int *options, idxtype *perm, idxtype *iperm)
Definition: frename.c:116
#define GrowBisectionNode
Definition: rename.h:87
void metis_meshtodual__(int *ne, int *nn, idxtype *elmnts, int *etype, int *numflag, idxtype *dxadj, idxtype *dadjncy)
Definition: frename.c:216
int VerifyPartmC(int, int, idxtype *, idxtype *, idxtype *, idxtype *, int, float *, int, idxtype *)
#define SetUpCoarseGraph
Definition: rename.h:29
#define KWayVolUpdate
Definition: rename.h:120
void METIS_PARTMESHDUAL(int *ne, int *nn, idxtype *elmnts, int *etype, int *numflag, int *nparts, int *edgecut, idxtype *epart, idxtype *npart)
Definition: frename.c:168
void metis_wpartgraphkway(int *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, int *wgtflag, int *numflag, int *nparts, float *tpwgts, int *options, int *edgecut, idxtype *part)
Definition: frename.c:78
void WriteMeshPartition(char *, int, int, idxtype *, int, idxtype *)
#define ProjectKWayPartition
Definition: rename.h:109
#define CreateGraph
Definition: rename.h:167
void METIS_WPartGraphKway2(int *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, int *wgtflag, int *numflag, int *nparts, float *tpwgts, int *options, int *edgecut, idxtype *part)
Definition: parmetis.c:44
void METIS_EdgeND(int *nvtxs, idxtype *xadj, idxtype *adjncy, int *numflag, int *options, idxtype *perm, idxtype *iperm)
Definition: ometis.c:22
#define MAXNCON
Definition: defs.h:20
#define GKmalloc
Definition: rename.h:387
#define MCMatch_RM
Definition: rename.h:243
#define CheckBnd2
Definition: rename.h:45
void metis_partmeshdual_(int *ne, int *nn, idxtype *elmnts, int *etype, int *numflag, int *nparts, int *edgecut, idxtype *epart, idxtype *npart)
Definition: frename.c:176
#define VolSetUpGraph
Definition: rename.h:75
#define ComputeSubDomainGraph
Definition: rename.h:365
void metis_wpartgraphvkway__(int *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *vsize, int *wgtflag, int *numflag, int *nparts, float *tpwgts, int *options, int *volume, idxtype *part)
Definition: frename.c:306
void METIS_MeshToDual(int *ne, int *nn, idxtype *elmnts, int *etype, int *numflag, idxtype *dxadj, idxtype *dadjncy)
Definition: mesh.c:23
#define SelectQueue3
Definition: rename.h:153
#define PQueueUpdateUp
Definition: rename.h:321
void METIS_PartMeshNodal(int *ne, int *nn, idxtype *elmnts, int *etype, int *numflag, int *nparts, int *edgecut, idxtype *epart, idxtype *npart)
Definition: meshpart.c:22
void METIS_WPARTGRAPHVKWAY(int *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *vsize, int *wgtflag, int *numflag, int *nparts, float *tpwgts, int *options, int *volume, idxtype *part)
Definition: frename.c:294
#define MocBalance2Way2
Definition: rename.h:151
#define errexit
Definition: rename.h:379
#define MocInit2WayBalance
Definition: rename.h:207
#define FindComponents
Definition: rename.h:80
#define MlevelNestedDissectionP
Definition: rename.h:304
#define Greedy_KWayVolBalanceMConn
Definition: rename.h:119
#define FM_2WayNodeRefine_OneSided
Definition: rename.h:343
#define seconds
Definition: rename.h:375
#define sscale
Definition: rename.h:406
#define idxamax
Definition: rename.h:393
#define IsHBalanceBetterTT
Definition: rename.h:231
void metis_wpartgraphrecursive__(int *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, int *wgtflag, int *numflag, int *nparts, float *tpwgts, int *options, int *edgecut, idxtype *part)
Definition: frename.c:48
#define Match_SHEM
Definition: rename.h:142
#define FM_2WayEdgeRefine
Definition: rename.h:58
#define MinCover
Definition: rename.h:196
#define snorm2
Definition: rename.h:407
#define MocIsHBalanced
Definition: rename.h:229
#define PrintTimers
Definition: rename.h:374
#define MocInit2WayPartition
Definition: rename.h:204
void METIS_mCHPartGraphRecursiveInternal(int *nvtxs, int *ncon, idxtype *xadj, idxtype *adjncy, float *nvwgt, idxtype *adjwgt, int *nparts, float *ubvec, int *options, int *edgecut, idxtype *part)
Definition: mpmetis.c:184
void metis_partgraphkway__(int *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, int *wgtflag, int *numflag, int *nparts, int *options, int *edgecut, idxtype *part)
Definition: frename.c:67
#define FM_2WayNodeRefineEqWgt
Definition: rename.h:342
#define FM_2WayNodeRefine
Definition: rename.h:341
#define ismalloc
Definition: rename.h:385
void WritePartition(char *, idxtype *, int, int)
#define FreeWorkSpace
Definition: rename.h:162
void metis_meshtonodal__(int *ne, int *nn, idxtype *elmnts, int *etype, int *numflag, idxtype *dxadj, idxtype *dadjncy)
Definition: frename.c:198
#define ComputeKWayPartitionParams
Definition: rename.h:108
void ComputeFillIn(GraphType *, idxtype *)
#define MCHMlevelRecursiveBisection
Definition: rename.h:262
#define MocProjectKWayPartition
Definition: rename.h:238
int PQueueGetKey(PQueueType *queue)
Definition: pqueue.c:530
#define ChangeMesh2FNumbering
Definition: rename.h:67
void metis_estimatememory(int *nvtxs, idxtype *xadj, idxtype *adjncy, int *numflag, int *optype, int *nbytes)
Definition: frename.c:226
void metis_mcpartgraphrecursive(int *nvtxs, int *ncon, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, int *wgtflag, int *numflag, int *nparts, int *options, int *edgecut, idxtype *part)
Definition: frename.c:245
#define iintsort
Definition: rename.h:288
#define EstimateCFraction
Definition: rename.h:53
void METIS_MCPARTGRAPHKWAY(int *nvtxs, int *ncon, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, int *wgtflag, int *numflag, int *nparts, float *rubvec, int *options, int *edgecut, idxtype *part)
Definition: frename.c:259
#define MocRandomBisection
Definition: rename.h:206
#define RefineVolKWay
Definition: rename.h:129
#define ComputeVolSubDomainGraph
Definition: rename.h:124
#define Allocate2WayPartitionMemory
Definition: rename.h:329
#define samax
Definition: rename.h:395
#define samin
Definition: rename.h:398
#define PQueueGetMax
Definition: rename.h:322
int VerifyWPartV(int, idxtype *, idxtype *, idxtype *, idxtype *, int, float *, int, idxtype *)
#define AllocateVolKWayPartitionMemory
Definition: rename.h:130
#define FM_2WayNodeBalance
Definition: rename.h:344
void metis_wpartgraphkway__(int *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, int *wgtflag, int *numflag, int *nparts, float *tpwgts, int *options, int *edgecut, idxtype *part)
Definition: frename.c:86
#define ConstructMinCoverSeparator0
Definition: rename.h:336
#define MlevelVolKWayPartitioning
Definition: rename.h:96
#define AreAllBelow
Definition: rename.h:283
#define Greedy_KWayEdgeBalanceMConn
Definition: rename.h:363
#define idxmalloc
Definition: rename.h:383
void METIS_mCHPartGraphRecursive(int *nvtxs, int *ncon, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, int *wgtflag, int *numflag, int *nparts, float *ubvec, int *options, int *edgecut, idxtype *part)
Definition: mpmetis.c:78
int CheckGraph(GraphType *)
#define MCMatch_SHEM
Definition: rename.h:245
#define MMDOrder
Definition: rename.h:299
#define MlevelKWayPartitioning
Definition: rename.h:92
#define IsBalanced
Definition: rename.h:110
void metis_partmeshdual__(int *ne, int *nn, idxtype *elmnts, int *etype, int *numflag, int *nparts, int *edgecut, idxtype *epart, idxtype *npart)
Definition: frename.c:180
void METIS_PARTGRAPHVKWAY(int *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *vsize, int *wgtflag, int *numflag, int *nparts, int *options, int *volume, idxtype *part)
Definition: frename.c:277
#define PQueueInsert
Definition: rename.h:318
void METIS_ESTIMATEMEMORY(int *nvtxs, idxtype *xadj, idxtype *adjncy, int *numflag, int *optype, int *nbytes)
Definition: frename.c:222
#define MocAllocate2WayPartitionMemory
Definition: rename.h:269
void Test_PartGraphV(int, idxtype *, idxtype *)
#define RandomPermute
Definition: rename.h:410
#define MoveGroup
Definition: rename.h:369
#define ComputeVolKWayPartitionParams
Definition: rename.h:131
#define sset
Definition: rename.h:391
#define MCMlevelEdgeBisection
Definition: rename.h:263
#define MCMlevelKWayPartitioning
Definition: rename.h:220
int VerifyWPart(int, idxtype *, idxtype *, idxtype *, idxtype *, int, float *, int, idxtype *)
#define RefineKWay
Definition: rename.h:106
#define Match_RM_NVW
Definition: rename.h:140
#define MocRefine2Way
Definition: rename.h:268
#define CompressGraph
Definition: rename.h:38
#define idxsum_strd
Definition: rename.h:400
#define MlevelNestedDissectionCC
Definition: rename.h:295
void metis_partgraphrecursive_(int *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, int *wgtflag, int *numflag, int *nparts, int *options, int *edgecut, idxtype *part)
Definition: frename.c:26
#define ComputeCut
Definition: rename.h:43
#define tag(dir)
Definition: mg.c:191
#define MlevelEdgeBisection
Definition: rename.h:309
void metis_edgend_(int *nvtxs, idxtype *xadj, idxtype *adjncy, int *numflag, int *options, idxtype *perm, idxtype *iperm)
Definition: frename.c:101
void metis_partmeshnodal_(int *ne, int *nn, idxtype *elmnts, int *etype, int *numflag, int *nparts, int *edgecut, idxtype *epart, idxtype *npart)
Definition: frename.c:158
#define ChangeMesh2CNumbering
Definition: rename.h:66
void Test_PartGraphmC(int, idxtype *, idxtype *)
void METIS_WPartGraphVKway(int *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *vsize, int *wgtflag, int *numflag, int *nparts, float *tpwgts, int *options, int *volume, idxtype *part)
Definition: kvmetis.c:43
#define PQueueDelete
Definition: rename.h:319
#define PQueueFree
Definition: rename.h:317
#define ComputeKWayBoundary
Definition: rename.h:111
void METIS_NodeNDP(int nvtxs, idxtype *xadj, idxtype *adjncy, int npes, int *options, idxtype *perm, idxtype *iperm, idxtype *sizes)
Definition: parmetis.c:95
void metis_mcpartgraphrecursive__(int *nvtxs, int *ncon, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, int *wgtflag, int *numflag, int *nparts, int *options, int *edgecut, idxtype *part)
Definition: frename.c:253
void METIS_PARTGRAPHRECURSIVE(int *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, int *wgtflag, int *numflag, int *nparts, int *options, int *edgecut, idxtype *part)
Definition: frename.c:18
#define MCMatch_SHEBM
Definition: rename.h:246
#define Compute2WayHLoadImbalanceVec
Definition: rename.h:186
#define MinCover_Augment
Definition: rename.h:197
double drand48()
#define ComputeVolKWayBalanceBoundary
Definition: rename.h:135
#define MocGeneral2WayBalance
Definition: rename.h:147
#define CreateCoarseGraph
Definition: rename.h:26
#define mmdupd
Definition: rename.h:257
#define MlevelNodeBisection
Definition: rename.h:297
#define Change2FNumbering
Definition: rename.h:63
#define PQueueInit
Definition: rename.h:315
#define ComputeKWayVolume
Definition: rename.h:121
void METIS_PartGraphVKway(int *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *vsize, int *wgtflag, int *numflag, int *nparts, int *options, int *volume, idxtype *part)
Definition: kvmetis.c:22
void metis_partgraphkway(int *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, int *wgtflag, int *numflag, int *nparts, int *options, int *edgecut, idxtype *part)
Definition: frename.c:59
void metis_estimatememory_(int *nvtxs, idxtype *xadj, idxtype *adjncy, int *numflag, int *optype, int *nbytes)
Definition: frename.c:230
#define InitGraph
Definition: rename.h:168
#define Init2WayPartition
Definition: rename.h:84
#define MocBalance2Way
Definition: rename.h:146