forked from KarypisLab/METIS
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcmpfillin.c
73 lines (56 loc) · 1.82 KB
/
cmpfillin.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
/*
* Copyright 1997, Regents of the University of Minnesota
*
* cmpfillin.c
*
* This file takes a graph and a fill-reducing ordering and computes
* the fillin.
*
* Started 9/1/2004
* George
*
* $Id: cmpfillin.c 9982 2011-05-25 17:18:00Z karypis $
*
*/
#include "metisbin.h"
/*************************************************************************
* Let the game begin
**************************************************************************/
int main(int argc, char *argv[])
{
idx_t i;
idx_t *perm, *iperm;
graph_t *graph;
params_t params;
size_t maxlnz, opc;
if (argc != 3) {
printf("Usage: %s <GraphFile> <PermFile\n", argv[0]);
exit(0);
}
params.filename = gk_strdup(argv[1]);
graph = ReadGraph(¶ms);
if (graph->nvtxs <= 0) {
printf("Empty graph. Nothing to do.\n");
exit(0);
}
if (graph->ncon != 1) {
printf("Ordering can only be applied to graphs with one constraint.\n");
exit(0);
}
/* Read the external iperm vector */
perm = imalloc(graph->nvtxs, "main: perm");
iperm = imalloc(graph->nvtxs, "main: iperm");
ReadPOVector(graph, argv[2], iperm);
for (i=0; i<graph->nvtxs; i++)
perm[iperm[i]] = i;
printf("**********************************************************************\n");
printf("%s", METISTITLE);
printf("Graph Information ---------------------------------------------------\n");
printf(" Name: %s, #Vertices: %"PRIDX", #Edges: %"PRIDX"\n\n", argv[1],
graph->nvtxs, graph->nedges/2);
printf("Fillin... -----------------------------------------------------------\n");
ComputeFillIn(graph, perm, iperm, &maxlnz, &opc);
printf(" Nonzeros: %6.3le \tOperation Count: %6.3le\n", (double)maxlnz, (double)opc);
printf("**********************************************************************\n");
FreeGraph(&graph);
}