diff options
Diffstat (limited to 'docs/cpp/source/notes/faq.rst')
-rw-r--r-- | docs/cpp/source/notes/faq.rst | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/docs/cpp/source/notes/faq.rst b/docs/cpp/source/notes/faq.rst new file mode 100644 index 0000000000..37a1a609f3 --- /dev/null +++ b/docs/cpp/source/notes/faq.rst @@ -0,0 +1,34 @@ +FAQ +--- + +Listed below are a number of common issues users face with the various parts of +the C++ API. + +C++ Extensions +============== + +Undefined symbol errors from PyTorch/ATen +***************************************** + +**Problem**: You import your extension and get an ``ImportError`` stating that +some C++ symbol from PyTorch or ATen is undefined. For example:: + + >>> import extension + Traceback (most recent call last): + File "<stdin>", line 1, in <module> + ImportError: /home/user/.pyenv/versions/3.7.1/lib/python3.7/site-packages/extension.cpython-37m-x86_64-linux-gnu.so: undefined symbol: _ZN2at19UndefinedTensorImpl10_singletonE + +**Fix**: The fix is to ``import torch`` before you import your extension. This will make +the symbols from the PyTorch dynamic (shared) library that your extension +depends on available, allowing them to be resolved once you import your extension. + +I created a tensor using a function from ``at::`` and get errors +**************************************************************** + +**Problem**: You created a tensor using e.g. ``at::ones`` or ``at::randn`` or +any other tensor factory from the ``at::`` namespace and are getting errors. + +**Fix**: Replace ``at::`` with ``torch::`` for factory function calls. You +should never use factory functions from the ``at::`` namespace, as they will +create tensors. The corresponding ``torch::`` functions will create variables, +and you should only ever deal with variables in your code. |