In this episode, we will discuss how to bind a C++ object in Python? We'll try to answer the following questions: How does pybind11 do it? What's different about how we implement it for Tensor? What are some downsides of the approach?
Note from the future: I recorded and then decided I didn't like my follow up episode about how to preserve PyObjects even when they go dead in Python. Maybe some day!
Further reading:
- Python bindings for Tensor in PyTorch https://github.com/.../csrc/autograd/python_variable.cpp
- pybind11 hash map for maintaining object identity https://github.com/.../inc.../pybind11/detail/internals.h...
- Tensor subclasses don't save their properties https://github.com/pytorch/pytorch/issues/47117
(but the situation here is more complicated than I imply in the podcast)