Skip to content

Demo_Step2

hpclutz edited this page Dec 15, 2016 · 1 revision

Assessing Performance With POLCA

POLCA acts on the data dependencies (i.e. dataflow) implicit to the C code by analyzing the annotations provided in Step 1. These dependencies can be represented in form of a connected graph, where each node represents a function (set of operations) and each edge the data that the function consumes, respectively produces.

show an example graph here (or just use the one above)

PySDF is a highly advanced tool to analyse the performance of dataflow given a specific distribution and repetition pattern. The distribution thereby reflects the layout of the destination platform, i.e. a network model of the resource, where the bandwidth and latency of a data bus has impact on the overall performance of the code. With the tool, execution on such a layout can be analysed for specific bottlenecks and thus can be used to identify which parts of the code should be improved using (different) transformations.

describe how to use pySDF: can we have an example here of a bad and a good transformation?

Notably, PySDF assumes that performance figures can be provided for the execution time of a given node (i.e. higher-order function). Such data can be gathered by using the SmartDriver tool (see below) which can either estimate the cost on basis of lines of assembly code, or on basis of actual code performance using instrumentation.

anything to show here??