You get high bandwidth but also high latency, so its best for a few large batches rather than lots of small batches.
There is also overhead to uploading and downloading data to and from the GPU. So you want to save more time than you spend there.
This hasn't been true for years. GPU integer compute is quite good these days.
http://docs.nvidia.com/cuda/cuda-c-programming-guide/index.h...
And indeed 32 bit integers and 32 bit floats are essentially the same, except for multiplication where it's fuzzy, but still quite fast.
Certainly modern GPUs are fast enough at integer ops that you shouldn't just assume your problem will be slow on the GPU just because it's integer based. Bitcoin mining (as much as I hate to bring it up) is an obvious counterexample, for instance.