In digital systems, a multiplier multiplies two signals together. The premise is pretty simple: it’s just like grade school multiplication but with binary numbers.

Problems

The problem with multipliers is that they have a massive circuit cost, in terms of space and silicon. For an bit adder, our output is at most gates wide. To add an extra bit to the inputs means simply adding an extra gate. But to multiply two numbers together takes gates.

Since machine learning involves many multiply/add operations (as part of matrix multiplication, also called multiply-and-accumulate), this means that finding efficient ways to multiply is a big challenge.