LLNL / gecko

C++ library for graph ordering

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Gecko

Gecko is a C++ library for solving graph linear arrangement problems. Gecko orders graph nodes, representing data elements, connected by undirected edges, representing affinity relations, with the goal of minimizing a chosen functional of edge length. Gecko was primarily designed to minimize the product of edge lengths but can also be used to reduce bandwidth (maximum edge length) and 1-sum (sum of edge lengths), among others. Minimum-edge-product orderings generalize space-filling curve orderings to geometryless graphs and find applications in data locality optimization, graph partitioning, and dimensionality reduction.

Quick Start

Detailed installation instructions are available in docs/installation.md. Below are basic instructions for building gecko.

To download the latest version of the source code, type:

git clone https://github.com/LLNL/gecko.git

Gecko supports both CMake and GNU builds.

CMake builds

From a Unix or git shell, type:

cd gecko
mkdir build
cd build
cmake ..
cmake --build . --config Release

This builds the gecko library in build/lib and executable in build/bin. To display the compile-time options, type cmake .. -L.

GNU builds

Gecko can also be built using GNU make:

cd gecko
make

This builds the gecko library and executable in lib and bin. For compile-time options, please consult the file Config.

Author

Gecko was written by Peter Lindstrom at Lawrence Livermore National Laboratory.

Citing Gecko

If you use gecko for scholarly research, please cite the following paper:

Support

Please submit bug reports and feature requests via the GitHub issue tracker. For all other questions and comments, please contact us at gecko@llnl.gov.

License

Gecko is distributed under the terms of the BSD license. See the files LICENSE and NOTICE for details.

SPDX-License-Identifier: BSD

LLNL-CODE-800597

About

C++ library for graph ordering

License:BSD 3-Clause "New" or "Revised" License


Languages

Language:C++ 85.2%Language:CMake 11.8%Language:Makefile 1.9%Language:C 1.1%