Changes between Version 1 and Version 2 of Visualization
- Timestamp:
- 12/31/69 19:21:53 (55 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Visualization
v1 v2 1 1 2 2 == 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.3 Execution 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''^). 4 4 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.5 The 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. 6 6 {{{ 7 7 ./<hydra vm directory>/rvm -X:hydra:dumb=true -X:hydra:class=Test Test > plotXX … … 10 10 We can narrow the visualization output to the scope of one class or certain package using '-X:hydra:class=...' and '-X:hydra:package=...' respectively. 11 11 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]] 12 The 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]] 14 13 15 The graph can be simplified by filtering out memory access ( variables access) in favor of focusing on control flow by usingthe following command.14 The graph can be simplified by filtering out memory access (i.e., variable access) and favoring control flow by the following command. 16 15 {{{ 17 16 ./<hydra vm directory>/rvm -X:hydra:dumb=true -X:hydra:class=Test -X:hydra:novar=true Test > plotXX … … 19 18 20 19 === 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 plane23 * [/chrome/site/jolden/em3d.pdf EM3D]: electromagnetic waves through objects in 3dimensions20 We 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 24 23 * [/chrome/site/jolden/health.pdf Health]: Columbian health-care system 25 * [/chrome/site/jolden/mst.pdf MST]: computes theminimum spanning tree of a graph using Bentley's algorithm26 * [/chrome/site/jolden/perimeter.pdf Perimeter]: p omputing perimeters of regions in images represented by Quadtrees24 * [/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 27 26 * [/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 sumsthe value of each element in the tree27 * [/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