在CUDA9.0上安装torch出错:”error: more than one operator “==” matches these operands”

  • Post author:
  • Post category:其他


安装torch的时候遇到了一个问题:

"error: more than one operator "==" matches these operands"

lib/THC/CMakeFiles/THC.dir/build.make:4243: recipe for target 'lib/THC/CMakeFiles
/THC.dir/THC_generated_THCTensorMathPairwise.cu.o' failed make[2]: *** [lib/THC
/CMakeFiles/THC.dir/THC_generated_THCTensorMathPairwise.cu.o] Error 1 /pkgbuild/torch
/torch/extra/cutorch/lib/THC/generic/THCTensorMath.cu(393): error: more than one
 operator "==" matches these operands: function "operator==(const __half &, const __half
 &)" function "operator==(half, half)" operand types are: half == half /pkgbuild/torch
/torch/extra/cutorch/lib/THC/generic/THCTensorMath.cu(414): error: more than one
 operator "==" matches these operands: function "operator==(const __half &, const __half
 &)" function "operator==(half, half)" operand types are: half == half

原因是cuda和torch的头文件都提供了相同的重载运算符,编译器不知道用哪一个。

输入下面shell命令禁止使用cuda的头文件编译torch即可:


export TORCH_NVCC_FLAGS="-D__CUDA_NO_HALF_OPERATORS__"


重新运行

./install.sh

重新开始编译就OK了。

编译成功过后,输入命令

source ~/.bashrc

使torch生效。如果你使用的是zsh那么输入

source ~/.zshrc

。完了之后再输入命令

th

,出现如下的画面说明安装成功了: