I’ve been looking into the TVM lower/build pipeline recently and have encountered an unusual duplication around the ‘driver’. In particular, we have two files
src/driver/driver_api.cc
and python/tvm/driver/build_module.py
which both seem to independently define almost identical functionality. What has motivated this design rather than using the ffi to just expose the C++ functionality through Python? I’m interested in making some changes in this part of the code so it would be good to know whether I have to make identical changes in both files.
Additionally, I’m seeing a strange ‘mix-and-match’ between these two files when invoking relay.build
. In particular, we seem to use the Python version of lower
but the C++ version of build
. I can find no obvious motivation for this behaviour in the code.
Any insights would be greatly appreciated!