# Custom Code Generation for a Graph DSL

**Authors:** Bikash Gogoi, Unnikrishnan Cheramangalath, Rupesh Nasre

arXiv: 1903.01665 · 2019-03-06

## TL;DR

This paper presents an adaptive extension to the Falcon DSL that enables automatic code generation for various graph processing paradigms and hardware backends without modifying the original algorithm specifications.

## Contribution

It introduces a method to adapt an existing graph DSL, Falcon, for multiple execution models and hardware targets while preserving the original code structure.

## Key findings

- Successfully generated code for vertex-based and edge-based processing.
- Enabled automatic switching between synchronous and asynchronous execution.
- Supported code generation for CPU and GPU backends.

## Abstract

Graph algorithms are at the heart of several applications, and achieving high performance with them has become critical due to the tremendous growth of irregular data. However, irregular algorithms are quite challenging to parallelize automatically, due to access patterns influenced by the input graph, which is unavailable until execution. Former research has addressed this issue by designing domain-specific languages (DSLs) for graph algorithms, which restrict generality but allow efficient code-generation for various backends. Such DSLs are, however, too rigid, and do not adapt to changes in backends or to input graph properties or to both. We narrate our experiences in making an existing DSL, named Falcon, adaptive. The biggest challenge in the process is to not change the DSL code for specifying the algorithm. We illustrate the effectiveness of our proposal by auto-generating codes for vertex-based versus edge-based graph processing, synchronous versus asynchronous execution, and CPU versus GPU backends from the same specification.

## Full text

_Full body text omitted from this summary view._ Fetch the complete paper as Markdown: https://tomesphere.com/paper/1903.01665/full.md

## Figures

21 figures with captions in the complete paper: https://tomesphere.com/paper/1903.01665/full.md

## References

24 references — full list in the complete paper: https://tomesphere.com/paper/1903.01665/full.md

---
Source: https://tomesphere.com/paper/1903.01665