GraphLab has two major versions:
1) Newer version: GraphLab version 2.1 – distributed version (multiple computing nodes, each one with multiple cores).
2) Older version: GraphLab version 1 - multicore version (a single computing node with mutiple cores).
For downloading the older version 1, please visit this page.
Downloading GraphLab version 2.1
You can download GraphLab directly from our Google Code repository (you will need mercurial).
Or you can download our current release here.
Building GraphLab
The current version of GraphLab was tested on Ubuntu Linux 64-bit 10.04, 11.04 (Natty), 12.04 (Pangolin) as well as Mac OS X 10.7 (Lion) and Mac OS X 10.8 (Mountain Lion). We require a 64-bit operating system.
Dependencies
To simplify installation, GraphLab currently downloads and builds most of its required dependencies using CMake’s External Project feature. This also means the first build could take a long time.
We require the following additional dependencies which we do not build:
- On OS X: g++ (>= 4.2) or clang (>= 3.0) [Required]
- Required for compiling GraphLab.
- On Linux: g++ (>= 4.3) or clang (>= 3.0) [Required]
- Required for compiling GraphLab.
- *nix build tools: patch, make [Required]
- Should come with most Mac/Linux systems by default. Recent Ubuntu version will require to install the build-essential package.
- zlib [Required]
- Comes with most Mac/Linux systems by default. Recent Ubuntu version will require the zlib1g-dev package.
- Open MPI or MPICH2 [Strongly Recommended]
- Required for running GraphLab distributed
- JDK 6 or greater [Optional]
- Required for HDFS support
Satisfying Dependencies on Mac OS X
Installing XCode with the command line tools (in XCode 4.3 you have to do this manually in the XCode Preferences -> Download pane), satisfies all of these dependencies.
Satisfying Dependencies on Ubuntu
All the dependencies can be satisfied from the repository:
|
1 |
sudo apt-get install gcc g++ build-essential libopenmpi-dev openmpi-bin default-jdk cmake zlib1g-dev mercurial |
Compiling
Running
./configure
In the graphlabapi directory, will create two sub-directories, release/ and debug/ . cd into either of these directories and running make will build the release or the debug versions respectively. Note that this will compile all of GraphLab, including all toolkits. Since some toolkits require additional dependencies (for instance, the Computer Vision toolkit needs OpenCV), this will also download and build all optional dependencies.
We recommend using make’s parallel build feature to accelerate the compilation process. For instance:
make -j 4
will perform up to 4 build tasks in parallel. When building in release/ mode, GraphLab does require a large amount of memory to compile with the heaviest toolkit requiring 1GB of RAM. Where K is the amount of memory you have on your machine in GB, we recommend not exceeding make -j K
Alternatively, if you know exactly which toolkit you want to build, cd into the toolkit’s sub-directory and running make, will be significantly faster as it will only download the minimal set of dependencies for that toolkit. For instance:
cd release/toolkits/graph_analytics
make -j4
will build only the Graph Analytics toolkit and will not need to obtain OpenCV, Eigen, etc used by the other toolkits.
Compilation Issues
If you encounter issues please send us an email (graphlabapi@googlegroups.com) with the following contents:
- A detailed description of the problem you are facing
- The OS and OS version you are using.
- The output of uname -a
- The hardware you are running on.
- The output of g++ -v and clang++ -v
- The contents of graphlabapi/config.log and graphlabapi/configure.deps
License
GraphLab is released under the Apache license.
We only ask that if you use GraphLab in your research please cite our paper
|
1 2 3 4 5 6 7 8 9 10 11 12 |
@inproceedings{Low+al:uai10graphlab, title = {GraphLab: A New Parallel Framework for Machine Learning}, author = {Yucheng Low and Joseph Gonzalez and Aapo Kyrola and Danny Bickson and Carlos Guestrin and Joseph M. Hellerstein}, booktitle = {Conference on Uncertainty in Artificial Intelligence (UAI)}, month = {July}, year = {2010} } |

