Hello everyone. I want to tell you about the current status of tensor expression automatic differentiation. The latest version can be found [here](https://github.com/sgrechanik-h/tvm/commits/autodiff). The main improvements are as follows: - I've implemented a solver for systems of linear integer equations. This considerably improves performance of certain operations like dilated and strided convolutions. - I've redesigned the zero elimination module. Now there is a class `Domain` which represents an iteration domain (a set of integer tuples, usually convex), and most of the functions transform domains into other domains (returning objects of the class `DomainTransformation` representing two domains and variable mappings). - I've moved to the new simplifiers. This was important because the Halide simplifier assumes that division is Euclidean which leads to generation of incorrect code.
However there are several problems which are TVM-related and should be addressed before creating pull-requests: 1. TVM bound inference sometimes leads to such tensor bound expansion that the tensors can't fit into memory. This is a known problem (#2104), however nobody knows how to solve it, as it seems. In the linked branch I use a simple fix which however breaks the rest of tvm. 2. Certain parts of TVM still use Euclidean division which sometimes results in incorrect code being generated. Hopefully, this problem will be mostly fixed by @tqchen in #3368. (Although the PR is still unfinished, I use its slightly modified version in the autodiff branch). -- You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub: https://github.com/dmlc/tvm/issues/1996#issuecomment-503520936