Commits

Pjotr Kourzanov committed a7f0562

host HTML pix on bitbucket

Comments (0)

Files changed (2)

doc/beseq/beseq.html

 </tableofcontents>
 <p>
 
-<center><p><b>Figure 1: Refinement hierarchy<p><a name="NWref-beseq-hier"><img src="beseq-hier.png" usemap="#beseq_hier"></a></p></b></center>
+<center><p><b>Figure 1: Refinement hierarchy<p><a name="NWref-beseq-hier"><img src="http://bitbucket.org/pjotr/lime/raw/karma/doc/beseq/beseq-hier.png" usemap="#beseq_hier"></a></p></b></center>
 <h2><a name=toc3><a name="NWD1myE43-2">Introduction</a></a></h2><a name="sec:intro"><b>[*]</b></a><!---*- mode:Noweb; noweb-code-mode:bee-mode -*--->
 <p>
 <a name="NWD1myE43-3">In future, do </a><em>buffer minimization</em> (via C unions)
 <h2><a name=toc18>Indices</a></h2>
 <p>
 
-<center><p><b>Figure 2: Refinement hierarchy for beseq module<p><a name="NWref-beseq-hier"><img src="beseq-hier.png" usemap="#beseq_hier"></a></p></b></center>
+<center><p><b>Figure 2: Refinement hierarchy for beseq module<p><a name="NWref-beseq-hier"><img src="http://bitbucket.org/pjotr/lime/raw/karma/doc/beseq/beseq-hier.png" usemap="#beseq_hier"></a></p></b></center>
 
-<center><p><b>Figure 3: Refinement hierarchy for common module<p><a name="NWref-common-hier"><img src="common-hier.png" usemap="#common_hier"></a></p></b></center>
+<center><p><b>Figure 3: Refinement hierarchy for common module<p><a name="NWref-common-hier"><img src="http://bitbucket.org/pjotr/lime/raw/karma/doc/beseq/common-hier.png" usemap="#common_hier"></a></p></b></center>
 
 <h3><a name=toc19><a name="NWD3NtdaB-1D">Chunks</a></a></h3>
 <ul>

doc/beseq/sequel.html

 </tableofcontents>
 <p>
 
-<center><p><b>Figure 1: Refinement hierarchy<p><a name="NWref-sequel-hier"><img src="sequel-hier.png" usemap="#sequel_hier"></a></p></b></center>
+<center><p><b>Figure 1: Refinement hierarchy<p><a name="NWref-sequel-hier"><img src="http://bitbucket.org/pjotr/lime/raw/karma/doc/beseq/sequel-hier.png" usemap="#sequel_hier"></a></p></b></center>
 <h2><a name=toc3><a name="NWD1Cg2Rm-2">Main module</a></a></h2><!---*- mode:Noweb; noweb-code-mode:bee-mode -*--->
 <p>
 <a name="NWD1Cg2Rm-3">Scheme file defines a module for a compiler. This requires dependent modules to be specified as Bigloo </a><code>include</code> forms. Some strage backends like the JVM need to include the Scheme include file.
 <h4><a name=toc6><a name="NWD1Cg2Rm-B">Conversion to the incidence matrix</a></a></h4>
 <p>
 
