Accomplishments
This week I’ve been working on the FPU Job Manager Operations. I’ve been following my previous process of describing the FSM control signals state-by-state, then simply copying them over into SystemVerilog. Here’s what I have so far:
Operation | Described? | Implemented? | Testbench? |
Linear Forward | Yes | Yes | Yes |
Linear Backward | Yes | Yes | |
Linear Weight Gradient | Yes | Yes | |
Linear Bias Gradient | Yes | Yes | |
Convolution Forward | Yes | ||
Convolution Backward | Yes | Yes | |
Convolution Weight Gradient | Yes | ||
Convolution Bias Gradient | Yes | ||
MaxPool Forward | Yes | ||
MaxPool Backward | |||
ReLU Forward | Yes | ||
ReLU Backward | Yes | ||
Softmax Forward | |||
Softmax Backward | |||
Cross-Entropy Backward | |||
Flatten Forward | Yes | ||
Flatten Backward | Yes | Yes | |
Parameter Update | Yes |
Last week, I had the Convolutional Forward and Linear Forward operations described, and only the Linear Forward operation implemented.
I’ve consolidated all of the weight and bias operations into a single “Parameter Update” operation, since they’re all the exact same and the shape of each tensor can be read from memory.
Another work-around I’m implementing is for the Softmax Backward operation. I haven’t been able to find a working floating-point exponent calculator in Verilog, so in the case that I’m unable to find one, I will simply subtract the output from the label, which in terms of optimization will have the same effect as taking the backwards gradient of the softmax direction.
Schedule & Accomplishments for Next Weeks
I’ll be finishing up the FPU Job Manager operations over the next couple days, then preparing the Model Manager for the Demo.