27 lines
1.6 KiB
Markdown
27 lines
1.6 KiB
Markdown
## rabit: Reliable Allreduce and Broadcast Interface
|
|
|
|
rabit is a light weight library that provides a fault tolerant interface of Allreduce and Broadcast. It is designed to support easy implementations of distributed machine learning programs, many of which fall naturally under the Allreduce abstraction.
|
|
|
|
* [Tutorial](guide)
|
|
* [API Documentation](http://homes.cs.washington.edu/~tqchen/rabit/doc)
|
|
* You can also directly read the [interface header](include/rabit.h)
|
|
|
|
Features
|
|
====
|
|
All these features comes from the facts about small rabbit:)
|
|
* Portable: rabit is light weight and runs everywhere
|
|
- Rabit is a library instead of a framework, a program only needs to link the library to run
|
|
- Rabit only replies on a mechanism to start program, which was provided by most framework
|
|
- You can port rabit programs easily to many frameworks, including Hadoop, MPI without changing your code
|
|
* Scalable and Flexible: rabit runs fast
|
|
* Rabit program use Allreduce to communicate, and do not suffer the cost between iterations of MapReduce abstraction.
|
|
- Programs can call rabit functions in any order, as opposed to frameworks where callbacks are offered and called by the framework, i.e. inversion of control principle.
|
|
- Programs persist over all the iterations, unless they fail and recover.
|
|
* Fault Tolerant: rabit dig burrows to avoid disasters
|
|
- Rabit programs can recover the model and results using synchronous function calls.
|
|
|
|
Use Rabit
|
|
====
|
|
* Type make in the root folder will compile the rabit library in lib folder
|
|
* Add lib to the library path and include to the include path of compiler
|