windows10下cuda9.2升级到cuda10.2

本文详细介绍在Windows10环境下从CUDA9.2升级到CUDA10.2的过程,以及CUDNN的安装步骤。通过在DL4J中进行性能对比实验,展示不同版本CUDA与CUDNN对深度学习性能的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、文章主要内容

    1、Windows10下从cuda9.2升级到cuda10.2

    2、Windows10下cudnn安装

    3、cuda9.2、cuda10.2、cudnn7.2.1、cudnn7.6.5在DeepLearning4j中性能对比

二、安装过程

    1、机器环境说明:

     CPU:i7 8700 6核12线程

     GPU:GTX 1070Ti

     内存:16G

    备注:机器中曾经安装过cuda和cudnn,版本为:cuda9.2.148、cudnn7.2.1

     up-0124937c006f36b8449f1f12333273ceb2a.png

    2、安装包准备

    (1)、cuda下载

    cuda下载地址:https://developer.nvidia.com/cuda-toolkit-archive,这里下载版本为:10.2,由于dl4j最高只支持到10.2

    up-f4ff6bf7ea223acf98c985c8771ec5b745a.png

    安装机器为windows10  64位,选择cuda win10的64位版本,安装模式选择local,把安装包下载到本地安装

up-8b920e7e10620f7bd7c8326a89d7f3a5e8d.png

    (2)、cuDNN下载

    下载地址:https://developer.nvidia.com/rdp/cudnn-archive,这里选择与cuda10.2匹配的最新cudnn版本:7.6.5,这里不选8.0.2的原因是dl4j-beta6不支持8.x版本。

    up-3f6d68866f58ddf1f0f946b653ad3bce171.png

    下载到的安装包如下:

    up-3b4e0e520161e1045b8fd61ab6b1d4dea06.png

    3、安装cuda10.2

    直接按照默认安装路径,下一步,同意并继续 -> 精简安装

    up-901d1ed3b9b122adda798c08a1b7d893385.png

    进入安装阶段

    up-a48104f0c054f0e7c04facedb329a16de2b.png

    安装结束之后,在C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA目录之下,出现了v10.2的文件夹,如下图:

    up-0d5a1cf92889c68a8323c75d6a780d9813a.png

    备注:这里有个v9.2,是之前安装的cuda版本,设置环境变量,也可以切换到9.2的版本

    打开cmd控制台,输入nvcc --version命令回车,如下图所示,说明10.2版本安装成功

    up-1319310629ddc9d5401d2dc032501dfca0f.png

    同时用dl4j最新的example测试,验证cuad10.2是否可用,example地址:https://github.com/eclipse/deeplearning4j-examples/tree/master/mvn-project-template

   将maven依赖修改成如下配置,其中将dl4j-master.version修改为:1.0.0-beta6,加入nd4j-cuda-10.2-platform和deeplearning4j-cuda-10.2依赖

<properties>
        <dl4j-master.version>1.0.0-beta6</dl4j-master.version>
        <logback.version>1.2.3</logback.version>
        <java.version>1.8</java.version>
        <maven-shade-plugin.version>2.4.3</maven-shade-plugin.version>
    </properties>


    <dependencies>
        <!-- deeplearning4j-core: contains main functionality and neural networks -->
        <dependency>
            <groupId>org.deeplearning4j</groupId>
            <artifactId>deeplearning4j-core</artifactId>
            <version>${dl4j-master.version}</version>
        </dependency>

        <!--
        ND4J backend: every project needs one of these. The backend defines the hardware on which network training
        will occur. "nd4j-native-platform" is for CPUs only (for running on all operating systems).
        -->
        <!-- <dependency>
            <groupId>org.nd4j</groupId>
            <artifactId>nd4j-native</artifactId>
            <version>${dl4j-master.version}</version>
        </dependency> 
        -->
        <!-- CUDA: to use GPU for training (CUDA) instead of CPU, uncomment this, and remove nd4j-native-platform -->
        <!-- Requires CUDA to be installed to use. Change the version (8.0, 9.0, 9.1) to change the CUDA version -->
        
         <dependency>
            <groupId>org.nd4j</groupId>
            <artifactId>nd4j-cuda-10.2-platform</artifactId>
            <version>${dl4j-master.version}</version>
        </dependency> 
       

        <!-- Optional, but recommended: if you use CUDA, also use CuDNN. To use this, CuDNN must also be installed -->
        <!-- See: https://deeplearning4j.konduit.ai/config/backends/config-cudnn#using-deeplearning-4-j-with-cudnn -->
        
         <dependency>
            <groupId>org.deeplearning4j</groupId>
            <artifactId>deeplearning4j-cuda-10.2</artifactId>
            <version>${dl4j-master.version}</version>
        </dependency> 
       

        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>${logback.version}</version>
        </dependency>
    </dependencies>

     Run as 一下main方法,打印日志如下, ND4J CUDA build version: 10.2.89,说明cuda10.2已经生效。

