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

Reply via email to