torch-mlir/test
Sean Silva c837dbb077 Properly import the entire torch::jit::CompilationUnit
This primarily unlocks proper handling of free functions (that is,
functions that are not methods of any torch.nn.Module).

Recommended review order:
- `ivalue_importer.cpp` + `ivalue_import/functions*.py`
- `GlobalizeObjectGraph.cpp` + test case
- misc other stuff

The `torch::jit::CompilationUnit` is basically a backing store or
"context" holding all the possible functions in the program. The
previous code was not explicitly accessing this data structure, since it
just imported the `torch::jit::Function`'s that it saw attached to
methods.

Subtly, any time a TorchScript module called into a free function, the
free function gets incorporated into the torch::jit::CompilationUnit,
but doesn't show up anywhere when dumping the module, except in the
curious pattern:

```
%5 : Function = prim::Constant[name="adaptive_avg_pool2d"]()
%6 : Tensor = prim::CallFunction(%5, %input.1, %4)
```

That is, calls are indirect calls, and are accessed via `prim::Constant`
materializing a function object. Even stranger, the `name` attribute here
doesn't really even tell the full story -- it doesn't correspond to
anything. It turns out that the c10::FunctionType itself actually holds
a pointer to the `torch::jit::Function` in the compilation unit
directly (so there is actually no indirection in prim::CallMethod,
because any two values of the same FunctionType call the same
function!). E.g. when converting the IR to bytecode, the "name" is
ignored [code link](1d6bd15790/torch/csrc/jit/runtime/interpreter.cpp (L937)).
We do import `prim::CallFunction` as a `std.call_indirect` though
because it's more braindead to do it that way (it gets canonicalized to
a direct call easily).
2021-03-01 12:08:01 -08:00
..
Backend/Iree Sever C++ level depend on IREE and rebase on exe and python interface. 2020-11-16 21:32:56 -08:00
CAPI Add prim::Print and fix prim::CallMethod 2021-02-10 15:15:56 -08:00
Conversion Bump llvm-project to c68d2895a1f4019b387c69d1e5eec31b0eb5e7b0 2021-02-22 12:23:24 -08:00
Dialect Properly import the entire torch::jit::CompilationUnit 2021-03-01 12:08:01 -08:00
Python Bump llvm-project to be7352c00d51f4358db3a23ed6a077f7cb48eafd 2021-01-21 11:16:55 -08:00
RefBackend Bump llvm-project to bc556e5685c0f97e79fb7b3c6f15cc5062db8e36 2021-01-08 14:18:09 -08:00
npcomp-run-mlir Bump llvm-project to c68d2895a1f4019b387c69d1e5eec31b0eb5e7b0 2021-02-22 12:23:24 -08:00
CMakeLists.txt Sever C++ level depend on IREE and rebase on exe and python interface. 2020-11-16 21:32:56 -08:00
lit.cfg.py Enable building using LLVM_EXTERNAL_PROJECTS. (#152) 2021-01-26 11:43:43 -07:00
lit.site.cfg.py.in Enable building using LLVM_EXTERNAL_PROJECTS. (#152) 2021-01-26 11:43:43 -07:00