Version 1.1.0 build from sources compilation errors on NVIDIA Jetson TX2

Hello,
I wanted to work with version PyTorch v1.1.0 and Torchvision 0.3.0.
I have a Jetson TX2 with an old JetPack which includes:

  • CUDA 8.x
  • No CuDNN
  • OpenCV 3.4.1
  • Python 3.5.2
  • gcc\g++ 5.4
  • Cmake 3.5.1

And I have no ability to upgrade the JetPack or to use another PyTorch version.

These are the script lines which I’m using to build the version:
PYTORCH_COMMIT_ID=“0b868b1”

git clone https://github.com/pytorch/pytorch.git &&
cd pytorch && git checkout ${PYTORCH_COMMIT_ID} &&
git submodule update --init --recursive &&
pip3 install pyyaml==3.13 &&
pip3 install -r requirements.txt &&
USE_OPENCV=1
BUILD_TORCH=ON
CMAKE_PREFIX_PATH="/usr/bin/"
LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/lib:$LD_LIBRARY_PATH
CUDA_BIN_PATH=/usr/local/cuda/bin
CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda/
CUDNN_LIB_DIR=/usr/local/cuda/lib64
CUDA_HOST_COMPILER=cc
USE_CUDA=1
USE_NCCL=0
USE_NNPACK=1
CC=cc
CXX=c++
TORCH_CUDA_ARCH_LIST=“3.5 5.2 6.0 6.1 6.2+PTX”
TORCH_NVCC_FLAGS="-Xfatbin -compress-all"
python3 setup.py install

