Changes between Version 1 and Version 2 of Visualization


Ignore:
Timestamp:
12/31/69 19:21:53 (54 years ago)
Author:
binoy
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Visualization

    v1 v2  
    11
    22== Code Visualization ==
    3 Execution Graph generated in one of our [wiki:Architecture four phases] can be a useful utility for day-to-day development or tuning and optimization, as it can give developers hints about parallel execution patterns or hot-spot code which is candidate for further manual optimization and code rewriting. As an option to our virtual machine prototype, we generate graphical representation for our execution graph.
     3Execution Graph generated in one of Hydra^''VM''^'s [wiki:Architecture four phases] can be a useful utility for day-to-day development or tuning and optimization, as it can give hints about parallel execution patterns or hot-spot code, which is a candidate for further manual optimizations and code rewriting. We also generate a graphical representation of the execution graph (optional feature of Hydra^''VM''^).
    44
    5 The following commands shows an example of using our visualization feature. The second line uses the generated representation from our engine to generate graph using [http://www.graphviz.org GraphViz] tool.
     5The following commands shows an example of using Hydra^''VM''^'s visualization feature. The second line uses the generated representation from Hydra^''VM''^ to generate graph using the [http://www.graphviz.org GraphViz] tool.
    66{{{
    77./<hydra vm directory>/rvm -X:hydra:dumb=true -X:hydra:class=Test Test > plotXX
     
    1010We can narrow the visualization output to the scope of one class or certain package using '-X:hydra:class=...' and '-X:hydra:package=...' respectively.
    1111
    12 The generated graph composed of ''nodes'' that represents blocks and variables, and ''edges'' that shows the access frequency or the type of operation done on variables (read or write).
    13 Nodes start with 'B' represent basic blocks, and it is followed by a number in which higher order digits are the method identifier and lower order ones for the block identifier. Nodes with 'V' prefix are the variables, the numbers indicate it is global variable if it is larger than 1000, and local variable otherwise. Edges connecting blocks are weighted with the number of times program flow moved between these two blocks, while edges connected to variables represent memory access from blocks to these variables; green edges for read and red ones for write.[[BR]]
     12The generated graph is composed of ''nodes'' that represent blocks and variables, and ''edges'' that show the access frequency or the type of operation  on variables (read or write). Nodes starting with 'B' represent basic blocks, and it is followed by a number in which the higher order digits constitute the method identifier and the lower order digits constitute the block identifier. Nodes with prefix 'V' are the variables. The number following 'V' indicates whether the variable is global or local: global if the number is larger than 1000; local otherwise. Edges connecting the blocks are weighted with the number of times program flow has moved between the respective two blocks. Edges connecting the blocks to the variables represent memory access from the blocks to the variables: green edge represent a read and red represent a write.[[BR]]
    1413
    15 The graph can be simplified by filtering out memory access (variables access) in favor of focusing on control flow by using the following command.
     14The graph can be simplified by filtering out memory access (i.e., variable access) and favoring control flow by the following command.
    1615{{{
    1716./<hydra vm directory>/rvm -X:hydra:dumb=true -X:hydra:class=Test -X:hydra:novar=true Test > plotXX
     
    1918
    2019=== Examples ===
    21 We tried our tool with [http://www-ali.cs.umass.edu/DaCapo/benchmarks.html JOlden benchmark] a Java version of [http://www.martincarlisle.com/olden.html Olden Benchmark] and the following links are the execution graphs generated.
    22  * [/chrome/site/jolden/tsp.pdf TSP]: probabilistic analysis of partitioning algorithms for the traveling-salesman problem in the plane
    23  * [/chrome/site/jolden/em3d.pdf EM3D]: electromagnetic waves through objects in 3 dimensions
     20We used Hydra^''VM''^ to generate execution graphs of the [http://www-ali.cs.umass.edu/DaCapo/benchmarks.html JOlden benchmark], which is a Java version of the [http://www.martincarlisle.com/olden.html Olden Benchmark]. The following links display the execution graphs for a sample set of applications:
     21 * [/chrome/site/jolden/tsp.pdf TSP]: probabilistic analysis of partitioning algorithms for the traveling salesman problem
     22 * [/chrome/site/jolden/em3d.pdf EM3D]: electromagnetic waves through objects in three dimensions
    2423 * [/chrome/site/jolden/health.pdf Health]: Columbian health-care system
    25  * [/chrome/site/jolden/mst.pdf MST]: computes the minimum spanning tree of a graph using Bentley's algorithm
    26  * [/chrome/site/jolden/perimeter.pdf Perimeter]: pomputing perimeters of regions in images represented by Quadtrees
     24 * [/chrome/site/jolden/mst.pdf MST]: minimum spanning tree of a graph using Bentley's algorithm
     25 * [/chrome/site/jolden/perimeter.pdf Perimeter]: perimeters of regions in images represented by Quadtrees
    2726 * [/chrome/site/jolden/power.pdf Power]: decentralized optimal power pricing
    28  * [/chrome/site/jolden/treeadd.pdf TreeAdd]: performs a recursive depth first traversal of a binary tree and sums the value of each element in the tree
     27 * [/chrome/site/jolden/treeadd.pdf TreeAdd]: recursive depth first traversal of a binary tree, and summing up the value of each element in the tree