1: \begin{abstract}
2:
3: Pregel is a popular distributed computing model for dealing with large-scale graphs.
4: However, it can be tricky to implement graph algorithms correctly and efficiently in Pregel's vertex-centric model, especially when the algorithm has multiple computation stages, complicated data dependencies, or even communication over dynamic internal data structures.
5: Some domain-specific languages (DSLs) have been proposed to provide more intuitive ways to implement graph algorithms, but due to the lack of support for \emph{remote access} --- reading or writing attributes of other vertices through references --- they cannot handle the above mentioned dynamic communication, causing a class of Pregel algorithms with fast convergence impossible to implement.
6:
7: To address this problem, we design and implement Palgol, a more declarative and powerful DSL which supports remote access.
8: In particular, programmers can use a more declarative syntax called \emph{chain access} to naturally specify dynamic communication as if directly reading data on arbitrary remote vertices.
9: By analyzing the logic patterns of chain access, we provide a novel algorithm for compiling Palgol programs to efficient Pregel code.
10: We demonstrate the power of Palgol by using it to implement several practical Pregel algorithms, and the evaluation result shows that the efficiency of Palgol is comparable with that of hand-written code.
11:
12: \end{abstract}
13: