~/imallett (Ian Mallett)

CS 6960.001 "Energy-Aware Ray Tracing" Spring 2015

by Ian Mallett (ian AT geometrian.com)

Assignment 1:

  1. Images (click to enlarge):
    Gradient: Mandelbrot:
  2. Simulator Output:
    helloworld.out | gradient.out | mandelbrot.out
  3. Gradient:
    1. Cycles: \(1,\!065,\!031\)
    2. Instructions: \(360,\!492\)
    3. Not equal. Some instructions take more than one cycle. Additionally, some instructions stall waiting for others. Thus, the number of cycles is never less than the number of instructions, and will generally be larger.
    4. If some instructions could be made to take less time, this would improve performance. This example is highly compute-bound. Adding more functional units would also reduce resource conflicts for computing these expensive instructions.
    1. Cycles: \(16,\!868,\!044\)
    2. Instructions: \(12,\!112,\!167\)
    3. Same as gradient.
    4. Same as gradient.

Assignment 2:

  1. No.
  2. pathtracer.zip
  3. analysis.pdf
  4. Time required: Took only about an hour or so to get set up and complete first part. The BVH part was trickier and took longer. Maybe [2.0,3.5] hours. Though I couldn't resist making at least minor changes to the provided code while working, I still spent some time making tweaks. Doing the analysis took significantly longer. Between setting up, working through simulator bugs, running, and writing it all up it probably took fourish more hours.
  5. Assignment wasn't difficult per-se. I only ran into trouble on the second part. Reading the lecture notes carefully on the BVH layout was enough, though. I ran into a few configuration issues that shouldn't have existed:
    • Linux LDFLAGS needs -lboost_thread. Looks like the CADE Linux one needs it too.
    • CXXFLAGS/TRAXCFLAGS needs -std=c++11. It's 2015 now.
    • <limits> doesn't exist. This is annoying for e.g. std::numeric_limits<float>::infinity(). Might be related to this bug.
    • The help flags for run_rt at least are dated.
    • The error message for a missing --icacheparams is "Unable to find dcacheparams.txt".
    • The makefile doesn't care whether the header files have changed; you actually have to touch the .cc file to trigger a rebuild.
    • The packed data's endianness is important; it appears to be big-endian. <- oops. Not really.
    • Simulator bugs we worked through
3a.7z | 3c.7z

Assignment 3:

  1. Analysis
  2. code.zip
  3. Probably four-ish hours of solid work. Miscellaneous extra time was spent on messing with the simulator and improving the code. Still need to improve the BVH, in particular.
  4. Assignment was not difficult. Playing with bad/good access patterns was actually fun. I didn't get to work much on the previous parts much, though, since I'm in research mode.


Final Report:

Ian Mallett - Contact -
- 2019 - Creative Commons License