Open
Description
One reason that our CPU implementation is slower than the GPU implementation is that our GPU implementation short circuits to directly access data, while our CPU implementation first creates views, and then calls lower level copyto!
calls.
This is a known performance issue, and we should directly access data rather than indexing into views.
One reason that we had this was because we envisioned that multithreading could be internally used to improve this performance, and while it can provide some benefit, this doesn't seem to be the right place for threading.
Related issue: #1609.