Skip to content

Commit 1349372

Browse files
committed
Mangle metis
1 parent 8a9ea48 commit 1349372

9 files changed

Lines changed: 206 additions & 7 deletions

File tree

cmake/sources.cmake

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -304,6 +304,7 @@ set(hipo_orderings_headers
304304
../extern/metis/GKlib/gk_arch.h
305305
../extern/metis/GKlib/gk_defs.h
306306
../extern/metis/GKlib/gk_macros.h
307+
../extern/metis/GKlib/gk_mangle.h
307308
../extern/metis/GKlib/gk_mkblas.h
308309
../extern/metis/GKlib/gk_mkmemory.h
309310
../extern/metis/GKlib/gk_mkpqueue.h
@@ -319,6 +320,7 @@ set(hipo_orderings_headers
319320
../extern/metis/libmetis/defs.h
320321
../extern/metis/libmetis/gklib_defs.h
321322
../extern/metis/libmetis/macros.h
323+
../extern/metis/libmetis/metis_mangle.h
322324
../extern/metis/libmetis/metislib.h
323325
../extern/metis/libmetis/proto.h
324326
../extern/metis/libmetis/stdheaders.h

extern/metis/GKlib/gk_macros.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
#define INC_DEC(a, b, val) do {(a) += (val); (b) -= (val);} while(0)
2222

2323
#define ONEOVERRANDMAX (1.0/(RAND_MAX+1.0))
24-
#define RandomInRange(u, rng_state) ((int) (ONEOVERRANDMAX*(u)*my_rand_r(rng_state)))
24+
#define RandomInRange(u, rng_state) ((int) (ONEOVERRANDMAX*(u)*gk_rand_r(rng_state)))
2525
#define RandomInRange_r(s, u) ((int) (ONEOVERRANDMAX*(u)*rand_r(s)))
2626

2727
/*-------------------------------------------------------------

extern/metis/GKlib/gk_mangle.h

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
#ifndef HIGHS_GKLIB_MANGLE_H
2+
#define HIGHS_GKLIB_MANGLE_H
3+
4+
5+
/* memory.c */
6+
#define gk_free Highs_gk_free
7+
8+
/* error.c */
9+
#define gk_errexit Highs_gk_errexit
10+
11+
/* random.c */
12+
#define gk_randint64 Highs_gk_randint64
13+
#define gk_randint32 Highs_gk_randint32
14+
#define gk_rand_r Highs_gk_rand_r
15+
16+
17+
/* mcore.c */
18+
#define gk_mcoreCreate Highs_gk_mcoreCreate
19+
#define gk_mcoreDestroy Highs_gk_mcoreDestroy
20+
#define gk_mcoreMalloc Highs_gk_mcoreMalloc
21+
#define gk_mcorePush Highs_gk_mcorePush
22+
#define gk_mcorePop Highs_gk_mcorePop
23+
#define gk_mcoreAdd Highs_gk_mcoreAdd
24+
#define gk_mcoreDel Highs_gk_mcoreDel
25+
26+
27+
#endif

extern/metis/GKlib/gk_proto.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
#ifndef _GK_PROTO_H_
1111
#define _GK_PROTO_H_
1212

13+
#include "gk_mangle.h"
14+
1315
#ifdef __cplusplus
1416
extern "C" {
1517
#endif
@@ -29,7 +31,7 @@ void gk_errexit(char *,...);
2931
*-------------------------------------------------------------*/
3032
uint64_t gk_randint64(unsigned *rng_state);
3133
uint32_t gk_randint32(unsigned *rng_state);
32-
int my_rand_r(unsigned *rng_state);
34+
int gk_rand_r(unsigned *rng_state);
3335

3436

3537
/* mcore.c */

extern/metis/GKlib/random.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
/*************************************************************************/
1414
/*! Define function rand_r, which may not exist on certain machines */
1515
/*************************************************************************/
16-
int my_rand_r(unsigned *rng_state) {
16+
int gk_rand_r(unsigned *rng_state) {
1717
// Linear congruential generator, with values from wikipedia
1818
int result = ((*rng_state * 1103515245) + 12345) & 0x7fffffff;
1919
*rng_state = result;
@@ -23,15 +23,15 @@ int my_rand_r(unsigned *rng_state) {
2323
/* generates a random number on [0, 2^64-1]-interval */
2424
uint64_t gk_randint64(unsigned *rng_state)
2525
{
26-
uint64_t piece_1 = ((uint64_t) my_rand_r(rng_state)) << 32;
27-
uint64_t piece_2 = ((uint64_t) my_rand_r(rng_state));
26+
uint64_t piece_1 = ((uint64_t) gk_rand_r(rng_state)) << 32;
27+
uint64_t piece_2 = ((uint64_t) gk_rand_r(rng_state));
2828
return (uint64_t)(piece_1 | piece_2);
2929
}
3030

3131
/* generates a random number on [0, 2^32-1]-interval */
3232
uint32_t gk_randint32(unsigned *rng_state)
3333
{
34-
return (uint32_t)my_rand_r(rng_state);
34+
return (uint32_t)gk_rand_r(rng_state);
3535
}
3636

3737

extern/metis/libmetis/gklib_defs.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
#ifndef _LIBMETIS_GKLIB_H_
1111
#define _LIBMETIS_GKLIB_H_
1212

13+
#include "metis_mangle.h"
14+
1315
/*************************************************************************
1416
* Define various data structure using GKlib's templates.
1517
**************************************************************************/
Lines changed: 164 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,164 @@
1+
#ifndef HIGHS_METIS_MANGLE_H
2+
#define HIGHS_METIS_MANGLE_H
3+
4+
/* balance.c */
5+
#define Balance2Way Highs_metis_Balance2Way
6+
#define Bnd2WayBalance Highs_metis_Bnd2WayBalance
7+
#define General2WayBalance Highs_metis_General2WayBalance
8+
#define McGeneral2WayBalance Highs_metis_McGeneral2WayBalance
9+
10+
/* bucketsort.c */
11+
#define BucketSortKeysInc Highs_metis_BucketSortKeysInc
12+
13+
/* coarsen.c */
14+
#define CoarsenGraph Highs_metis_CoarsenGraph
15+
#define CoarsenGraphNlevels Highs_metis_CoarsenGraphNlevels
16+
#define Match_RM Highs_metis_Match_RM
17+
#define Match_SHEM Highs_metis_Match_SHEM
18+
#define Match_2Hop Highs_metis_Match_2Hop
19+
#define Match_2HopAny Highs_metis_Match_2HopAny
20+
#define Match_2HopAll Highs_metis_Match_2HopAll
21+
#define PrintCGraphStats Highs_metis_PrintCGraphStats
22+
#define CreateCoarseGraph Highs_metis_CreateCoarseGraph
23+
#define SetupCoarseGraph Highs_metis_SetupCoarseGraph
24+
#define ReAdjustMemory Highs_metis_ReAdjustMemory
25+
26+
/* compress.c */
27+
#define CompressGraph Highs_metis_CompressGraph
28+
#define PruneGraph Highs_metis_PruneGraph
29+
30+
/* contig.c */
31+
#define FindSepInducedComponents Highs_metis_FindSepInducedComponents
32+
33+
/* fm.c */
34+
#define FM_2WayRefine Highs_metis_FM_2WayRefine
35+
#define FM_2WayCutRefine Highs_metis_FM_2WayCutRefine
36+
#define FM_Mc2WayCutRefine Highs_metis_FM_Mc2WayCutRefine
37+
#define SelectQueue Highs_metis_SelectQueue
38+
#define Print2WayRefineStats Highs_metis_Print2WayRefineStats
39+
40+
/* graph.c */
41+
#define SetupGraph Highs_metis_SetupGraph
42+
#define SetupGraph_tvwgt Highs_metis_SetupGraph_tvwgt
43+
#define SetupGraph_label Highs_metis_SetupGraph_label
44+
#define SetupSplitGraph Highs_metis_SetupSplitGraph
45+
#define CreateGraph Highs_metis_CreateGraph
46+
#define InitGraph Highs_metis_InitGraph
47+
#define FreeSData Highs_metis_FreeSData
48+
#define FreeRData Highs_metis_FreeRData
49+
#define FreeGraph Highs_metis_FreeGraph
50+
51+
/* initpart.c */
52+
#define InitSeparator Highs_metis_InitSeparator
53+
#define RandomBisection Highs_metis_RandomBisection
54+
#define GrowBisection Highs_metis_GrowBisection
55+
#define GrowBisectionNode Highs_metis_GrowBisectionNode
56+
57+
/* mcutil.c */
58+
#define ivecle Highs_metis_ivecle
59+
#define ivecaxpylez Highs_metis_ivecaxpylez
60+
#define BetterVBalance Highs_metis_BetterVBalance
61+
#define BetterBalance2Way Highs_metis_BetterBalance2Way
62+
#define ComputeLoadImbalance Highs_metis_ComputeLoadImbalance
63+
#define ComputeLoadImbalanceDiff Highs_metis_ComputeLoadImbalanceDiff
64+
#define ComputeLoadImbalanceDiffVec Highs_metis_ComputeLoadImbalanceDiffVec
65+
66+
/* mmd.c */
67+
#define genmmd Highs_metis_genmmd
68+
#define mmdelm Highs_metis_mmdelm
69+
#define mmdint Highs_metis_mmdint
70+
#define mmdnum Highs_metis_mmdnum
71+
#define mmdupd Highs_metis_mmdupd
72+
73+
/* ometis.c */
74+
#define MlevelNestedDissection Highs_metis_MlevelNestedDissection
75+
#define MlevelNestedDissectionCC Highs_metis_MlevelNestedDissectionCC
76+
#define MlevelNodeBisectionMultiple Highs_metis_MlevelNodeBisectionMultiple
77+
#define MlevelNodeBisectionL2 Highs_metis_MlevelNodeBisectionL2
78+
#define MlevelNodeBisectionL1 Highs_metis_MlevelNodeBisectionL1
79+
#define SplitGraphOrder Highs_metis_SplitGraphOrder
80+
#define SplitGraphOrderCC Highs_metis_SplitGraphOrderCC
81+
#define MMDOrder Highs_metis_MMDOrder
82+
83+
/* options.c */
84+
#define SetupCtrl Highs_metis_SetupCtrl
85+
#define Setup2WayBalMultipliers Highs_metis_Setup2WayBalMultipliers
86+
#define PrintCtrl Highs_metis_PrintCtrl
87+
#define CheckParams Highs_metis_CheckParams
88+
#define FreeCtrl Highs_metis_FreeCtrl
89+
90+
/* refine.c */
91+
#define Allocate2WayPartitionMemory Highs_metis_Allocate2WayPartitionMemory
92+
#define Compute2WayPartitionParams Highs_metis_Compute2WayPartitionParams
93+
94+
/* separator.c */
95+
#define ConstructSeparator Highs_metis_ConstructSeparator
96+
97+
/* sfm.c */
98+
#define FM_2WayNodeRefine2Sided Highs_metis_FM_2WayNodeRefine2Sided
99+
#define FM_2WayNodeRefine1Sided Highs_metis_FM_2WayNodeRefine1Sided
100+
#define FM_2WayNodeBalance Highs_metis_FM_2WayNodeBalance
101+
102+
/* srefine.c */
103+
#define Refine2WayNode Highs_metis_Refine2WayNode
104+
#define Allocate2WayNodePartitionMemory Highs_metis_Allocate2WayNodePartitionMemory
105+
#define Compute2WayNodePartitionParams Highs_metis_Compute2WayNodePartitionParams
106+
#define Project2WayNodePartition Highs_metis_Project2WayNodePartition
107+
108+
/* util.c */
109+
#define iargmax_nrm Highs_metis_iargmax_nrm
110+
#define iargmax2_nrm Highs_metis_iargmax2_nrm
111+
112+
/* wspace.c */
113+
#define AllocateWorkSpace Highs_metis_AllocateWorkSpace
114+
#define FreeWorkSpace Highs_metis_FreeWorkSpace
115+
#define wspacemalloc Highs_metis_wspacemalloc
116+
#define wspacepush Highs_metis_wspacepush
117+
#define wspacepop Highs_metis_wspacepop
118+
#define iwspacemalloc Highs_metis_iwspacemalloc
119+
#define rwspacemalloc Highs_metis_rwspacemalloc
120+
#define ikvwspacemalloc Highs_metis_ikvwspacemalloc
121+
122+
123+
/* GKlib macros */
124+
#define iaxpy Highs_metis_iaxpy
125+
#define isum Highs_metis_isum
126+
#define imalloc Highs_metis_imalloc
127+
#define irealloc Highs_metis_irealloc
128+
#define ismalloc Highs_metis_ismalloc
129+
#define iset Highs_metis_iset
130+
#define icopy Highs_metis_icopy
131+
#define rmalloc Highs_metis_rmalloc
132+
#define rrealloc Highs_metis_rrealloc
133+
#define rsmalloc Highs_metis_rsmalloc
134+
#define rset Highs_metis_rset
135+
#define rcopy Highs_metis_rcopy
136+
#define ikvmalloc Highs_metis_ikvmalloc
137+
#define ikvrealloc Highs_metis_ikvrealloc
138+
#define ikvsmalloc Highs_metis_ikvsmalloc
139+
#define ikvset Highs_metis_ikvset
140+
#define ikvcopy Highs_metis_ikvcopy
141+
#define rkvmalloc Highs_metis_rkvmalloc
142+
#define rkvrealloc Highs_metis_rkvrealloc
143+
#define rkvsmalloc Highs_metis_rkvsmalloc
144+
#define rkvset Highs_metis_rkvset
145+
#define rkvcopy Highs_metis_rkvcopy
146+
#define rpqCreate Highs_metis_rpqCreate
147+
#define rpqInit Highs_metis_rpqInit
148+
#define rpqReset Highs_metis_rpqReset
149+
#define rpqFree Highs_metis_rpqFree
150+
#define rpqDestroy Highs_metis_rpqDestroy
151+
#define rpqLength Highs_metis_rpqLength
152+
#define rpqInsert Highs_metis_rpqInsert
153+
#define rpqDelete Highs_metis_rpqDelete
154+
#define rpqUpdate Highs_metis_rpqUpdate
155+
#define rpqGetTop Highs_metis_rpqGetTop
156+
#define rpqSeeTopVal Highs_metis_rpqSeeTopVal
157+
#define rpqSeeTopKey Highs_metis_rpqSeeTopKey
158+
#define irand Highs_metis_irand
159+
#define irandInRange Highs_metis_irandInRange
160+
#define irandArrayPermute Highs_metis_irandArrayPermute
161+
#define isortd Highs_metis_isortd
162+
#define ikvsorti Highs_metis_ikvsorti
163+
164+
#endif

extern/metis/libmetis/metislib.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424
#include "macros.h"
2525
#include "proto.h"
2626

27+
#include "ipm/hipo/auxiliary/OrderingPrint.h"
28+
2729

2830
#if defined(COMPILER_MSC) && (_MSC_VER < 1900)
2931
#if defined(rint)

extern/metis/libmetis/proto.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
#ifndef _LIBMETIS_PROTO_H_
1616
#define _LIBMETIS_PROTO_H_
1717

18-
#include "ipm/hipo/auxiliary/OrderingPrint.h"
18+
#include "metis_mangle.h"
1919

2020
/* auxapi.c */
2121

0 commit comments

Comments
 (0)