I believe historically dimensions were indexed because the exact order made a huge difference for performance. Hand coded CUDA would only work for the exact order it was designed for.
Now that nearly all frameworks have one/many optimisation passes which can transpose/rearrange/split data transparently for performance, this reason seems to go away.
Now that nearly all frameworks have one/many optimisation passes which can transpose/rearrange/split data transparently for performance, this reason seems to go away.