Custom Code Generation for a Graph DSL
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 gra...
Gespeichert in:
Hauptverfasser: | , , |
---|---|
Format: | Artikel |
Sprache: | eng |
Schlagworte: | |
Online-Zugang: | Volltext bestellen |
Tags: |
Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
|
Zusammenfassung: | 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. |
---|---|
DOI: | 10.48550/arxiv.1903.01665 |