Welcome to TMAC: A Toolbox of Modern Async-Parallel, Coordinate, Splitting, and Stochastic Methods
- A rich set of predefined operators.
- A set of predefined operator splitting schemes.
- An asynchronous coordinate update framework.
- A synchronous parallel update driver.
- Options to load datasets in various format.
- A rich set of applications build on top of TMAC.
- Support for Matlab, Python and Julia (coming soon)
TMAC can be installed to run on the following platforms:
- Linux
- Mac OS X
- Windows (MINGW32 (32-bit) guide, MINGW64 (64-bit) guide, Cygwin (32/64-bit) guide)
Building TMAC requires
- GNU-compatible Make
- GCC (version 4.7 or above)
- Any BLAS library
Building TMAC can be as simple as:
make
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
We use sphinx for documentation. To use it, you need to install sphinx and sphinx_rtd_theme. To compile the source code for the documentation, you can run the following commands::
cd doc
make html
Then the html files are in the build/html
folder.
We welcome patches. If you plan to contribute a patch, you need to write tests for any new code. Changes should be verified to not break existing tests before they are submitted for review. We use Google Test for unit testing. Our unit tests are in the test folder. If you are adding tests to a new file, you will need to modify the Makefile to compile the source code, otherwise, nothing needs to be changed in the Makefile. The following commands should build and run the unit tests.
The details for contributing to TMAC is here.
The contributors' list is here.
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.
-
You can report bugs through the issue tab
-
fatal error:
<omp.h>
file not found -
install g++ without root privileges. This link is very helpful.
We would like to acknowledge the Eigen library, the sparse BLAS library, and Google Test.
@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}
}