正在尝试构建支持旧gpu(3.0)的pytorch 1.0.0 cuda 10.2

正在尝试构建支持旧gpu(3.0)的pytorch 1.0.0 cuda 10.2,pytorch,Pytorch,我正在玩一些明确要求pytorch==1.0.0的项目,但我有一个旧的图形卡,只支持cuda 3.0,所以我使用的cpu非常慢,因为图形卡是双gpu,所以我决定尝试从支持3.0的源代码构建pytorch(我已计划更新电脑,但不会很快发生) 我正在使用docker进行构建,特别是我试图修改现有Dockerfile,在我使用debian/sid的主机系统上,安装了cuda 10.2 cudnn 7.6,我不确定是否可以降级cuda,我不知道容器中的版本是否必须与主机完全相同(如nvidia驱动程序)

我正在玩一些明确要求pytorch==1.0.0的项目,但我有一个旧的图形卡,只支持cuda 3.0,所以我使用的cpu非常慢,因为图形卡是双gpu,所以我决定尝试从支持3.0的源代码构建pytorch(我已计划更新电脑,但不会很快发生)

我正在使用docker进行构建,特别是我试图修改现有Dockerfile,在我使用debian/sid的主机系统上,安装了cuda 10.2 cudnn 7.6,我不确定是否可以降级cuda,我不知道容器中的版本是否必须与主机完全相同(如nvidia驱动程序)

更新版本时我注意到的第一件事是没有找到包
cuda-cublas-dev-10-2
,最新版本是10-0,

如果我安装了cublas版本10-0,或者如果我没有安装它,显然找不到任何头文件(下面的错误),如果我安装了推荐的
libcublas dev
版本,则生成会继续一段时间,并出现一些警告(下面),但随后会因下面的错误而停止

我在网上搜索了这个错误,但没有找到任何具体的信息,如果我理解正确,有一个函数声明了不止一次,当调用它时,选择是不明确的,但我还没有调查源代码

我想知道以前是否有人遇到过这个错误,并且知道如何修复它

libcublas dev安装错误:

[67%]构建NVCC(设备)对象caffe2/cmakfiles/caffe2_gpu.dir/_/aten/src/aten/native/sparse/cuda/caffe2_gpu_生成的SparseCUDABlas.cu.o
/pytorch/aten/src/aten/native/sparse/cuda/SparseCUDABlas.cu(58):错误:函数“at::native::sparse::cuda::cusparseGetErrorString”的多个实例与参数列表匹配:
函数“cusparseGetErrorString(cusparseStatus\u t)”
函数“at::native::sparse::cuda::cusparseGetErrorString(cusparseStatus_t)”
参数类型为:(cusparseStatus\t)
在编译“/tmp/tmpxft_00004cc_00000000-6_SparseCUDABlas.cpp1.ii”时检测到1个错误。
caffe2\u gpu\u生成的\u SparseCUDABlas.cu.o.Release.CMake错误:279(消息):
生成文件时出错
/pytorch/build/caffe2/cmakfiles/caffe2_gpu.dir/_uu/aten/src/aten/native/sparse/cuda//caffe2_gpu_生成的_SparseCUDABlas.cu.o
caffe2/CMakeFiles/caffe2_gpu.dir/build.make:1260:目标'caffe2/CMakeFiles/caffe2_gpu.dir/\uuuuuuu/aten/src/aten/native/sparse/cuda/caffe2_gpu_生成的\u SparseCUDABlas.cu.o'失败
警告:

ptxas警告:指定的maxrregcount值太大,将被忽略
缺少标头错误:

扫描目标caffe2_pybind11_状态的依赖项
[59%]构建CXX对象caffe2/cmakfiles/caffe2_pybind11_state.dir/python/pybind_state.cc.o
在/pytorch/aten/src/THC/THC.h:4:0中包含的文件中,
from/pytorch/torch/lib/THD/。/THD/base/TensorDescriptor.h:6,
from/pytorch/torch/lib/THD/。/THD/base/TensorDescriptor.hpp:6,
from/pytorch/torch/lib/THD/。/THD/THD.h:14,
from/pytorch/torch/lib/THD/base/DataChannelRequest.h:3,
from/pytorch/torch/lib/THD/base/DataChannelRequest.hpp:6,
from/pytorch/torch/lib/THD/base/DataChannelRequest.cpp:1:
/pytorch/build/caffe2/aten/src/THC/THCGeneral.h:17:23:致命错误:cublas_v2.h:没有这样的文件或目录
编译终止。
make[2]:***[caffe2/torch/lib/THD/CMakeFiles/THD.dir/base/DataChannelRequest.cpp.o]错误1
make[2]:***等待未完成的工作。。。。

显然,问题在于
libcusparse
aten/src/aten/native/sparse/cuda/SparseCUDABlas.cu
实现
cusparseGetErrorString()
对于版本>=10.2,应该使用库中的一个

--- aten/src/ATen/native/sparse/cuda/SparseCUDABlas.cu.orig 2020-11-16 12:13:17.680023134 +0000
+++ aten/src/ATen/native/sparse/cuda/SparseCUDABlas.cu  2020-11-16 12:13:45.158407583 +0000
@@ -9,7 +9,7 @@
 
 namespace at { namespace native { namespace sparse { namespace cuda {
 
-
+#if 0
 std::string cusparseGetErrorString(cusparseStatus_t status) {
   switch(status)
   {
@@ -51,6 +51,7 @@
       }
   }
 }
+#endif
 
 inline void CUSPARSE_CHECK(cusparseStatus_t status)
 {
我还没有尝试它是否在运行时工作,但是构建成功了