Generating Code Variants Using Data Flow Graphs
College of Engineering
Science and Engineering advancements depend more and more on computational simulations. These simulation are time consuming; as such, they are written in parallel to reduce execution time. Efficient parallel performance requires balancing aspects of the execution including, data locality, parallelism, and recomputation; code optimization choice and order of application have profound impact on the achieved results. However, choosing the optimizations in non-trivial. We aim to ease this process through the use of Data flow graphs. . Data flow graphs provide an intuitive visualization of an algorithmic process. In traditional dataflow graphs the data storage is implicit as the focus is on the computational requirements and legality. We developed Modified Macro Dataflow Graphs that target the memory traffic instead, as memory interaction are often the most expensive operations in terms of performance. Each transformation differs in the magnitude of the memory bandwidth and computation latency. In order to quantitatively compare each transformation, we use arithmetic intensity of the transformed schedule and measure it against the roofline model. Due to intrinsic nature of hardware, standard measures capturing arithmetic intensity fail to account for memory sparsity, such as cached data, and produce imprecise measurements. The Macro Dataflow Graphs allow to differentiate each computation node and its memory access, allowing to calculate the arithmetic intensity on a finer scale. In this work, we are interested to see how this method compares to the experimental results.
Tulepbergenov, Azamat and Davis, Eddie, "Generating Code Variants Using Data Flow Graphs" (2018). 2018 Undergraduate Research and Scholarship Conference. 55.