Skip to content
TMAC: A Toolbox of Modern Async-Parallel, Coordinate, Splitting, and Stochastic Methods
C++ Python C CMake Makefile M4 Other
Branch: master
Clone or download
Pull request Compare This branch is 3 commits behind uclaopt:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


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.


  • 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)



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


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.


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


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

Related Papers

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

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

  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}

You can’t perform that action at this time.