Difference between revisions of "Solo Act"

From CDOT Wiki
Jump to: navigation, search
(Assignment 2)
(Assignment 2)
Line 26: Line 26:
  
 
One of the immediate problems I realized with this project was that the target functions were far too large. Parallelization would require possibly three or more kernels, which was beyond the scope of this assignment. Instead I decided to focus on the bsp tree portion of the code, and decouple this portion from actual dungeon generating logic.  
 
One of the immediate problems I realized with this project was that the target functions were far too large. Parallelization would require possibly three or more kernels, which was beyond the scope of this assignment. Instead I decided to focus on the bsp tree portion of the code, and decouple this portion from actual dungeon generating logic.  
 +
  
 
[[File:Sourcedecouple.png|500px]]
 
[[File:Sourcedecouple.png|500px]]
 +
  
 
The decoupled source-code can be seen above, along with the timing logic in it's respective main function.
 
The decoupled source-code can be seen above, along with the timing logic in it's respective main function.
 +
  
 
[[File:Mytreedia.png|500px ]]
 
[[File:Mytreedia.png|500px ]]
  
To parrellize a bsp tree required some analysis which can be seen above.
+
 
 +
To parrellize a bsp tree required some analysis which can be seen above. The tree itself must be stored in memory according to some design. The way I decided to organize the leafs and nodes of the tree, in a linear context, can be seen below. The above image shows how the tree design corresponds to the linear arrangement in memory.
 +
 
  
 
[[File:Warpss.png|500px]]  
 
[[File:Warpss.png|500px]]  
  
The image above reflects the design I chose with respect to the warps and thread behavior.
+
 
 +
The image above reflects the design I chose with respect to the warps and thread behavior. Each warp processes a single 'round' of the tree, utilizing as many threads equivalent to the number of leaves in that 'round'.
 +
 
  
 
[[File:Outputgood.png|500px]]
 
[[File:Outputgood.png|500px]]
  
  
[[File:CKernelgood.png|500px]]
 
 
 
  

Revision as of 19:52, 13 April 2018

Solo Act

Team Members

  1. Nick Simas, All of the things.

Progress

Assignment 1

Profile

For assignment 1, I selected an open-source dungeonGenerator project from github.

https://github.com/DivineChili/BSP-Dungeon-Generator/

Dungeon bsp2.png Dungeon bsp7.png

As you can see from the above images, the purpose of this program is to generate a map image for game content. The program achieves this by repetitively splitting a 2d space using a binary partition algorithm.

The project was written for windows, so I decided to initially profile with the built in Visual Studio profiler.

NjsimasProfileresults.png

The above image shows the function inclusive time percentage. The results are 22% and 15% respectively. The only entries higher are Main and library components used for printing. This demonstrates that the majority of source code processing is occurring in these two functions. Both of them would thus are hotspots and may benefit from parallelization.

Assignment 2

Parallelize

One of the immediate problems I realized with this project was that the target functions were far too large. Parallelization would require possibly three or more kernels, which was beyond the scope of this assignment. Instead I decided to focus on the bsp tree portion of the code, and decouple this portion from actual dungeon generating logic.


Sourcedecouple.png


The decoupled source-code can be seen above, along with the timing logic in it's respective main function.


Mytreedia.png


To parrellize a bsp tree required some analysis which can be seen above. The tree itself must be stored in memory according to some design. The way I decided to organize the leafs and nodes of the tree, in a linear context, can be seen below. The above image shows how the tree design corresponds to the linear arrangement in memory.


Warpss.png


The image above reflects the design I chose with respect to the warps and thread behavior. Each warp processes a single 'round' of the tree, utilizing as many threads equivalent to the number of leaves in that 'round'.


Outputgood.png



Kerneldecouple.png



Njsimasgraph.png

Assignment 3

Optimize