Impressive! Mine linked here starts having trouble at around 2000 units on my CPU. Shows how ridiculously parallelisable this is.
My neighbourhood implementation is the naive n^2 loop, so it's probably trivial to make it better. Quadtrees, or even just simple caching / zoning would probably allow me to dish out many more boids.
It also doesn't help that in order to be easy as a workshop, it's written in a way that's easy to implement, but slow to execute.