TMAC: A Toolbox of Modern Async-Parallel, Coordinate, Splitting, and Stochastic Methods
C++ Python C CMake Makefile M4 Other
Switch branches/tags
Nothing to show
Pull request Compare This branch is 3 commits behind uclaopt:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
apps
data
doc
include
lib
src
test
.gitignore
CONTRIBUTORS.md
Makefile
README.md
publish_doc.sh
run_me.sh

README.md

TMAC

Welcome to TMAC: A toolbox that implements a set of modern methods:

  • First-order methods: gradient descent, proximal-point, and prox-gradient algorithms
  • Operator splitting methods based on forward-backward, backward-forward, Douglas-Rachford, Peaceman-Rachford splittings
  • (Block) coordinate update: cyclic, random, parallel Gauss-Seidel index rules
  • Parallel and asynchronous parallel coordinate updates
  • Stochastic gradient methods (coming soon)

You can easily apply these methods to your application by just plugging in the functions or operators specific to your problem.

Components

  • A rich set of operators: proximal operators, projection operators, and gradient operators
  • Operator splitting schemes: forward-backward, backward-forward, Douglas-Rachford, Peaceman-Rachford
  • A shared-memory (asynchronous) parallel driver
  • Examples: (sparse) logistic regression, LASSO, portfolio optimization, nonnegative matrix factorization, insection of two sets
  • Supported dataset formats: matrix market, LIBSVM

Support platforms

Linux, Mac OS X, and Windows (32 and 64 bits)

Installation

Examples

We build a user-friendly interface to run TMAC for different applications through shell. You can run it through the following command:

./run_me.sh

Full documentation

You can view the detailed documentations here.

Develop a new algorithm with the TMAC features

Once you understand TMAC's architecture and interface, it is easy to develop a new algorithm for your problem that inherits many TMAC methods and features. A tutorial is here.

Open collaborations

TMAC includes contributions from a number of people around the world. They are listed here.

Guidelines for contributions: here.

Getting the data

So far, TMAC support the following data format:

You can download some example datasets from here. You can also obtain the regression and classification datasets from the LIBSVM website.

Troubleshooting

Please refer to the FAQ page for troubleshooting. You can also report bugs through the issue tab

Acknowledgement

We would like to acknowledge the Eigen library, the sparse BLAS library, and Google Test.

Related Papers

@article{edmunds2016tmac,
  title={TMAC: A Toolbox of Modern Async-Parallel, Coordinate, Splitting, and Stochastic Methods},
  author={Edmunds, Brent and Peng, Zhimin and Yin, Wotao},
  journal={arXiv preprint arXiv:1606.04551},
  year={2016}
}

@article{peng2015arock,
  title = {ARock: an Algorithmic Framework for Asynchronous Parallel Coordinate Updates},
  author = {Peng, Zhimin and Xu, Yangyang and Yan, Ming and Yin, Wotao},
  journal = {arXiv:1506.02396},
  year = {2015},
  publisher = {http://arxiv.org/abs/1506.02396}
}

@article{PengWuXuYanYin2016_coordinate,
  title = {Coordinate friendly structures, algorithms and applications},
  volume = {1},
  number = {1},
  journal = {Annals of Mathematical Sciences and Applications},
  author = {Peng, Zhimin and Wu, Tianyu and Xu, Yangyang and Yan, Ming and Yin, Wotao},
  month = Jan,
  year = {2016},
  pages = {59--119}
}