-
Notifications
You must be signed in to change notification settings - Fork 117
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add faster Image Interface - use it to optimize Pooling, Convolution #206
Comments
cc @ericmjonas |
I have started some work on this here's a summary of some early results. I am benchmarking imaages of various sizes (given as "bytes") and have three implementations:
|
Just for posterity here - The last 3 columns are GB/s of |
We don't necessarily iterate over images in a couple of common cases in a fast way, e.g.
Is only fast if the image is in channel/column major order (because of cache-locality). This slows down the Pooler and the Convolver by up to an order of magnitude in the case that their inputs are not in exactly the right order.
One fix would be to come up with a nice
Iterator
interface that lets you iterate over images and get back anTuple4[Int,Int,Int,Double]
of the image in "natural" order with position and pixel value We need to figure out a good way to do this efficiently. One potential way to do this is to make the iterator@specialized
on tuples of this sort.Let's see if we can rewrite the pooler and the convolver to take advantage of an interface like this and push both to respectable FLOP/Memory Throughput levels regardless of Image Representation used.
The text was updated successfully, but these errors were encountered: