← Back to context

Comment by CamperBob2

20 hours ago

Sounds interesting. How did you back-propagate the coefficient gradients? Just tweak them one at a time, or was there a global algorithm that worked on the whole filter at once?

From memory the entire filter was updated in one symbol period (ie. global)

The symbol rate was 1Msymbol/s and there were 66 taps. The circuit (in an FPGA) ran at a clock rate of 66MHz. In each symbol period the error was calculated based on the output symbol, then an iteration was done over all 66 coefficients, using the error to update them.

Edit: I also remember that to make most efficient use of the FPGA I figured out the minimum precision required in the maths whilst preserving convergence. It was a 4-bit mantissa plus an exponent (3-bit or 4-bit exponent, I can't remember). It's interesting that today's AIs seem to have also figured out that things still work if 4-bit floating point is used, though that is 4-bits including the exponent?

  • > things still work if 4-bit floating point is used, though that is 4-bits including the exponent?

    It is generally 4 bits amortised across an entire block. This works more like block-based mage compression schemes - you put a bunch of statistically-similar floats into the same block, and use your handful of bits to index into a codebook containing the deltas from a 16/32 bit reference value for the whole block