High-level Distributed Processing of Large-Scale Graphs
download | building and testing | local runs | cluster runs | documents | credits
Download
Download HipG here:
- HipG-2.0.zip (8.9 MB), SCC/TSCC algorithms, bug fixes, 2 Feb 2011
- HipG-1.5.zip (7.8 MB), on-the-fly algorithms, bug fixes, 20 Apr 2011
- hipg-release-1.0.zip (5.7 MB), bug fixes, 10 Sep 2010
- hipg-release-0.5.tar.gz (5.7 MB), first release 6 Jun 2010
- Platform-independent built libraries (hipg-<version>.jar)
- Platform-independent built examples (hipg-examples-<version>.jar)
- Zipped sources (possible to rebuild)
- Dependencies, such as the Ibis communication library, the slf4j logging facade, the bcel bytecode manipulation library, the SpinJa reader of Promela files. For a full list of dependencies see Ibis website.
- Useful scripts
To run HipG program you only need Java 6. Dependencies come bundled, many input graphs can be created in memory, and you can run either on your desktop or on a cluster.
Building and Testing
Building is not necessary, unless you want to modify the code, in which case ant is needed. Unpack sources and runantDebugging can be done with Log4j We tested under Linux, using JVM v. 6 by Sun/Oracle. In particular, the library is not yet tested under Windows.
Licence
HipG is licensed under GPL. For commercial use, please contact the authors.Running on a Local Machine
Before executing any HipG program, start a server:
./bin/server.shto which all workers will connect and obtain a rank. The server does not at all take part in computations. Each set of workers is called a pool and the server can handle many pools at the same time.
Examples used in papers include
hipg.app.(Visitor|BFS|scc.FB|scc.owctypa3|onthefly.SpinJadi)In general, to run a HipG application *locally* you typically type:
./bin/run-local.sh <#threads> <program> <graph>To run, for example, the Visitor application *locally* using 4 threads on a binary tree graph of height 20, execute
./bin/run-local.sh 4 hipg.app.Visitor BinTree 20The tree will be first created and randomly partitioned between the memory of workers.
Running on a Cluster
Before executing any HipG program, start a server on one of the workers, or on a head node, or on any other machine. Supply the run script with a -host option to point to the machine that runs the server. The server has little impact on performance of the machine that runs it.
Use the script ./bin/run.sh to run HipG jobs on a cluster. The script invokes prun, which submits a job to, in our case, an SGE scheduler. Substitute your own prun or simply edit the run script to invoke something else. An example of a cluster run is:
./bin/run.sh -host <head.node.edu> 16 hipg.app.Visitor BinTree 26
Documents
The HipG paper was published at ICDCN in Jan 2011. The technical report is an extended version of this paper:- E. Krepska, T. Kielmann, W. Fokkink, H. Bal, A high-level framework for distributed processing of large-scale graphs, In (M. Aguilera, H. Yu, N. Vaidya, V. Srinivasan, R. Choudhury, eds.) Proc. the 12th International Conference on Distributed Computing and Networking ICDCN'11, LNCS vol. 6522, pp 155-166, 2011. doi, pdf, bib
- E.Krepska, T.Kielmann, W.Fokkink, H.Bal, Technical Report IR-CS-62: A High-level Framework for Distributed Processing of Large-scale graphs,
Oct 2011, PDF
This technical report is an extended version of the conference paper - it contains more *implementation* details. Please do *not* cite the technical report; rather, use the conference paper.
Have fun with HipG!
Contributors to the project: Questions? Problems? Contact Ela at
.
Amsterdam, 20 Apr 2011