tvm icon indicating copy to clipboard operation
tvm copied to clipboard

[TVM PyTorch Integration] libstdc++ CXX11 ABI Compatibility & boolean tensor support

Open juda opened this issue 3 years ago • 0 comments

This PR solves two issues:

  1. The compatibility of libstdc++ CXX11 ABI. Currently, the official PyTorch distribution uses old symbols from libstdc++, which conflicts with the symbols used by TVM. The issue was discussed here before. We address this issue by compiling the code snippets involving TVM and Torch separately, with their right libstdc++ CXX ABI. The TVM-related codes (RuntimeModuleWrapperTVM.cc) are built under the new CXX11 ABI, while the Torch-related codes (RuntimeModuleWrapperTorch.cc) are built under the same CXX11 ABI as the installed PyTorch, and linked together by a pure C header (runtime_bridge.h).

  2. The lack of the support of boolean tensor. Currently, If we tried to use optimze_torch with an input of boolean tensor, it will fail because it’s not supported by DLPack (https://github.com/dmlc/dlpack/issues/75). We might want to work around it since some models use boolean tensor. We address this issue by extending the DLTensor with an extra is_bool field, guiding us to convert NDArray and DLTensor with the correct type. If the DLTensor is not boolean, the behavior of data transformation is the same as the previous codes.

@yelite @masahi @junrushao1994

juda avatar Jul 29 '22 09:07 juda