o.d.e.s.LeNetMNIST - Load data....
o.d.e.s.LeNetMNIST - Build model....
o.n.l.f.Nd4jBackend - Loaded [JCublasBackend] backend
o.n.n.NativeOpsHolder - Number of threads used for linear algebra: 32
o.n.n.Nd4jBlas - Number of threads used for OpenMP BLAS: 0
o.n.l.a.o.e.DefaultOpExecutioner - Backend used: [CUDA]; OS: [Windows 10]
o.n.l.a.o.e.DefaultOpExecutioner - Cores: [12]; Memory: [3.5GB];
o.n.l.a.o.e.DefaultOpExecutioner - Blas vendor: [CUBLAS]
o.n.l.j.JCublasBackend - ND4J CUDA build version: 10.2.89
o.n.l.j.JCublasBackend - CUDA device 0: [GeForce GTX 1070 Ti]; cc: [6.1]; Total memory: [8589934592]
o.d.n.m.MultiLayerNetwork - Starting MultiLayerNetwork with WorkspaceModes set to [training: ENABLED; inference: ENABLED], cacheMode set to [NONE]
o.d.n.l.c.ConvolutionLayer - Could not initialize CudnnConvolutionHelper
java.lang.reflect.InvocationTargetException: null
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at org.deeplearning4j.nn.layers.convolution.ConvolutionLayer.initializeHelper(ConvolutionLayer.java:78)
Caused by: java.lang.UnsatisfiedLinkError: no jnicudnn in java.library.path
	at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1867)
	at java.lang.Runtime.loadLibrary0(Runtime.java:870)
	at java.lang.System.loadLibrary(System.java:1122)
	at org.bytedeco.javacpp.Loader.loadLibrary(Loader.java:1543)
	at org.bytedeco.javacpp.Loader.load(Loader.java:1192)

    上面的日志中,出现一个异常,cudnn无法被初始化,是因为cudnn还没有安装,接下来就可以安装cudnn了。

    4、cuDNN安装

    解压 cudnn-10.2-windows10-x64-v7.6.5.32.zip,出现下图所示的三个文件夹

    up-3d2d02dfbcabe19a9a21096ca7d1cb18146.png

    将这三个文件夹复制到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2目录下即可。cudnn的文件便加入到了cuda安装目录下

    up-9e087d4990ec3f6e4bdcbd89a4138ac4cce.png

    再次运行测试程序,异常消失,且CudnnSubsamplingHelper和CudnnConvolutionHelper初始化成功

o.d.e.s.LeNetMNIST - Load data....
o.d.e.s.LeNetMNIST - Build model....
o.n.l.f.Nd4jBackend - Loaded [JCublasBackend] backend
o.n.n.NativeOpsHolder - Number of threads used for linear algebra: 32
o.n.n.Nd4jBlas - Number of threads used for OpenMP BLAS: 0
o.n.l.a.o.e.DefaultOpExecutioner - Backend used: [CUDA]; OS: [Windows 10]
o.n.l.a.o.e.DefaultOpExecutioner - Cores: [12]; Memory: [3.5GB];
o.n.l.a.o.e.DefaultOpExecutioner - Blas vendor: [CUBLAS]
o.n.l.j.JCublasBackend - ND4J CUDA build version: 10.2.89
o.n.l.j.JCublasBackend - CUDA device 0: [GeForce GTX 1070 Ti]; cc: [6.1]; Total memory: [8589934592]
o.d.n.m.MultiLayerNetwork - Starting MultiLayerNetwork with WorkspaceModes set to [training: ENABLED; inference: ENABLED], cacheMode set to [NONE]
o.d.n.l.c.ConvolutionLayer - CudnnConvolutionHelper successfully initialized
o.n.j.h.i.CudaZeroHandler - Creating bucketID: 5
o.d.n.l.c.s.SubsamplingLayer - CudnnSubsamplingHelper successfully initialized
o.d.n.l.c.ConvolutionLayer - CudnnConvolutionHelper successfully initialized
o.d.n.l.c.s.SubsamplingLayer - CudnnSubsamplingHelper successfully initialized

    至此,cuda10.2和cudnn7.6.5安装成功,且可以dl4j beta6可以正常运行。

