How to speed up local inhibition

I was just triaging Github and ran into this interesting issue:

This plan has been on the shelf for years, but I don’t know what happened to Hideaki Suzuki. He created slides and data in the attachment to the issue.


I actually implemented this for my codebase in late 2014 under a function named after him not to forget. The version I used scales the inhibition applied to the neighbors with proximal overlap (fixed inhibition in H. Suzuki proposal) and the number of resulting active columns is not fixed too (fixed sparsity in H. Suzuki proposal). The speedup with those additions (vanilla should be faster) was around 10x on 2D topology if I remember correctly. His proposal is still noticeably slower than global inhibition but a great speedup nonetheless.

For anyone interested in working on this, here is a link to very short 2 functions from my codebase (C++) that may be helpful. First is the vanilla version with pseudocode, second is with overlap scaled inhibition.