* fp32 (not tf32) training/inference speed is increased (+50~80%)
* fp16 training/inference speed is greatly increased when your layer support tensor core (channel size must be multiple of 8).
* int8 op is ready, but we still need some time to figure out how to run int8 in pytorch.
* doesn't depend on pytorch binary.
* [doesn't depend on pytorch binary](docs/FAQ.md#What-does-no-dependency-on-pytorch-mean), but you may need at least pytorch >= 1.6.0 to run spconv 2.x.
* since spconv 2.x doesn't depend on pytorch binary (never in future), it's impossible to support torch.jit/libtorch inference.
-[What does no dependency on pytorch mean?](#What-does-no-dependency-on-pytorch-mean)
## What does no dependency on pytorch mean?
This means spconv 2.x doesn't have pytorch shared library dependency when you use ```ldd``` to inspect required shared objects of our shared library.
This **doesn't** mean spconv 2.x can run in pytorch with **any** version.
Most of pytorch extension repos use official pytorch extension build system, libraries built from these extension depend on pytorch c++ library and impossible to match requirements of [manylinux](https://github.com/pypa/manylinux). The official python package server, [PyPI](https://pypi.org/), and its mirrors, only accept manylinux package for linux platforms. So we must remove all pytorch stuffs from our c++ code to create manylinux packages.
Spconv 2.x use two core feature of pytorch to match manylinux requirements: ```torch.Tensor.data_ptr``` and ```torch.cuda.current_stream().cuda_stream```. the first one is used to get pointer of ```torch.Tensor```, the second part is used to get cuda stream pointer. We don't need pytorch anymore in c++ code when these features are available in pytorch.