ConicBundle
|
Get the current version of the ConicBundle package (a file named like CB_v?.?.?.tgz) from
http://www.tu-chemnitz.de/~helmberg/ConicBundle/
After having downloaded the file, do the following:
tar xzvf CB_v?.?.?.tgz cd ConicBundle more README
and follow the instructions in the README file. For the time being, you may also follow the ones given here, but the README file might be more up to date.
It is assumed that
In the same directory as the README file you will find a
Makefile
In this Makefile the compilers are currently set to
CXX = g++ CC = gcc
If you want to use other compilers, you have to replace g++ and gcc by the appropriate names.
Choose one of the two compilation modes corresponding to a mode for debugging and an optimized mode without range and dimension checks.
MODE = DEBU #MODE = OPTI
It is recommended to start with the DEBU mode first.
The Makefile is set up to allow the use of distinct compiler flags for each (operating_system.cpu.compiler)-configuration. You will find a few examples in the Makefile; we illustrate the concept for a Linux system with an "x86_64"-cpu and compiler g++,
#--- linux.x86_64.g++ settings --------------------------------------------------- DEBU.linux.x86_64.g++ = -g OPTI.linux.x86_64.g++ = -DNDEBUG -O3 -march=native -funroll-loops WARN.linux.x86_64.g++ = $(GCCWARN) DEPD.linux.x86_64.g++ = -MM LINK.linux.x86_64.g++ = -lm AR.linux.x86_64.g++ = ar ARFLAGS.linux.x86_64.g++ = cr RANLIB.linux.x86_64.g++ = ranlib OPTI.linux.x86_64.gcc = -DNDEBUG -O3 WARN.linux.x86_64.gcc = $(GCCWARN) DEBU.linux.x86_64.gcc = -g DEPD.linux.x86_64.gcc = -MM LINK.linux.x86_64.gcc = -lm
These have the following purpose:
You may have to generate your own set if your configuration is not present. To find out your configuration simply plug in your compiler at CXX and run (gnu) make. Besides printing a lot of nonsense, make will create a subdirectory "<mode>.<os>.<cpu>.<CXX>". The last three terms of the subdirectory give you the names you have to use in order to add your options in the Makefile as in the example above.
After having adapted the Makefile to your needs run make by typing
make
After this you should find the library at
ConicBundle/lib/libcb.a
and some small example programs showing the use of the ConicBundle interfaces,
ConicBundle/t_c ConicBundle/t_cxx ConicBundle/t_mat ConicBundle/mc_triangle
generated from the files
ConicBundle/c_main.c ConicBundle/cxx_main.cxx ConicBundle/mat_main.cxx ConicBundle/mc_triangle.cxx
Note: mc_triangle is a tutorial implementation for solving the semidefinite max-cut relaxation with dynamic separation of triangle inequalities on a dense matrix variable. Comment out the triangle separation for a sparse max-cut variant. The code solves the unweighted version for the support of an input graph that is piped into standard input (integers in the format "n_nodes m_edges from_node_1 to_node_1 val_1 ... from_node_m to_node_m val_m").
If you only plan to use the standard C or C++ interfaces, then all headers that you need can be found in the subdirectory include
ConicBundle/include/cb_cinterface.h ConicBundle/include/CBSolver.hxx
If you plan to use the full interface with matrix classes, you will certainly need the subdirectory CBsources (with the main interface MatrixCBsolver.hxx) and most likely the subdirectories Matrix and Tools, as well.
The starting point for the html Manual is
ConicBundle/html/index.html