Research Article

Traversal Caches: A Framework for FPGA Acceleration of Pointer Data Structures

Algorithm 2

Pseudocode of the software portion of the (similarity-based) traversal cache implementation of Barnes-Hut.
def BarnesHutTC_SW (TimeSteps, Bodies):
 Tree = BuildTree (Bodies)
 for # of TimeSteps:
  TreeSerial = SerializeTree (Tree)
  BodiesSerial = SerializeOrderedBodies (Tree)
  PopulateCache (BodiesSerial, TreeSerial)
  ClearTree (Tree)
  StartFPGA ()
  while FPGABusy ():
   if FPGAHasData ():
    PartialBuildTree (Tree, ReadFPGAResults())
 return GetBodies (Tree)