Towards a Programming Paradigm for Reconfigurable Computing:
Asynchronous Graph Programming
Abstract
The shift towards reconfigurable systems -hardware
and software that adapt themselves to an external context-
promises to unlock unprecedented performance, power consumption, and
quality of service. However, reconfiguration imposes several challenges
on the design of cyber-physical systems. Current design practices,
including software frameworks and programming languages, are
ill-prepared for supporting reconfiguration.
In this paper, we explore Asynchronous Graph Programming, a programming
paradigm and an associated model of computation designed for efficient
and automated parallelization across processing elements, efficient
reconfiguration (i.e., mapping of computational tasks across processing
elements), and combining synchronous and asynchronous I/O handling
within the same conceptual programming model. We also introduce an
analytical model of parallelization, unlocked by Asynchronous Graph
Programming, that can inform reconfiguration strategies.
We analyze the implications of our model through an analysis of
reconfiguration scenarios given a program’s characteristics; our
analysis quantifies the benefits of reconfiguring software for higher
levels of parallelism, given an amount of data left to process. We also
introduce Horde, an open source Asynchronous Graph Programming
interpreter, and use it to empirically validate the performance
advantage of its automatic parallelism capabilities; in our experiments,
automatic parallelization from one to four cores improves average case
execution time by a factor of 2 and worst case execution time by a
factor of 3.
This manuscript has been accepted at the IEEE International Conference
on Emerging Technologies and Factory Automation (ETFA 2020)