From dce00a02d17f239d211b3a4f0b002190197dd5e4 Mon Sep 17 00:00:00 2001 From: Sebastien Bourdeauducq Date: Thu, 28 Jun 2012 14:22:38 +0200 Subject: [PATCH] doc: performance tools --- doc/dataflow.rst | 23 +++++++++++++++++++++++ doc/get_edge_labels.png | Bin 0 -> 51240 bytes 2 files changed, 23 insertions(+) create mode 100644 doc/get_edge_labels.png diff --git a/doc/dataflow.rst b/doc/dataflow.rst index 6dde22fdd..cd15a55ef 100644 --- a/doc/dataflow.rst +++ b/doc/dataflow.rst @@ -145,6 +145,8 @@ This actor does the opposite job of the ``Combinator``. It receives a token from For example, an Euclidean division actor generating the quotient and the remainder in one step can transmit both using one token. The ``Splitter`` can then forward the quotient and the remainder independently, as integers, to other actors. +.. _structuring: + Structuring actors ================== @@ -296,6 +298,27 @@ A physical graph can be implemented and turned into a synthesizable or simulable Performance tools ***************** +The module ``migen.flow.perftools`` provides utilities to analyze the performance of a dataflow network. + +The class ``EndpointReporter`` is a simulation object that attaches to an endpoint and measures three parameters: + +* The total number of clock cycles per token (CPT). This gives a measure of the raw inverse token rate through the endpoint. The smaller this number, the faster the endpoint operates. Since an endpoint has only one set of synchronous control signals, the CPT value is always superior or equal to 1 (multiple data records can however be packed into a single token, see for example :ref:`structuring`). +* The average number of inactivity cycles per token (IPT). An inactivity cycle is defined as a cycle with the ``stb`` signal deasserted. This gives a measure of the delay between attempts at token transmissions ("slack") on the endpoint. +* The average number of stall cycles per token (NPT). A stall cycle is defined as a cycle with ``stb`` asserted and ``ack`` deasserted. This gives a measure of the "backpressure" on the endpoint, which represents the average number of wait cycles it takes for the source to have a token accepted by the sink. If all tokens are accepted immediately in one cycle, then NPT=0. + +In the case of an actor network, the ``DFGReporter`` simulation object attaches an ``EndpointReporter`` to the source endpoint of each edge in the graph. The graph must not be abstract. + +The ``DFGReporter`` contains a dictionary ``nodepair_to_ep`` that is keyed by ``(source actor, destination actor)`` pairs. Entries are other dictionaries that are keyed with the name of the source endpoint and return the associated ``EndpointReporter`` objects. + +``DFGReporter`` also provides a method ``get_edge_labels`` that can be used in conjunction with NetworkX's ``draw_networkx_edge_labels`` function to draw the performance report on a graphical representation of the graph (for an example, see :ref:`get_edge_labels`). + +.. _get_edge_labels: + +.. figure:: get_edge_labels.png + :scale: 55 % + + Actor network with performance data from a simulation run. + High-level actor description **************************** diff --git a/doc/get_edge_labels.png b/doc/get_edge_labels.png new file mode 100644 index 0000000000000000000000000000000000000000..ee2200c3571f18360dd57dda5c89971108dc0449 GIT binary patch literal 51240 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 Jvd$@?2>>zj_Lu+w literal 0 HcmV?d00001