PGX provides two different ways for running graph algorithms.
PGX provides built-in implementations for a rich set of popular graph algorithms. The user can simply make use of the built-in implementation if his/her algorithm is one of them.
The PGX built-in algorithms include:
A custom graph algorithm, or any one that is not part of the built-in package, can still be implemented on PGX. For this purpose, PGX adopts a Domain Specific Language (DSL) approach.
More specifically, the user can program the algorithm with Green-Marl, a DSL for graph algorithms, as a front-end language, and submit it to PGX; PGX then compiles the Green-Marl program and executes it.
Note that all the current built-in algorithms of PGX are, in fact, created from the corresponding Green-Marl programs.
The DSL approach provides the following benefits
Productivity: Green-Marl provides high-level graph-specific data types and operators with which the user can program their algorithms intuitively.
Performance: PGX compiles the given Green-Marl program into a PGX-executable binary. In doing so, the Green-Marl compiler applies several optimizations as well as parallelization. Many of these optimizations are only enabled by the high-level information available from the semantic information of Green-Marl DSL.
Portability: Green-Marl helps PGX to maintain forward portability. Green-Marl programs, once written, can still be executable by future versions of PGX — no matter how much of its internal implementation might have changed. Especially important is that future implementation of the distributed PGX will support Green-Marl programs.