Mongoose is a graph partitioning library. Currently, Mongoose only supports edge partitioning, but in the future a vertex separator extension will be added.
Mongoose requires CMake 2.8 and any ISO/IEC 14882:1998 compliant C++ compiler. Mongoose has been tested to work with GNU GCC 4.4+ and LLVM Clang 3.5+ on Linux, and Apple Xcode 6.4+ on macOS.
Mongoose uses CMake. To build Mongoose, follow the commands below:
git clone https://github.com/ScottKolo/Mongoose
cd Mongoose
make # Builds Mongoose (uses CMake) and runs the demo
Then to install, do
sudo make install
After compilation, the Mongoose demo can be run from the build
directory using ./bin/demo
.
You can use Mongoose in one of three ways:
- The
mongoose
executable. Once built, themongoose
executable will be located inbuild/bin/mongoose
. This executable can read a Matrix Market file containing an adjacency matrix and output timing and partitioning information to a plain-text file. Simply call it with the following syntax:mongoose <MM-input-file.mtx> [output-file]
- The C++ API. A static library is built at
Lib/libmongoose.a
. Include the header fileInclude/Mongoose.hpp
and link to this library to access the C++ API. - The MATLAB API. From MATLAB, navigate to the
Mongoose/MATLAB/
directory and build the Mongoose MEX functions by callingmongoose_make
. This will build Mongoose, run a demo, and allows access to the MATLAB API.
For more details about the specific APIs and their available functionality, see the Mongoose user guide located at Doc/Mongoose_UserGuide.pdf
.
The following people have made significant contributions to Mongoose:
- Nuri Yeralan, Microsoft Research
- Scott Kolodziej, Texas A&M University
- Tim Davis, Texas A&M University
- William Hager, University of Florida
Mongoose is licensed under the GNU Public License, version 3. For commercial license inquiries, please contact Dr. Tim Davis at davis@tamu.edu. The specific text of the license can be found in Doc/License.txt
.