-<table><tr><td>A transformation to extract the incidence list: a list containing output ports per edge, tagged by containing node, followed by a list containing incoming ports per edge, tagged by containing node (list of </td><td><img src="c81e728d9d4c2f636f067f89cc14862c.png"/></td><td> lists).</td></tr></table>
+<table><tr><td>A transformation to extract the incidence list: a list containing output ports per edge, tagged by containing node, followed by a list containing incoming ports per edge, tagged by containing node (list of </td><td><img src="http://bitbucket.org/pjotr/lime/raw/karma/doc/beseq/c81e728d9d4c2f636f067f89cc14862c.png"/></td><td> lists).</td></tr></table>
 
 <a name="NWD1Cg2Rm-C">First, we query all ports that are outgoing endpoints for </a><code>fifo</code> edges. Then, we query all ports that are connected by <code>fifo</code> edges to such output ports. We rely on the fact that the order of traversal is the same, resulting in a one-to-one correspondence between these two lists, which is what we exploit to post-process the result returned by SXML transformation.
 <p>
 </blockquote></td></tr></table></center></font></pre><pre><font color=black><center><table border width="100%" bgcolor=#F0F8FF><tr><td><pre><a name="NW1Cg2Rm-jWllD-2" href="#NW1Cg2Rm-jWllD-1"><dfn>&lt;exports&gt;+=</dfn></a><a name="exports"/> <b>(<a href="#NWD1Cg2Rm-3">&lt;-U</a> <a href="#NWD1Cg2Rm-4">&lt;-U</a>)</b> <b>[<a href="#NW1Cg2Rm-jWllD-1">&lt;-</a>D<a href="#NW1Cg2Rm-jWllD-3">-&gt;</a>]</b>
 <a name="NW1Cg2Rm-jWllD-2-u1" href="#NWD1Cg2Rm-G"><i>&lt;gxf:delays signature&gt;</i></a>
 </pre></td></tr></table></center></font></pre><p>
