This page guides you through installing GCG manually. It is not necessary for most users. Please also check out the compiler and OS Compatibility and Known Bugs. You can also find all arguments for the installation under Makefiles Arguments and CMake Arguments.
Install GCG manually
Prerequisites
Installing SCIP, SoPlex, ZIMPL, hMETIS, Bliss, and GCG manually requires GCG, SCIP, SoPlex, ZIMPL, and optionally Bliss, Cliquer and hMETIS. In the following, we assume that all source code archives were saved within one folder, i.e.
ls gcg-[version].tgz scip-[version].tgz soplex-[version].tgz zimpl-[version].tgz
Furthermore, the installed packages are just as for the Easy Installation.
Main Installation
ZIMPL and SoPlex
ZIMPL and SoPlex can be compiled by a simple make
.
tar xvfz zimpl-[version].tgz cd zimpl-[version]/ make tar xvfz soplex-[version].tgz cd soplex-[version]/ make
SCIP
Compiling SCIP requires links to both ZIMPL and SoPlex.
tar xvfz scip-[version].tgz cd scip-[version]/ make
When asked for links to SoPlex, we need to set links from scip-[version]/lib/spxinc
to soplex-[version]/src/
and scip-[version]/lib/libsoplex.*
to soplex-[version]/lib/libsoplex.*
. For the linker, a link to either libsoplex.*.a
or libsoplex-*.so
is enough, so in our case we only need to specify the path to libsoplex.*.a
:
../../../soplex-[version]/src/ ../../../soplex-[version]/lib/libsoplex.linux.x86_64.gnu.opt.a
For ZIMPL, links need to point from scip-[version]/lib/zimplinc/zimpl
to zimpl-[version]/src/
and from scip-[version]/lib/libzimpl.*
to zimpl-[version]/lib/libzimpl.*
. Again, we may also ignore the link to libzimpl.*.so
:
../../../zimpl-[version]/src/ ../../../zimpl-[version]/lib/libzimpl.linux.x86_64.gnu.opt.a
GCG
When compiling GCG, all flags that GCG and SCIP have in common (e.g.
ZIMPL
) will be set to what you set during the compilation of SCIP. In general, if you set any flags at all, we recommend to set them for both SCIP and GCG.
Now, GCG can be compiled. The links to SCIP need to point from gcg-[version]/lib/scip
to scip-[version]/
.
tar xvfz gcg-[version].tgz cd gcg-[version]/ make ../../scip-[version]/
Install Optional Packages
Just as for the required packages, we assume that you have each optional package you want to install lying in the directory above the GCG root directory for the instructions, i.e.
ls bliss-[version].zip cliquer-[version].tar.gz gcg/ hmetis-[version]-linux.tar.gz
Bliss
Bliss is used for symmetry detection and required for the Isomorph Detector.
We recommend using version 0.73 or higher. Bliss can be obtained here.
First, extract the bliss source code (one folder level above the GCG root directory):
unzip bliss-[version].zip
Then, go into the GCG root directory and link to it and compile it:
cd gcg/ ln -sfn ../../bliss-[version]/ lib/bliss-git make bliss
After that, recompile using the corresponding flag.
make deps BLISS=true make BLISS=true ../bliss-git/ ../bliss-git/libbliss.a
If everything went correctly, start GCG and you will be greeted by the line
and you are ready to use the bliss symmetry detector.
Cliquer
The Cliquer libary contains routines for clique searching which we use to solve pricing problems.
We recommend using version 1.21 or higher. The cliquer source code can be obtained here.
First, extract the Cliquer source code (one folder level above the GCG root directory):
tar xvfz cliquer-[version].tar.gz
Then, go into the GCG root directory and link to it and compile it:
cd gcg/ ln -s ../../cliquer-[version]/ lib/cliquer-git make cliquer
After that, recompile using the corresponding flag.
make deps CLIQUER=true make CLIQUER=true ../cliquer-git ../cliquer-git/libcliquer.a
If everything went correctly, start GCG and you will be greeted by the line
and you will be able to use the Cliquer pricing problem solver.
hMETIS
GCG will only work with hMETIS versions of 2.0 and higher. hMETIS can be obtained here. It will not be linked, but called through a system call.
In our code, hMETIS is used for hypergraph partitioning in three detectors (see Detectors). If you want to compile GCG with hMETIS, you have to set a link to it.
tar xvfz hmetis[version].tar.gz cd gcg-[version]/ ln -s ../hmetis[version]/Linux-x86_64/hmetis[version] hmetis
Furthermore, depending on your system, it might be required to change the define HMETIS_EXECUTABLE
inside the three detectors (dec_h*partition.cpp
) source code files, e.g. from "hmetis" to "./hmetis" and recompile. Alternatively, you can also do export PATH="$PATH:./"
before calling GCG.