View on GitHub

Random Forest Classification on an FPGA

Vivek Krishnan

Download this project as a .zip file Download this project as a tar.gz file

I plan to implement the Random Forest Classification Algorithm on an FPGA. I will then compare energy consumption and performance of the algorithm vs current CPU implementations.


Work Completed So Far

First I will discuss the random forest training algorithm that I plan to use in my system. Even though the training algorithm for random forests is not within the scope of my project, it is imperative to testing that I have some control for generating random forests across platforms. In addition, since memory bounds are the main concern in implementing a forest on an FPGA, I found a random forest algorithm that would create exactly n depth d trees, so that the overall memory usage would be predictable.

I have implemented the C++ code for the random forest classifier on the CPU. I am in the progress of trying to optimize the code possibly using SIMD instructions, but for now the OpenMP constructs seem to have the best performance on specific datasets and forests (specific implies hard-coded forests). In addition, I have also designed the datapath of the FPGA implemention and will update the project page soon accordingly in order to reflect this.

Status on Checkpoints

I am currently at pace with the goals I have set for myself in the schedule and am well into designing my System Verilog system for the next week. However, I do not think I will be able to focus on implementing the algorithm on the GPU; I'd rather do a thourough analysis on the CPU and FPGA.

Demo for Competition

During my demo, I will display images that show the application of the random forest classifier on the image as well as the original images for comparison. In addition, I will display the compute times and approximate energy cost for both the FPGA and CPU as functions against data-size.