-<table><tr><td>This function converts </td><td><img src="c81e728d9d4c2f636f067f89cc14862c.png"/></td><td> incidence lists </td><code><a name="NWD1Cg2Rm-H">a</a></code> and <code>b</code> into an incidence matrix given a set of all connected nodes in the graph <code>d</code>. <code>a</code> and <code>b</code> are required to be same length, and <code>d</code> is required to be the union of all nodes found in <code>a</code> and <code>b</code>. This function also takes care to <code>unquote</code> all expressions involving type sizes, because these shall be evaluated later in Main.</tr></table>
+<table><tr><td>This function converts </td><td><img src="http://bitbucket.org/pjotr/lime/raw/karma/doc/beseq/c81e728d9d4c2f636f067f89cc14862c.png"/></td><td> incidence lists </td><code><a name="NWD1Cg2Rm-H">a</a></code> and <code>b</code> into an incidence matrix given a set of all connected nodes in the graph <code>d</code>. <code>a</code> and <code>b</code> are required to be same length, and <code>d</code> is required to be the union of all nodes found in <code>a</code> and <code>b</code>. This function also takes care to <code>unquote</code> all expressions involving type sizes, because these shall be evaluated later in Main.</tr></table>
 <p>
 <pre><font color=black><center><table border width="100%" bgcolor=#F0F8FF><tr><td><pre><a name="NW1Cg2Rm-ME3KL-5" href="#NWD1Cg2Rm-D"><dfn>&lt;toplevel&gt;+=</dfn></a><a name="toplevel"/> <b>(<a href="#NWD1Cg2Rm-3">&lt;-U</a> <a href="#NWD1Cg2Rm-4">&lt;-U</a>)</b> <b>[<a href="#NW1Cg2Rm-ME3KL-4">&lt;-</a>D<a href="#NW1Cg2Rm-ME3KL-6">-&gt;</a>]</b>
 (define
 <code>Simulate</code> function fills in initial values for <code>simulate</code>.  These are:
 <p>
 
-<table><tr><td>  (1) buffer occupation (</td><td><img src="6bacb9986c36fa85a5cec411d8d9e1cd.png"/></td><td> by default).</td></tr></table>
+<table><tr><td>  (1) buffer occupation (</td><td><img src="http://bitbucket.org/pjotr/lime/raw/karma/doc/beseq/6bacb9986c36fa85a5cec411d8d9e1cd.png"/></td><td> by default).</td></tr></table>
 <a name="NWD1Cg2Rm-M">If the graph contains </a><code>init_fifo</code> edges, then corresponding
 <p>
-<table><tr><td>      entries in </td><td><img src="00534a7a980de9db23c1bdf9cdbde215.png"/></td><td> will contain initial tokens.</td></tr></table>
+<table><tr><td>      entries in </td><td><img src="http://bitbucket.org/pjotr/lime/raw/karma/doc/beseq/00534a7a980de9db23c1bdf9cdbde215.png"/></td><td> will contain initial tokens.</td></tr></table>
 
 (2) bounds array <code>B</code>, which can be empty (null?), in which case
 simulation will use unbounded buffers and be over-optimistic in
     (vector-&gt;array buf '#(0) (<a href="#NWD1Cg2Rm-b">incidence:edges</a> G) 1)
     '()))
 </pre></td></tr></table></center></font></pre><p>
-<table><tr><td>Matrix </td><td><img src="4c5483de1c496c527527b927f80f9bb0.png"/></td><td> with </td><td><img src="fce074edc04dc1c11387fc5498774101.png"/></td><td> </td></tr></table>
+<table><tr><td>Matrix </td><td><img src="http://bitbucket.org/pjotr/lime/raw/karma/doc/beseq/4c5483de1c496c527527b927f80f9bb0.png"/></td><td> with </td><td><img src="http://bitbucket.org/pjotr/lime/raw/karma/doc/beseq/fce074edc04dc1c11387fc5498774101.png"/></td><td> </td></tr></table>
 
-<table><tr><td>  is the incidence matrix of graph </td><td><img src="3001ead682a2ec7da223718d8ab237bd.png"/></td><td>.</td></tr></table>
+<table><tr><td>  is the incidence matrix of graph </td><td><img src="http://bitbucket.org/pjotr/lime/raw/karma/doc/beseq/3001ead682a2ec7da223718d8ab237bd.png"/></td><td>.</td></tr></table>
 
 <a name="NWD1Cg2Rm-N">Simulation process begins by finding fireable actors, i.e., actors that leave the buffer occupation vector with positive and bounded (by </a><code>B</code>) values after firing. These are returned from <code><a href="#NWD1Cg2Rm-V">simulate:fireable-bounds</a></code> function.
 <p>
 
-<table><tr><td>Current buffer occupation is updated on every iteration : </td><td><img src="4a3e7e08d8d24dbb2c48cbcf4f2f3cf5.png"/></td><td> </td></tr></table>
+<table><tr><td>Current buffer occupation is updated on every iteration : </td><td><img src="http://bitbucket.org/pjotr/lime/raw/karma/doc/beseq/4a3e7e08d8d24dbb2c48cbcf4f2f3cf5.png"/></td><td> </td></tr></table>
 <a name="NWD1Cg2Rm-O">The buffer sizes sufficient for correct SDF schedule are assumed to be </a>
 <p>
-<table><tr><td>  equal to maximal buffer sizes seen in the simulation process: </td><td><img src="2a67cc44007effce3be5a8d3b4cea6c2.png"/></td><td> </td></tr></table>
+<table><tr><td>  equal to maximal buffer sizes seen in the simulation process: </td><td><img src="http://bitbucket.org/pjotr/lime/raw/karma/doc/beseq/2a67cc44007effce3be5a8d3b4cea6c2.png"/></td><td> </td></tr></table>
 
-<table><tr><td>  where </td><td><img src="530493bfd3dcb7fec6593c8c346a4ebd.png"/></td><td>.</td></tr></table>
+<table><tr><td>  where </td><td><img src="http://bitbucket.org/pjotr/lime/raw/karma/doc/beseq/530493bfd3dcb7fec6593c8c346a4ebd.png"/></td><td>.</td></tr></table>
 
 <pre><font color=black><center><table border width="100%" bgcolor=#F0F8FF><tr><td><pre><a name="NW1Cg2Rm-3mfGFR-1" href="#NWD1Cg2Rm-O"><dfn>&lt;simulate signature&gt;=</dfn></a><a name="simulate signature"/> <b>(<a href="#NW1Cg2Rm-3S3iVl-2">U-&gt;</a> <a href="#NW1Cg2Rm-jWllD-4">U-&gt;</a>)</b>
 (simulate G b B)
         history
         `((<a href="#NWD3ENQke-1H">,</a>(array-&gt;vector b) <a href="#NWD3ENQke-1H">,</a><a href="#NW1Cg2Rm-ME3KL-4">i</a> unquote (array-&gt;vector <a href="#NWD1Cg2Rm-H">v</a>)))))
 </pre></td></tr></table></center></font></pre><p>
-<table><tr><td>After detection of a cycle </td><td><img src="e384c3a8f0080d7e7833d8e0b3ca8684.png"/></td><td>, we calculate the repetition vector </td><td><img src="b9c41f923a7807abea1fc28ab8c9fdde.png"/></td><td>.</td></tr></table>
+<table><tr><td>After detection of a cycle </td><td><img src="http://bitbucket.org/pjotr/lime/raw/karma/doc/beseq/e384c3a8f0080d7e7833d8e0b3ca8684.png"/></td><td>, we calculate the repetition vector </td><td><img src="b9c41f923a7807abea1fc28ab8c9fdde.png"/></td><td>.</td></tr></table>
 
-<table><tr><td>  Obviously, </td><td><img src="24f530dc6e7abdf262696f88ecb8e1c6.png"/></td><td>, which we check at the end of this computation.</td></tr></table>
+<table><tr><td>  Obviously, </td><td><img src="http://bitbucket.org/pjotr/lime/raw/karma/doc/beseq/24f530dc6e7abdf262696f88ecb8e1c6.png"/></td><td>, which we check at the end of this computation.</td></tr></table>
 
 <pre><font color=black><center><table border width="100%" bgcolor=#F0F8FF><tr><td><pre><a name="NW1Cg2Rm-4dnq3i-1" href="#NW1Cg2Rm-4dnq3i-1"><dfn>&lt;simulate:cycle&gt;=</dfn></a><a name="simulate:cycle"/> <b>(<a href="#NW1Cg2Rm-3S3iVl-2">&lt;-U</a>)</b>
 (let ((<a href="#NW1Cg2Rm-4dnq3i-1">s</a> (cadr found)))
 <p>
 <a name="NWD1Cg2Rm-T">In fact, it can be proven that simulation of this sort will not </a>
 <p>
-<table><tr><td>  require more than </td><td><img src="f77c3faa0d695a9d839e35808258a35a.png"/></td><td> of buffer space.</td></tr></table>
+<table><tr><td>  require more than </td><td><img src="http://bitbucket.org/pjotr/lime/raw/karma/doc/beseq/f77c3faa0d695a9d839e35808258a35a.png"/></td><td> of buffer space.</td></tr></table>
 
 
-<table><tr><td>The process starts by calculating actor activation vector </td><td><img src="a159b61a2221d23bb55d352231cab456.png"/></td><td> which </td></tr></table>
+<table><tr><td>The process starts by calculating actor activation vector </td><td><img src="http://bitbucket.org/pjotr/lime/raw/karma/doc/beseq/a159b61a2221d23bb55d352231cab456.png"/></td><td> which </td></tr></table>
 
-<table><tr><td>  is a </td><td><img src="064ca85ebfbf827b38f7748e090ec817.png"/></td><td> unit vector of size </td><td><img src="24eb46e832268b3a8c101a6ec5c9084a.png"/></td><td> for each actor.</td></tr></table>
+<table><tr><td>  is a </td><td><img src="http://bitbucket.org/pjotr/lime/raw/karma/doc/beseq/064ca85ebfbf827b38f7748e090ec817.png"/></td><td> unit vector of size </td><td><img src="http://bitbucket.org/pjotr/lime/raw/karma/doc/beseq/24eb46e832268b3a8c101a6ec5c9084a.png"/></td><td> for each actor.</td></tr></table>
 
 
-<table><tr><td>Then the impact on buffer occupation: </td><td><img src="f30ccd2aafe0e9e7225bc77575e00b9b.png"/></td><td> is calculated.</td></tr></table>
+<table><tr><td>Then the impact on buffer occupation: </td><td><img src="http://bitbucket.org/pjotr/lime/raw/karma/doc/beseq/f30ccd2aafe0e9e7225bc77575e00b9b.png"/></td><td> is calculated.</td></tr></table>
 
 
-<table><tr><td>For all actors that have a positive impact on buffer sizes </td><td><img src="de6f268021310dd0e42f79bcb451aa12.png"/></td><td>, i.e. doesn't become</td></tr></table>
+<table><tr><td>For all actors that have a positive impact on buffer sizes </td><td><img src="http://bitbucket.org/pjotr/lime/raw/karma/doc/beseq/de6f268021310dd0e42f79bcb451aa12.png"/></td><td>, i.e. doesn't become</td></tr></table>
 <a name="NWD1Cg2Rm-U">negative or too large, activation vectors are summed to produce iteration activation </a>
 <p>
-<table><tr><td>  vector: </td><td><img src="f16fd503149d53cdf899d337cb2b3def.png"/></td><td>.</td></tr></table>
+<table><tr><td>  vector: </td><td><img src="http://bitbucket.org/pjotr/lime/raw/karma/doc/beseq/f16fd503149d53cdf899d337cb2b3def.png"/></td><td>.</td></tr></table>
 
 <a name="NWD1Cg2Rm-V">The actual check is passed through </a><code>pred</code>.
 <p>
 </blockquote></td></tr></table></center></font></pre><p><h4><a name=toc9><a name="NWD1Cg2Rm-g">Input evaluator</a></a></h4>
 <p>
 <code><a name="NWD1Cg2Rm-h" href="#NWD1Cg2Rm-h">sizeof</a></code>
-<table><tr><td> calculations assume Intel x86 </td><td><img src="6364d3f0f495b6ab9dcf8d3b5c6e0b01.png"/></td><td>-bit architecture for now. Later, substituting here values from other architecture shall be trivial. TODO: take the values from generated .types files directly.</td></tr></table><p>
+<table><tr><td> calculations assume Intel x86 </td><td><img src="http://bitbucket.org/pjotr/lime/raw/karma/doc/beseq/6364d3f0f495b6ab9dcf8d3b5c6e0b01.png"/></td><td>-bit architecture for now. Later, substituting here values from other architecture shall be trivial. TODO: take the values from generated .types files directly.</td></tr></table><p>
 
 <pre><font color=black><center><table border width="100%" bgcolor=#F0F8FF><tr><td><pre><a name="NW1Cg2Rm-2cTjJ-1" href="#NWD1Cg2Rm-h"><dfn>&lt;sizeof function&gt;=</dfn></a><a name="sizeof function"/> <b>(<a href="#NWD1Cg2Rm-j">U-&gt;</a>)</b>
 (define
 <h2><a name=toc19>Indices</a></h2>
 <p>
 
-<center><p><b>Figure 2: Refinement hierarchy for sequel module<p><a name="NWref-sequel-hier"><img src="sequel-hier.png" usemap="#sequel_hier"></a></p></b></center>
+<center><p><b>Figure 2: Refinement hierarchy for sequel module<p><a name="NWref-sequel-hier"><img src="http://bitbucket.org/pjotr/lime/raw/karma/doc/beseq/sequel-hier.png" usemap="#sequel_hier"></a></p></b></center>
 
-<center><p><b>Figure 3: Refinement hierarchy for common module<p><a name="NWref-common-hier"><img src="common-hier.png" usemap="#common_hier"></a></p></b></center>
+<center><p><b>Figure 3: Refinement hierarchy for common module<p><a name="NWref-common-hier"><img src="http://bitbucket.org/pjotr/lime/raw/karma/doc/beseq/common-hier.png" usemap="#common_hier"></a></p></b></center>
 
 <h3><a name=toc20><a name="NWD3NtdaB-1U">Chunks</a></a></h3>
 <ul>