Prom is a distributed framework targeted at the class of graph algorithms that need to propagate messages between vertices while the structure of the graph is fixed. Many graph algorithms fall into this class, such as Belief Propagation and Personalized Pagerank. Prom supports vector messages, flexible update functions, and prioritized block scheduling. These features are important to accommodate a broad class of algorithms and to accelerate algorithms. The design of Prom is introduced in the paper Scalable Distributed Belief Propagation with Prioritized Block Updates, (Jiangtao Yin and Lixin Gao) in CIKM 2014. The paper uses Belief Propagation as a running example.
Prom is a MPI based framework, which can run on hundreds of machines or in the cloud. It is implemented by modifying Maiter.
Download the package, Prom-0.1.tar.gz,
Before using Prom, you will need to modify conf/mpi-cluster to point out the machines that Prom will be running on. Also, make sure every machine has one copy of Prom.
To run the built-in algorithm (Belief Propagation) on your own data, you must preprocess the data. The input data needs to be split into a number of partitions. The number of partitions should be the same with the number of workers you configured.
Then type the
following command on any worker machine to run the algorithm (e.g., the
SumProduct verion of Belief Propagation).
"./prom --runner=SumProduct --workers=? --graph_dir=? --result_dir=? --num_nodes=? --snapshot_interval=? --portion=? --termcheck_threshold=?". Replace the question mark with your settings.
If you would like to implement other graph algorithms on Prom. Several things need to be done.