summaryrefslogtreecommitdiff
path: root/docs/cpp/source/notes/faq.rst
diff options
context:
space:
mode:
Diffstat (limited to 'docs/cpp/source/notes/faq.rst')
-rw-r--r--docs/cpp/source/notes/faq.rst34
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.