Hi everyone,

Some of you might already know Green-Marl, Green-Marl compatibility was
even mentioned as a new feature for Giraph 0.2, but for those who don't,
let me give you a quick introduction.

Green-Marl is a domain-specific language tailored to graph algorithms. It
has many features that makes it possible to write graph algorithms very
concise and intuitive. For example, it has built-in constructs for graphs,
node properties, and traversals. A more complete description is given here:
http://ppl.stanford.edu/papers/asplos12_hong.pdf. Apart from the language,
there is also a Green-Marl compiler that compiles the language to different
targets. C++/OpenMP was initially supported, after which support for
Stanford GPS (a Pregel-clone developed at Stanford) was added for a subset
of the features in the Green-Marl language. The big advantage of using a
language like Green-Marl is that it enables you to write implicitly
parallel programs in an intuitive way with the compiler doing most of the
heavy work such as generating the messaging, converting pull-based
operation (remote reading) to push-based operations (message sending), etc.
In the last few months I have worked on a few features in Giraph that
enable Green-Marl to target Giraph as a back-end (namely GIRAPH-127,
GIRAPH-192 and GIRAPH-216). Since these have all been merged, Green-Marl
and Giraph should be compatible as of last week!

Using Green-Marl with Giraph is very simple, as long as you have a working
Hadoop/Giraph environment. Since the Green-Marl compiler is a
source-to-source compiler, it is very easy to use it in an existing set-up.
The steps to using Green-Marl are like this:

   1. Download the Green-Marl compiler from
   https://github.com/stanford-ppl/Green-Marl, run make_dirs.sh in the
   top-level dir and run make in the src dir. A more detailed explanation is
   given in the Github readme.
   2. Compile one of the examples (in the top-level directory) like
   this: bin/gm_comp -t=giraph apps/src/pagerank.gm
   3. Move pagerank.java to the Giraph src directory or your own project,
   package it into a .jar and go!
   4. Explore more examples, modify them and start writing your own

Green-Marl is actively being worked on within Oracle Labs, new features are
being added to the language (such as collection node properties) and
support for these features will be added to the distributed back-ends in
the near future.

In case of questions or suggestions, please send us a message! Feedback is
very much appreciated and people are more than welcome to contribute
everything from small bugfixes to entire back-ends ;-)

- Jan

Reply via email to