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/ 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.


Access comprehensive developer documentation for PyTorch

View Docs


Get in-depth tutorials for beginners and advanced developers

View Tutorials


Find development resources and get your questions answered

View Resources