11 research outputs found
iPregel: Strategies to Deal with an Extreme Form of Irregularity in Vertex-Centric Graph Processing
Over the last decade, the vertex-centric programming model has attracted
significant attention in the world of graph processing, resulting in the
emergence of a number of vertex-centric frameworks. Its simple programming
interface, where computation is expressed from a vertex point of view, offers
both ease of programming to the user and inherent parallelism for the
underlying framework to leverage. However, vertex-centric programs represent an
extreme form of irregularity, both inter and intra core. This is because they
exhibit a variety of challenges from a workload that may greatly vary across
supersteps, through fine-grain synchronisations, to memory accesses that are
unpredictable both in terms of quantity and location. In this paper, we explore
three optimisations which address these irregular challenges; a hybrid combiner
carefully coupling lock-free and lock-based combinations, the partial
externalisation of vertex structures to improve locality and the shift to an
edge-centric representation of the workload. The optimisations were integrated
into the iPregel vertex-centric framework, enabling the evaluation of each
optimisation in the context of graph processing across three general purpose
benchmarks common in the vertex-centric community, each run on four publicly
available graphs covering all orders of magnitude from a million to a billion
edges. The result of this work is a set of techniques which we believe not only
provide a significant performance improvement in vertex-centric graph
processing, but are also applicable more generally to irregular applications.Comment: Preprint of paper submitted to 9th Workshop on Irregular
Applications: Architectures and Algorithms (IA3
Performance, memory efficiency and programmability: the ambitious triptych of combining vertex-centricity with HPC
The field of graph processing has grown significantly due to the flexibility and wide
applicability of the graph data structure. In the meantime, so has interest from the
community in developing new approaches to graph processing applications. In 2010,
Google introduced the vertex-centric programming model through their framework Pregel. This consists of expressing computation from the perspective of a vertex, whilst inter-vertex communications are achieved via data exchanges along incoming and outgoing edges, using the message-passing abstraction provided. Pregel ’s high-level programming interface, designed around a set of simple functions, provides ease of programmability to the user. The aim is to enable the development of graph processing applications without requiring expertise in optimisation or parallel programming. Such challenges are instead abstracted from the user and offloaded to the underlying framework. However, fine-grained synchronisation, unpredictable memory access patterns and multiple sources of load imbalance make it difficult to implement the vertex centric model efficiently on high performance computing platforms without sacrificing programmability.
This research focuses on combining vertex-centric and High-Performance Comput-
ing (HPC), resulting in the development of a shared-memory framework, iPregel, which
demonstrates that a performance and memory efficiency similar to that of non-vertex-
centric approaches can be achieved while preserving the programmability benefits of
vertex-centric. Non-volatile memory is then explored to extend single-node capabilities, during which multiple versions of iPregel are implemented to experiment with the various data movement strategies.
Then, distributed memory parallelism is investigated to overcome the resource limitations of single node processing. A second framework named DiP, which ports applicable iPregel ’s optimisations to distributed memory, prioritises performance to high scalability.
This research has resulted in a set of techniques and optimisations illustrated through a shared-memory framework iPregel and a distributed-memory framework DiP. The former closes a gap of several orders of magnitude in both performance and memory efficiency, even able to process a graph of 750 billion edges using non-volatile memory. The latter has proved that this competitiveness can also be scaled beyond a single node, enabling the processing of the largest graph generated in this research, comprising 1.6 trillion edges. Most importantly, both frameworks achieved these performance and capability gains whilst also preserving programmability, which is the cornerstone of the vertex-centric programming model. This research therefore demonstrates that by combining vertex-centricity and High-Performance Computing (HPC), it is possible to maintain performance, memory efficiency and programmability