[2051] | 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 *); |
---|
| 25 | void CreateCoarseGraphNoMask(CtrlType *, GraphType *, int, idxtype *, idxtype *); |
---|
| 26 | void CreateCoarseGraph_NVW(CtrlType *, GraphType *, int, idxtype *, idxtype *); |
---|
| 27 | GraphType *SetUpCoarseGraph(GraphType *, int, int); |
---|
| 28 | void ReAdjustMemory(GraphType *, GraphType *, int); |
---|
| 29 | |
---|
| 30 | /* coarsen.c */ |
---|
| 31 | GraphType *Coarsen2Way(CtrlType *, GraphType *); |
---|
| 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 *); |
---|
| 43 | int CheckNodePartitionParams(GraphType *); |
---|
| 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 *); |
---|
| 58 | void Change2FNumberingOrder(int, idxtype *, idxtype *, 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); |
---|
| 138 | int FindComponents(CtrlType *, GraphType *, idxtype *, idxtype *); |
---|
| 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); |
---|
| 164 | void AllocateKWayPartitionMemory(CtrlType *, GraphType *, int); |
---|
| 165 | void ComputeKWayPartitionParams(CtrlType *, GraphType *, int); |
---|
| 166 | void ProjectKWayPartition(CtrlType *, GraphType *, int); |
---|
| 167 | int IsBalanced(idxtype *, int, float *, float); |
---|
| 168 | void ComputeKWayBoundary(CtrlType *, GraphType *, int); |
---|
| 169 | void ComputeKWayBalanceBoundary(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 *); |
---|
| 178 | int ComputeVolume(GraphType *, idxtype *); |
---|
| 179 | void CheckVolKWayPartitionParams(CtrlType *, GraphType *, int); |
---|
| 180 | void ComputeVolSubDomainGraph(GraphType *, int, 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); |
---|
| 186 | void AllocateVolKWayPartitionMemory(CtrlType *, GraphType *, int); |
---|
| 187 | void ComputeVolKWayPartitionParams(CtrlType *, GraphType *, int); |
---|
| 188 | void ComputeKWayVolGains(CtrlType *, GraphType *, int); |
---|
| 189 | void ProjectVolKWayPartition(CtrlType *, GraphType *, int); |
---|
| 190 | void ComputeVolKWayBoundary(CtrlType *, GraphType *, int); |
---|
| 191 | void ComputeVolKWayBalanceBoundary(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 */ |
---|
| 209 | GraphType *MCCoarsen2Way(CtrlType *, GraphType *); |
---|
| 210 | |
---|
| 211 | /* memory.c */ |
---|
| 212 | void AllocateWorkSpace(CtrlType *, GraphType *, int); |
---|
| 213 | void FreeWorkSpace(CtrlType *, GraphType *); |
---|
| 214 | int WspaceAvail(CtrlType *); |
---|
| 215 | idxtype *idxwspacemalloc(CtrlType *, int); |
---|
| 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 *); |
---|
| 285 | void MocAllocateKWayPartitionMemory(CtrlType *, GraphType *, int); |
---|
| 286 | void MocComputeKWayPartitionParams(CtrlType *, GraphType *, int); |
---|
| 287 | void MocProjectKWayPartition(CtrlType *, GraphType *, int); |
---|
| 288 | void MocComputeKWayBalanceBoundary(CtrlType *, GraphType *, int); |
---|
| 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); |
---|
| 318 | void MocAllocate2WayPartitionMemory(CtrlType *, GraphType *); |
---|
| 319 | void MocCompute2WayPartitionParams(CtrlType *, GraphType *); |
---|
| 320 | void MocProject2WayPartition(CtrlType *, GraphType *); |
---|
| 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); |
---|
| 346 | void SplitGraphOrder(CtrlType *, GraphType *, GraphType *, GraphType *); |
---|
| 347 | void MMDOrder(CtrlType *, GraphType *, idxtype *, int); |
---|
| 348 | int SplitGraphOrderCC(CtrlType *, GraphType *, GraphType *, int, idxtype *, idxtype *); |
---|
| 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); |
---|
| 363 | void SplitGraphPart(CtrlType *, GraphType *, GraphType *, GraphType *); |
---|
| 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 *); |
---|
| 370 | int PQueueGetSize(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); |
---|
| 382 | void Allocate2WayPartitionMemory(CtrlType *, GraphType *); |
---|
| 383 | void Compute2WayPartitionParams(CtrlType *, GraphType *); |
---|
| 384 | void Project2WayPartition(CtrlType *, GraphType *); |
---|
| 385 | |
---|
| 386 | /* separator.c */ |
---|
| 387 | void ConstructSeparator(CtrlType *, GraphType *, float); |
---|
| 388 | void ConstructMinCoverSeparator0(CtrlType *, GraphType *, float); |
---|
| 389 | void ConstructMinCoverSeparator(CtrlType *, GraphType *, float); |
---|
| 390 | |
---|
| 391 | /* sfm.c */ |
---|
| 392 | void FM_2WayNodeRefine(CtrlType *, GraphType *, float, int); |
---|
| 393 | void FM_2WayNodeRefineEqWgt(CtrlType *, GraphType *, 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); |
---|
| 400 | void Allocate2WayNodePartitionMemory(CtrlType *, GraphType *); |
---|
| 401 | void Compute2WayNodePartitionParams(CtrlType *, GraphType *); |
---|
| 402 | void Project2WayNodePartition(CtrlType *, GraphType *); |
---|
| 403 | |
---|
| 404 | /* stat.c */ |
---|
| 405 | void ComputePartitionInfo(GraphType *, int, idxtype *); |
---|
| 406 | void ComputePartitionInfoBipartite(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 *); |
---|
| 414 | void ComputeSubDomainGraph(GraphType *, int, idxtype *, 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(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 *); |
---|
| 488 | idxtype ComputeFillIn2(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 | |
---|