User Tools

Site Tools


Sidebar

<menu col=1,align=center>

<item>Documentation||[[lara:documentation]]|{{:lara:img:dictionary.png?25}}</item>
<item>Downloads||[[lara:downloads]]| {{:lara:img:projects.png?25}}</item>
<item>Tutorials||[[lara:tutorial]]|{{:lara:img:books.png?25}}</item>
<item>Other uses of LARA||[[lara:other]]|{{:lara:img:globe.png?25}}</item>
<item>About Us||[[https://sites.google.com/site/specsfeup/]]| {{:lara:img:specslogo.png?25}}</item>
<item>Projects||[[lara:usage]]| {{:lara:img:math.png?25}}</item>

</menu>

/* They are empty */ /* <item>FAQ||faq|</item> */ /* <item>Dev. Team||team| </item> */ /* <item>About LARA||about|</item> */

manet:docs:actions

MANET Actions

This page presents the set of actions that one can perform over a selected join point. These actions will transform the source code and have two main goals. They can be used to improve the performance of the application or they can change the program so that we have a normalized representation that is easier to analyze.

Action Parameters Target Join Point Description
Type Description
Clone String The new name. function Clones the function and assigns the clone a new name.
Interchange loop The other loop. loop Performs Loop Interchange on the selected loop and the loop passed as argument.
Tile Integer The block size. loop Performs Loop Tiling on the selected loop.
Unroll Integer The unroll factor. loop Performs Loop Unroll on the selected loop. If the unroll factor passed as argument is 0, the loop will be fully unrolled. To apply this action, it must be possible to calculate the number of iterations. If the unroll factor is not a divisor of the number of iterations, an epilogue FOR loop will be used to iterate over the remainder of the iterations.
UnrollAndJam Integer The unroll factor. loop Performs Loop Unroll and Jam on the selected loop. This is still and experimental implementation. Three conditions must be met in order for this transformation to be applied: 1) the loops need to be perfectly nested, 2) it must be possible to calculate the iteration count and 3) the unroll factor must be a divisor of the iteration count.
SingleDeclarator n.a. n.a. program Changes the code of every function so that each declaration has at most one declarator. For instance, int a, b, c; becomes int a; int b; int c;.
AssignmentExpansion n.a. n.a. program Assignment expressions that use augmented assignment operators are “expanded” and use the normal assignment operator. For instance, sum += a[i]; becomes sum = sum + a[i];.
UnaryExpansion n.a. n.a. program Unary expressions with increments or decrements are “expanded” safely and use a normal assignment operator. We only apply this transformation when we are sure that the evaluation order is not relevant, i.e., when it does not matter if the operator is prefix or postifx. For instance, for(i=0; i<N; i++) becomes for(i=0; i<N; i=i+1);.
NormalizeReturn n.a. n.a. program Transforms every function so that each one always has at least a single return statement. Furthermore, every return statement returns only a single temporary variable that holds the value of the expression previously returned. For instance, return a + 2; becomes int ret_0 = a + 2; return ret_0;.
RemoveInitialization n.a. n.a. program Removes the initialization code from every variable declaration. This code is inserted after all the declarations of that scope (preserving ANSI C semantics). For instance, int a = 1; int b; becomes int a; int b; a = 1;.
ArrayAssignmentDecomposition n.a. n.a. program Changes every assignment to an array position to use a temporary variable that holds the value of the expression previously used. For instance, a[i] = sum * factor[i]; becomes int arr_tmp_0 = sum * factor[i]; a[i] = arr_tmp_0;.
manet/docs/actions.txt · Last modified: 2019/09/22 15:47 (external edit)