After ~70% of the build process is successfully done I’m getting a batch of errors, for example:
/home/ubuntu/Oron/pytorch/aten/src/ATen/detail/FunctionTraits.h:9:8: error: decltype cannot resolve address of overloaded function
struct function_traits : public function_traits<decltype(&T::operator())> {
^
/home/ubuntu/Oron/pytorch/aten/src/ATen/detail/FunctionTraits.h: In instantiation of ‘struct binary_function_traits<__nv_hdl_wrapper_t<__nv_dl_tag<void ()(at::TensorIterator&, c10::Scalar), at::native::add_kernel_impl, 1u>, unsigned char(unsigned char, unsigned char), unsigned char> >’:
/home/ubuntu/Oron/pytorch/aten/src/ATen/native/cuda/Loops.cuh:176:70: required from ‘void at::native::gpu_binary_kernel(at::TensorIterator&, const func_t&) [with func_t = __nv_hdl_wrapper_t<__nv_dl_tag<void (
)(at::TensorIterator&, c10::Scalar), at::native::add_kernel_impl, 1u>, unsigned char(unsigned char, unsigned char), unsigned char>]’
/tmp/tmpxft_00003152_00000000-4_BinaryOpsKernel.compute_62.cudafe1.stub.c:7:666: required from here
/home/ubuntu/Oron/pytorch/aten/src/ATen/detail/FunctionTraits.h:62:63: error: no type named ‘result_type’ in ‘struct function_traits<__nv_hdl_wrapper_t<__nv_dl_tag<void ()(at::TensorIterator&, c10::Scalar), at::native::add_kernel_impl, 1u>, unsigned char(unsigned char, unsigned char), unsigned char> >’
/home/ubuntu/Oron/pytorch/aten/src/ATen/detail/FunctionTraits.h:63:70: error: no class template named ‘arg’ in ‘struct function_traits<__nv_hdl_wrapper_t<__nv_dl_tag<void (
)(at::TensorIterator&, c10::Scalar), at::native::add_kernel_impl, 1u>, unsigned char(unsigned char, unsigned char), unsigned char> >’
/home/ubuntu/Oron/pytorch/aten/src/ATen/detail/FunctionTraits.h:64:70: error: no class template named ‘arg’ in ‘struct function_traits<__nv_hdl_wrapper_t<__nv_dl_tag<void ()(at::TensorIterator&, c10::Scalar), at::native::add_kernel_impl, 1u>, unsigned char(unsigned char, unsigned char), unsigned char> >’
/home/ubuntu/Oron/pytorch/aten/src/ATen/native/cuda/Loops.cuh: In instantiation of ‘void at::native::gpu_binary_kernel(at::TensorIterator&, const func_t&) [with func_t = __nv_hdl_wrapper_t<__nv_dl_tag<void (
)(at::TensorIterator&, c10::Scalar), at::native::add_kernel_impl, 1u>, unsigned char(unsigned char, unsigned char), unsigned char>]’:
/tmp/tmpxft_00003152_00000000-4_BinaryOpsKernel.compute_62.cudafe1.stub.c:7:666: required from here
/home/ubuntu/Oron/pytorch/aten/src/ATen/native/cuda/Loops.cuh:185:93: error: no matching function for call to ‘at::TensorIterator::scalar_value(int)’
/home/ubuntu/Oron/pytorch/aten/src/ATen/native/TensorIterator.h:203:1: note: candidate: template T at::TensorIterator::scalar_value(int)
T scalar_value(int arg) {
^
/home/ubuntu/Oron/pytorch/aten/src/ATen/native/TensorIterator.h:203:1: note: template argument deduction/substitution failed:
/home/ubuntu/Oron/pytorch/aten/src/ATen/native/cuda/Loops.cuh:187:284: error: could not convert ‘()’ from ‘’ to ‘const __nv_hdl_wrapper_t<__nv_dl_tag<void ()(at::TensorIterator&, c10::Scalar), at::native::add_kernel_impl, 1u>, unsigned char(unsigned char, unsigned char), unsigned char>’
/home/ubuntu/Oron/pytorch/aten/src/ATen/native/cuda/Loops.cuh:191:93: error: no matching function for call to ‘at::TensorIterator::scalar_value(int)’
/home/ubuntu/Oron/pytorch/aten/src/ATen/native/TensorIterator.h:203:1: note: candidate: template T at::TensorIterator::scalar_value(int)
T scalar_value(int arg) {
^
/home/ubuntu/Oron/pytorch/aten/src/ATen/native/TensorIterator.h:203:1: note: template argument deduction/substitution failed:
/home/ubuntu/Oron/pytorch/aten/src/ATen/native/cuda/Loops.cuh:193:284: error: could not convert ‘()’ from ‘’ to ‘const __nv_hdl_wrapper_t<__nv_dl_tag<void (
)(at::TensorIterator&, c10::Scalar), at::native::add_kernel_impl, 1u>, unsigned char(unsigned char, unsigned char), unsigned char>’
/home/ubuntu/Oron/pytorch/aten/src/ATen/detail/FunctionTraits.h: In instantiation of ‘struct function_traits<__nv_hdl_wrapper_t<__nv_dl_tag<void ()(at::TensorIterator&, const __nv_hdl_wrapper_t<__nv_dl_tag<void ()(at::TensorIterator&, c10::Scalar), at::native::add_kernel_impl, 1u>, unsigned char(unsigned char, unsigned char), unsigned char>&), at::native::gpu_binary_kernel<__nv_hdl_wrapper_t<__nv_dl_tag<void ()(at::TensorIterator&, c10::Scalar), at::native::add_kernel_impl, 1u>, unsigned char(unsigned char, unsigned char), unsigned char> >, 1u>, unsigned char(unsigned char), const __nv_hdl_wrapper_t<__nv_dl_tag<void ()(at::TensorIterator&, c10::Scalar), at::native::add_kernel_impl, 1u>, unsigned char(unsigned char, unsigned char), unsigned char>, unsigned char> >’:
/home/ubuntu/Oron/pytorch/aten/src/ATen/detail/FunctionTraits.h:55:63: required from ‘struct unary_function_traits<__nv_hdl_wrapper_t<__nv_dl_tag<void ()(at::TensorIterator&, const __nv_hdl_wrapper_t<__nv_dl_tag<void ()(at::TensorIterator&, c10::Scalar), at::native::add_kernel_impl, 1u>, unsigned char(unsigned char, unsigned char), unsigned char>&), at::native::gpu_binary_kernel<__nv_hdl_wrapper_t<__nv_dl_tag<void ()(at::TensorIterator&, c10::Scalar), at::native::add_kernel_impl, 1u>, unsigned char(unsigned char, unsigned char), unsigned char> >, 1u>, unsigned char(unsigned char), const __nv_hdl_wrapper_t<__nv_dl_tag<void ()(at::TensorIterator&, c10::Scalar), at::native::add_kernel_impl, 1u>, unsigned char(unsigned char, unsigned char), unsigned char>, unsigned char> >’
/home/ubuntu/Oron/pytorch/aten/src/ATen/native/cuda/Loops.cuh:127:69: required from ‘void at::native::gpu_unary_kernel(at::TensorIterator&, const func_t&) [with func_t = __nv_hdl_wrapper_t<__nv_dl_tag<void ()(at::TensorIterator&, const __nv_hdl_wrapper_t<__nv_dl_tag<void ()(at::TensorIterator&, c10::Scalar), at::native::add_kernel_impl, 1u>, unsigned char(unsigned char, unsigned char), unsigned char>&), at::native::gpu_binary_kernel<__nv_hdl_wrapper_t<__nv_dl_tag<void ()(at::TensorIterator&, c10::Scalar), at::native::add_kernel_impl, 1u>, unsigned char(unsigned char, unsigned char), unsigned char> >, 1u>, unsigned char(unsigned char), const __nv_hdl_wrapper_t<__nv_dl_tag<void ()(at::TensorIterator&, c10::Scalar), at::native::add_kernel_impl, 1u>, unsigned char(unsigned char, unsigned char), unsigned char>, unsigned char>]’

Any help will be much appreciated.
Thanks

@OronG13
Is that possible for you install a newer version CUDA.

Check here if you want to install old version without compile, for pytorch 1.1, we have support for cuda 9.0 and above, so I guess, your problem is caused by nvcc in cuda8 under gcc5.4.
https://pytorch.org/get-started/previous-versions/

Hello,

I wanted to update that I successfully upgraded the CUDA version to 9.0.252 (JetPack 3.2.1) as your recommendation and now the PyTorch build from source process was successfully completed.

Thanks,