我已经(在根据的deviceQuery executable
帮助下C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\vX.Y\extras\demo_suite
https://forums.developer.nvidia.com/t/what-is-the-compute-capability-of-a-geforce-gt-710/146956/4):
检测到 1 个支持 CUDA 的设备
设备 0:“GeForce GT 710“CUDA 驱动程序版本/运行时版本 11.0/11.0 CUDA 功能主版本/次版本号:3.5 全局内存总量:2048 MB(2147483648 字节)(1)多处理器,(192)CUDA 核心/MP:192 个 CUDA 核心
由于这是一张老旧且性能不足的显卡,我需要从源代码安装 pytorch,方法是在计算机上编译它,并设置各种必要的设置和条件 - 这不是一件很直观的事情,花了我好几天的时间。至少,我的卡支持 CUDA cc 3.5,因此它支持所有最新的 CUDA 和 cuDNN 版本,因为 cc 3.5 只是被弃用了,没有什么更糟糕的了。
我按照 README 中的步骤从源代码构建 pytorchhttps://github.com/pytorch/pytorch#from-source它也链接到正确的编译器https://gist.github.com/ax3l/9489132。
我已经成功在 Windows 10 上从源代码构建了 PyTorch(如 pytorch repo readme.md 中所述:https://github.com/pytorch/pytorch#from-source),运行时出现错误import pytorch
:
ImportError: DLL 加载失败:动态链接库 (DLL) 初始化例程失败。加载“C:\Users\Admin\anaconda3\envs\ml\lib\site-packages\torch\lib\caffe2_detectron_ops_gpu.dll”或其依赖项之一时出错。
我无法使用从源代码成功构建的 pytorch:(DLL)初始化例程失败。加载 caffe2_detectron_ops_gpu.dll 时出错
答案1
编辑:在你尝试冗长的指南并再次安装所有内容之前,你可以通过从降级到来解决错误“(DLL)初始化例程失败。加载 caffe2_detectron_ops_gpu.dll 时出错” torch = 1.7.1
,torch=1.6.0
根据这(没有经过测试)。
这是我使用过的一些指南。
- https://github.com/pytorch/pytorch#from-source
- https://discuss.pytorch.org/t/pytorch-build-from-source-on-windows/40288
- https://www.youtube.com/watch?v=sGWLjbn5cgs
- https://github.com/pytorch/pytorch/issues/30910
- https://github.com/exercism/cpp/issues/250
这里的解决方案来自更多步骤,请参见这结合这。有关 cuda 问题的整体入门信息请参见此相关内容超级用户问题也一样。
解决方案如下:
- 安装 CMake: https://cmake.org/download/
添加到PATH环境变量:
C:\Program Files\CMake\bin
- 安装 git,其中包括 mingw64,它还提供卷曲:https://git-scm.com/download/win
添加到PATH环境变量:
C:\Program Files\Git\cmd
C:\Program Files\Git\mingw64\bin
为了卷曲
- 作为编译器,我选择了
MSVC 2019
CUDA 编译器驱动程序,NVCC:10.0.194
因为它可以处理 CUDA cc 3.5https://gist.github.com/ax3l/9489132。当然,您会想检查自己当前的驱动程序版本。
请注意,绿色箭头除了告诉您上面的单元格被复制到下面的空单元格之外,没有其他任何意义,这是表格的设计,这里没有什么可说的。 在我的案例中,绿色标记和注释只是相关版本号(3.5 和 2019)。相反,您的案例中相关的内容完全取决于您的案例!
运行MS Visual Studio 2019 16.7.1
并选择--> Indivudual components
可以让您安装:
- 最新
MSVC v142 - VS 2019 C++-x64/x86-Buildtools (v14.27)
(当时最新的 x64 版本) - 最新
Windows 10 SDK
(10.0.19041.0
)(当时最新的 x64 版本)。
由于我的显卡
CUDA Capability Major/Minor version number
是,所以我可以安装目前可用的3.5
最新版本。对于你的情况,请再次查找上表的当前版本,并找出你的 CUDA cc 的最佳 cuda 版本。cuda 工具包可在cuda 11.0.2-1
https://developer.nvidia.com/cuda-downloads。更改 PATH 环境变量:
SET PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.0\bin;%PATH%
SET PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.0\extras\CUPTI\lib64;%PATH%
SET PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.0\include;%PATH%
- 从以下位置下载 cuDNNhttps://developer.nvidia.com/cudnn-download-survey。您必须注册才能执行此操作。然后通过将最新的 cuDNN zip 解压文件复制到以下目录来安装 cuDNN:
C:\Program Files\NVIDIA cuDNN
- 更改 PATH 环境变量:
SET PATH=C:\Program Files\NVIDIA cuDNN\cuda;%PATH
- 打开 anaconda prompt,最好为 pytorch 创建一个新虚拟环境,并根据需要命名https://stackoverflow.com/questions/48174935/conda-creating-a-virtual-environment:
conda create -n myenv
- 安装可能需要的软件包:
(myenv) C:\Users\Admin>conda install numpy ninja pyyaml mkl mkl-include setuptools cmake cffi typing_extensions future six requests
在 anaconda 或 cmd 提示符中,将 pytorch 克隆到您选择的目录中。我在这里使用我的下载目录:
C:\Users\Admin\Downloads\Pytorch>git clone https://github.com/pytorch/pytorch
在 anaconda 或 cmd 提示符中,递归更新克隆的目录:
C:\Users\Admin\Downloads\Pytorch\pytorch>git submodule update --init --recursive
由于detectron对MSVC OpenMP的支持较差,我们需要从源代码构建pytorch,并使用源代码中的MKL,因此将使用Intel OpenMP,根据该开发者的评论并提到https://pytorch.org/docs/stable/notes/windows.html#include-optional-components.那么该怎么做呢?
从以下位置安装 7zhttps://www.7-zip.de/download.html。
添加到PATH环境变量:
C:\Program Files\7-Zip\
现在下载 MKL 源代码(请查看关联再次):
curl https://s3.amazonaws.com/ossci-windows/mkl_2020.0.166.7z -k -O
7z x -aoa mkl_2020.0.166.7z -omkl
我选择的目标目录是C:\Users\Admin\mkl
。
根据链接还需要:
conda install -c defaults intel-openmp -f
- 打开 anaconda prompt 并激活所谓的虚拟环境:
activate myenv
- 更改为您选择的 pytorch 源代码目录。
(myenv) C:\WINDOWS\system32>cd C:\Users\Admin\Downloads\Pytorch\pytorch
- 现在在启动 cmake 之前,我们需要设置很多变量。
由于我们也使用 mkl,因此我们需要它如下:
(myenv) C:\Users\Admin\Downloads\Pytorch\pytorch>set “CMAKE_INCLUDE_PATH=C:\Users\Admin\Downloads\Pytorch\mkl\include”
(myenv) C:\Users\Admin\Downloads\Pytorch\pytorch>set “LIB=C:\Users\Admin\Downloads\Pytorch\mkl\lib;%LIB%”
(myenv) C:\Users\Admin\Downloads\Pytorch\pytorch>set USE_NINJA=OFF
(myenv) C:\Users\Admin\Downloads\Pytorch\pytorch>set CMAKE_GENERATOR=Visual Studio 16 2019
(myenv) C:\Users\Admin\Downloads\Pytorch\pytorch>set USE_MKLDNN=ON
(myenv) C:\Users\Admin\Downloads\Pytorch\pytorch>set “CUDAHOSTCXX=C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\bin\Hostx64\x64\cl.exe”
(myenv) C:\Users\Admin\Downloads\Pytorch\pytorch>python setup.py install --cmake
注意:让它运行一整夜,上面的安装程序花了 9.5 个小时并阻塞了计算机。
重要提示:Ninja 可以并行执行 CUDA 构建任务。
也许你可以使用忍者,这是根据以下情况加快进程https://pytorch.org/docs/stable/notes/windows.html#include-optional-components。就我而言,使用 ninja 安装失败。您仍然可以尝试:(set CMAKE_GENERATOR=Ninja
当然,先使用 安装pip install ninja
)。您可能还需要set USE_NINJA=ON
,和/或更好的是,尝试完全省略set USE_NINJA
并只使用set CMAKE_GENERATOR=Ninja
(请参阅将 CMake 生成器切换到 Ninja),也许这对你有用。使用忍者是绝对可能的,见此评论基于忍者的安装成功。
[我可能也错了,因为我期望 ninja 可以通过 pip install 来工作。也许我们还需要获取 ninja 的源代码,也许也可以使用 curl,就像 MKL 所做的那样。如果您对此有更多了解,请发表评论或进行编辑,谢谢。]
就我的情况而言,这已经通过使用 mkl 而不是使用 ninja 来运行。
现在补充一点。如果你正在使用 spyder,那么我的至少被 cuda 安装破坏了:
(myenv)C:\WINDOWS\system32>spyder cffi_ext.c C:\Users\Admin\anaconda3\lib\site-packages\zmq\backend\cffi_pycache_cffi_ext.c(268): 致命错误 C1083: 无法读取 (Include) 文件:“zmq.h”: 没有此文件或目录回溯(最近一次调用最后一次):文件“C:\Users\Admin\anaconda3\Scripts\spyder-script.py”, 第 6 行,来自 spyder.app.start 导入主文件“C:\Users\Admin\anaconda3\lib\site-packages\spyder\app\start.py”, 第 22 行,导入 zmq 文件“C:\Users\Admin\anaconda3\lib\site-packages\zmq_在里面_.py”,第 50 行,来自 zmq 导入后端文件“C:\Users\Admin\anaconda3\lib\site-packages\zmq\backend_在里面_.py”, 第 40 行, 在 reraise(*exc_info) 文件“C:\Users\Admin\anaconda3\lib\site-packages\zmq\utils\sixcerpt.py”, 第 34 行, 在 reraise 提升值文件“C:\Users\Admin\anaconda3\lib\site-packages\zmq\backend_在里面_.py”,第 27 行,位于 ns = select_backend(first)文件“C:\Users\Admin\anaconda3\lib\site-packages\zmq\backend\select.py”,第 28 行,位于 select_backend mod =进口(名称,fromlist = public_api)文件“C:\ Users \ Admin \ anaconda3 \ lib \ site-packages \ zmq \ backend \ cython_在里面.py”,第 6 行,来自。导入(常量、错误、消息、上下文、ImportError:导入时 DLL 加载失败错误:所分配的模块未成功加载。
在现有安装上再次安装 spyder:
(myenv) C:\WINDOWS\system32>conda install spyder
打开蜘蛛:
(myenv) C:\WINDOWS\system32>spyder
- 测试你的 pytorch 安装。
我按照这:
import torch
torch.__version__
Out[3]: '1.8.0a0+2ab74a4'
torch.cuda.current_device()
Out[4]: 0
torch.cuda.device(0)
Out[5]: <torch.cuda.device at 0x24e6b98a400>
torch.cuda.device_count()
Out[6]: 1
torch.cuda.get_device_name(0)
Out[7]: 'GeForce GT 710'
torch.cuda.is_available()
Out[8]: True