三、性能对比

    测试程序地址:https://github.com/eclipse/deeplearning4j-examples/tree/master/mvn-project-template,网络结构为LeNet

    环境说明:

       操作系统:Windows10

       CPU:i7 8700   3.2GHz   6核12线程

       GPU:GTX 1070Ti

       内存:16G

       dl4j:beta6

     对比结果:

                   运行环境                                   耗时(ms)                       
                     CPU            26566
                    cuda9.2            20725
         cuda9.2+cudnn7.2.1            12575
                    cuda10.2            19953
           cuda10.2+cudnn7.6.5            12574

     结果说明:

     1、cuda9.2和cuda10.2运行结果相差不大

     2、cuda9.2+cudnn7.2.1 和  cuda10.2+cudnn7.6.5运行结果也相差不大

     3、cudnn运行效率有显著提升

     4、GPU配合cudnn比CPU效率提升2倍

   特殊说明:dl4j基于cudnn对如下结构进行了优化,如下图所示:

    up-ffda350dfa4ab2473533abb3c5f32a45c56.png

 

快乐源于分享。

   此博客乃作者原创, 转载请注明出处。

 

 

<think>好的,我现在需要帮助用户解决在conda环境中安装CUDA 9.2和PyTorch 1.5.1的问题。首先,我需要回顾用户之前的问题,确保这次回答的一致性。用户之前遇到了安装旧版本PyTorch的问题,现在转向conda安装另一个旧版本组合,可能是在处理遗留项目或特定环境需求。 首先,我应该确认CUDA 9.2和PyTorch 1.5.1的兼容性。记得PyTorch的版本通常与特定CUDA版本绑定,所以需要检查官方文档或历史版本信息。例如,PyTorch 1.5.1可能支持CUDA 9.2吗?可能需要查阅发布日志或旧版安装指南。假设用户的需求是可行的,但需要正确的渠道和依赖管理。 接下来,用户使用conda安装,但旧版本可能不在默认的conda源中。需要指导用户添加正确的channel,比如pytorch的LTS或特定日期的channel。例如,`conda install pytorch=1.5.1 cudatoolkit=9.2 -c pytorch/lts/2020`这样的命令是否有效? 还要考虑Python版本的问题。PyTorch 1.5.1可能只支持Python 3.6或3.7,用户当前的Python版本是否兼容?可能需要建议创建新的conda环境,指定Python版本,例如3.6,以确保兼容性。 另外,用户可能需要torchvision的对应版本。例如,PyTorch 1.5.1通常搭配torchvision 0.6.1,需要一并安装。如果用户没有提到,也应该提醒他们安装torchvision,并提供正确的版本号。 安装过程中可能遇到的常见问题包括依赖冲突、找不到包版本、或者CUDA与系统驱动不兼容。例如,用户系统上的NVIDIA驱动是否支持CUDA 9.2?需要检查驱动版本,因为CUDA 9.2需要至少特定版本的驱动,如果驱动太新或太旧都可能出问题。 此外,conda和pip混合使用可能导致环境混乱,应建议用户尽量使用conda管理所有依赖,或者在必要时使用pip并指定正确的仓库URL。 验证安装是否成功,用户可能需要运行简单的Python代码检查CUDA是否可用,以及版本是否正确。例如: import torch print(torch.__version__) print(torch.cuda.is_available()) print(torch.version.cuda) 如果用户遇到错误,比如CUDA不可用,可能需要检查系统驱动,或者conda是否正确安装了cudatoolkit。另外,可能需要确认conda的channel优先级,确保从正确的源安装了包。 最后,如果用户无法通过conda安装,可能需要手动下载wheel文件,或者从其他源安装。但conda通常能处理依赖关系,所以优先使用conda命令。 总结步骤应该是: 1. 创建新的conda环境,指定Python 3.6或3.7。 2. 添加pytorch的LTS channel或其他包含旧版本的channel。 3. 安装pytorch=1.5.1和cudatoolkit=9.2。 4. 安装对应的torchvision版本。 5. 验证安装,检查CUDA是否识别。 同时提醒用户旧版本可能存在的安全风险或兼容性问题,建议升级到新版本,除非必要。</think>--- ### **安装背景说明** 要在 conda 环境中安装 **CUDA 9.2** 和 **PyTorch 1.5.1**,需明确以下兼容性关系: - **PyTorch 1.5.1** 官方支持 CUDA 9.210.1 和 10.2,但默认源已移除旧版本。 - **CUDA 9.2** 需要 NVIDIA 驱动程序版本 ≥ 396.26(通过 `nvidia-smi` 检查驱动版本)。 - **Python 版本**需匹配 PyTorch 1.5.1 的要求(Python 3.6/3.7)。 --- ### **分步安装指南** #### **1. 创建干净的 conda 环境(避免依赖冲突)** ```bash conda create -n pytorch_legacy python=3.7 # 指定 Python 3.6 或 3.7 conda activate pytorch_legacy ``` --- #### **2. 添加 conda 旧版本源** PyTorch 官方将旧版本托管在长期支持(LTS)频道中: ```bash conda config --add channels pytorch/lts/2020 ``` --- #### **3. 安装 CUDA 9.2 和 PyTorch 1.5.1** ```bash conda install pytorch=1.5.1 torchvision=0.6.1 cudatoolkit=9.2 -c pytorch/lts/2020 ``` - **关键参数解释**: - `pytorch=1.5.1`: 指定 PyTorch 版本。 - `torchvision=0.6.1`: PyTorch 1.5.1 对应的 torchvision 版本。 - `cudatoolkit=9.2`: 指定 CUDA 工具包版本。 - `-c pytorch/lts/2020`: 从 LTS 频道拉取旧版本。 --- #### **4. 验证安装** 运行以下 Python 代码检查环境: ```python import torch print(torch.__version__) # 应输出 1.5.1 print(torch.cuda.is_available()) # 输出 True 表示 CUDA 可用 print(torch.version.cuda) # 应显示 9.2 ``` --- ### **常见问题与解决方案** | 问题现象 | 原因与解决方案 | |------------------------------|------------------------------------------------------------------------------| | **`conda install` 找不到包** | 检查是否添加了 `pytorch/lts/2020` 频道,或尝试指定完整频道路径:<br>`-c https://conda.anaconda.org/pytorch/lts/2020` | | **CUDA 不可用** | 1. 确认 NVIDIA 驱动支持 CUDA 9.2(驱动版本 ≥ 396.26)<br>2. 运行 `nvidia-smi` 检查 GPU 状态 | | **Python 版本不兼容** | 创建环境时需指定 Python 3.6 或 3.7:<br>`conda create -n env_name python=3.7` | | **依赖冲突** | 使用全新 conda 环境,避免与其他包(如 TensorFlow)混用 | --- ### **手动安装备选方案(conda 失效时)** 若 conda 安装失败,可直接从 PyTorch 历史版本仓库下载 `.whl` 文件: ```bash pip install torch==1.5.1+cu92 torchvision==0.6.1+cu92 -f https://download.pytorch.org/whl/lts/1.8/torch_lts.html ``` - **注意**:需确保 Python 版本为 3.6/3.7,且已安装 CUDA 9.2 驱动程序。 --- ### **系统环境要求** | 组件 | 版本要求 | |-----------------|--------------------------| | **操作系统** | Linux / Windows 10 | | **NVIDIA 驱动** | ≥ 396.26 | | **Python** | 3.6 或 3.7 | | **conda** | ≥ 4.8 | --- ### **附加建议** 1. **升级到新版**:PyTorch 1.5.1 发布于 2020 年,已停止维护,建议迁移到 PyTorch 2.0+ 和 CUDA 11.x。 2. **容器化部署**:使用 Docker 镜像固定旧版本环境,避免污染主机: ```bash docker pull pytorch/pytorch:1.5.1-cuda9.2-cudnn7-runtime ``` 3. **离线安装**:预先下载包文件(`.tar.bz2` 或 `.whl`),通过本地路径安装: ```bash conda install /path/to/pytorch-1.5.1.tar.bz2 ``` --- 通过以上步骤,您可以在支持 CUDA 9.2 的环境中稳定运行 PyTorch 1.5.1。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值