Loading a torchscript model in C++: Cannot initialize CUDA without ATen_cuda library

I have built a CNN with Pytorch with GPU support. It works fine in python and I would like to import it in my C++ application using VS2017. I am following these instructions here and here.
I can build and run the application, but I get this error when loading the model:


error loading the model
Cannot initialize CUDA without ATen_cuda library. PyTorch splits its backend into two shared
libraries: a CPU library and a CUDA library; this error has occurred because you are trying to use
some CUDA functionality, but the CUDA library has not been loaded by the dynamic linker for some
reason. The CUDA library MUST be loaded, EVEN IF you don’t directly use any symbols from the CUDA
library! One common culprit is a lack of -Wl,–no-as-needed in your link arguments; many dynamic
linkers will delete dynamic library dependencies if you don’t depend on any of their symbols. You
can check if this has occurred by using ldd on your binary to see if there is a dependency on
*_cuda.so library. (initCUDA at
C:\w\1\s\windows\pytorch\aten\src\ATen/detail/CUDAHooksInterface.h:63)
(no backtrace available)

How can I fix with VS2017 and CUDA 10?

But you did get a cuda-enabled libtorch?
You could try calling cuda_lazy_init before if you did.

Best regards

Thomas

I solved using the nightly build, that ships libtorch with all the needed cuda dlls and the correct conda python 3.7 pytorch 1.3 (the conda installer for Windows does not install the latest pytorch stable 1.2 but an older 1.0.1) .

1 Like

Supergood, thank you for reporting back!

Best regards

Thomas