Skip to content
/ TMAC Public
forked from uclaopt/TMAC

TMAC: A Toolbox of Modern Async-Parallel, Coordinate, Splitting, and Stochastic Methods

Notifications You must be signed in to change notification settings

mingyan08/TMAC

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

79 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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}
}

About

TMAC: A Toolbox of Modern Async-Parallel, Coordinate, Splitting, and Stochastic Methods

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 92.9%
  • Python 4.4%
  • C 1.1%
  • CMake 0.5%
  • Makefile 0.4%
  • M4 0.3%
  • Other 0.4%