Description
It would be convenient if users can construct blocked tensors with the taco TensorBase
API.
For linear algebra it means they can construct blocked matrices/vectors and operate on them using linear algebra, as opposed to 4-tensor operations. E.g. a = B*c
instead of a(i,j) = B(i,k,j,l) * c(k,l)
.
For tensor algebra it means they can construct blocked tensors and operate on them with fewer indices. E.g. A(i,j) = B(i,j,k) * c(k)
instead of A(i,j,k,l) = B(i,j,m,k,l,n) * c(m,n)
.
Underneath the hood we'll still treat everything as high-order unblocked operations. So this is a proposed frontend change that should not change the lowering machinery or backends.
We still have to let the user express the ordering she wants for the loops/unblocked index variables. That is, make such choices as stencil form a(i,j) = B(i,j,k,l) * c(k,l)
vs blocked form a(i,j) = B(i,k,j,l) * c(k,l)
. This can probably be expressed when describing the blocking.