CUDA 11.4编译PyTorch 1.7.1
老版pytorch配新版编译器会出现一些奇怪的问题,在这里记录一下。
Could not find libuv_tmp_LIBRARY using the following names: uv, libuv
libuv
是做分布式异步io用的,咱们Windows单机用不到这个,通过设置环境变量USE_DISTRIBUTED=0
跳过这一问题。
algorithm(7417): error C2678: binary '*': no operator found which takes a left-hand operand of type 'const _BidIt' (or there is no acceptable conversion) [pytorch\build\caffe2\torch_cpu.vcxproj]
这个是mkl-dnn
的问题,参考这个issue。
解决方法:升级mkl-dnn
到1.7版本,或在aten/src/ATen/native/CompositeRandomAccessorCommon.h
文件的第132行,在
reference operator*() {
处添加const
关键字,修改为
reference operator*() const {
再重新执行编译指令即可。
pytorch\caffe2\utils\math_gpu.cu(898): error : namespace "thrust" has no member "host_vector" [pytorch\build\caffe2\torch_cuda.vcxproj]
这个是CUDA的问题,恰好是11.4版本引入的,参考这个issue。
解决方法:在caffe2/utils/math_gpu.cu
文件头部添加头文件引用:
#include <thrust/host_vector.h>
然后重新编译即可。