解决方案可见:https://github.com/torch/cutorch/issues/797
按照torch官方的只是执行./install.sh
遇到以下错误
error: more than one operator "==" matches these operands:
function "operator==(const __half &, const __half &)"
function "operator==(half, half)"
operand types are: half == half
可以看出是运算符重载出现了问题,实际上是由于cuda9.0对__half这一数据类型进行了“==”号的运算符重载,而torch的代码中也对__half重载了相同的运算符,因此在编译cutorch时两者发生了冲突。half实际是cuda中定义的16bit的浮点数,由于cuda原生支持FP16的运算,因此half的运算速度常常比32bit的float要更快。
解决办法就是在安装torch前额外执行一条指令,意思就是禁用掉编译torch时nvcc中对于half运算符的重载,然后安装就没有问题了。
export TORCH_NVCC_FLAGS="-D__CUDA_NO_HALF_OPERATORS__"
./install.sh
网友评论