深度学习配置CUDA8.0/9.0及对应版本cuDNN安装

来源:互联网 发布:淘宝冷门类目 编辑:程序博客网 时间:2024/05/08 15:24

本人为中科院测地所博士生,所研究专业为自然地理学(遥感数据分析方向),研究课题偏向于深度学习。

由于本人不是计算机专业,故有关计算机配置及操作方面相较于计算机专业人员不是那么专业。所以请各位大牛大神绕道,我这里所做的一些工作比较浅显,仅供需要的各位一起交流。

在深度学习的配置环境过程中,第一步则是需要安装microsoft的visual studio。这个在本人的第一篇博客中已经说明。接下来,在深度学习的过程中,需要用GPU计算加快计算速度。笔者电脑的配置是win10+E5服务器cpu+N卡1070显卡。因此可以安装CUDA。关于CUDA的概念及作用在此我就不再赘述了,各位读者可以自行百度或在NVIDIA官网上查看。在此我贴出的是安装过程。

在配置深度学习的过程中,国外大牛有使用CUDA6.5/7.5/8.0/9.0的,深度学习及显卡计算能力发展快速,CUDA6.5及7.5即将淘汰,或与笔者的1070显卡不兼容(因为10系列采用了全新的帕斯卡架构),为了防止出现一些不兼容的错误及各版本都能计算,我同时安装了主流的CUDA8.0,及与10系列显卡兼容的最新CUDA9.1。

需要注意的第一点是,在配置时,vs2013=Microsoft Visual Studio 12.0,vs2015=Microsoft Visual Studio 14.0。建议CUDA9.1使用VS2015,CUDA8.0使用VS2013。本质上并没有区别,但为了区分方便而已。

需要注意的第二点是,两者可以安装在一台电脑上并不冲突。作者在搜索度娘时有人回答:可以同时安装,但必须先安装低版本(CUDA8.0)再安装高版本(CUDA9.0/9.1),对此笔者并没有证实,不知道所言是否正确。但为了电脑不会出什么差错,我还是先安装了8.0,再安装了9.1.实测并不冲突,可以兼容。

需要注意的第三点是,CUDA8.0对应的cuDNN版本是5.1,CUDA9.0对应的cuDNN7.0。同时,cuDNN可以同时安装在CUDA8.0和9.0中,而cuDNN7.0只能对CUDA9.0及以上适用。

各位读者最好事先在NVIDIA网站注册一个账号,便于下载使用。


先给出官方的CUDA下载地址,

CUDA9.1:https://developer.nvidia.com/cuda-downloads


CUDA8.0:https://developer.nvidia.com/cuda-80-ga2-download-archive


cuDNN7.0:https://developer.nvidia.com/cudnn



如果各位不知道怎么下载,可以去我的网盘查看

CUDA8.0-cuDNN5.1:链接:https://pan.baidu.com/s/1b6D3n4 密码:yhhf

CUDA9.1-cuDNN7.0:链接:https://pan.baidu.com/s/1jHYh67c 密码:jlfn

笔者并不是只安装,而是边安装别配置,这样一步步可以在某一个环节出问题就马上重来,而不用在最后发现出问题了又重新开始。

安装及配置过程本人以CUDA9.1/cuDNN7.0为例,CUDA8.0/cuDNN5.1同理。

打开CUDA9.1安装文件


安装文件会解压,默认路径为

可以自己选择路径存放安装包


选择后开始提取


需要注意的是,如果电脑安装有360,会误报查杀,这个时候需要手动下拉菜单,选择允许程序的所有操作,否则会被360隔离


安装文件提取完成后,会自动运行安装程序,这个时候会有短暂的系统兼容性检查


同意协议并继续安装


如果对电脑不熟悉的同学可以直接选择精简安装,这个时候不用选择什么,直接安装就可以了。

对电脑配置较熟悉的同学可以选择自定义安装,并自定义安装文件夹。

自定义安装文件夹的好处是可以不占用C盘系统盘空间,数据也可以自己方便处理。

笔者选择了自定义安装


默认安装所有程序


这个时候会有安装位置的选择。程序默认安装在C盘。如果不想改的同学就可以点安装了。

需要说明的是:sanple和cuda程序不是安装在同一个文件夹的。程序文件夹program files很好找,但是sample的programdata文件夹在哪呢?这里需要一个小操作,显示隐藏文件夹:

打开C盘或任意文件夹,点击查看,在隐藏的项目前打勾,这样就显示了


正是因为笔者觉得这样很麻烦,还占用系统盘空间,所以选择了安装自己指定的文件夹,当然自己要记住就行,因为配置的时候这个文件夹路径是需要用到的。作者的安装路径如下图所示:


之后会有比较长时间的安装过程。


这个安装就比较有意思了,有的电脑会在安装过程中闪动,之后安装直接成功。直接安装成功可以直接跳到验证阶段。

但有的电脑,比如说笔者的电脑,会黑屏,然后再无响应,不怕,按笔者的解决方法,亲测可以安装完成。

电脑不是黑屏了吗,笔者去吃饭了,过了很久回来看到黑屏以后,打开sample文件夹,发现例子已经安装好,但是cuda文件夹是空的

于是长按机箱关机键关机,重启电脑,再次运行安装程序,即CUDA安装再来一遍,此后安装成功,也不会黑屏。安装成功画面如图:

如果黑屏。重启安装是绝对可以的!!笔者黑屏只能跟你们说说,也截不了屏对吧。。。。。另外笔者电脑没有安装vs2010,2012和2017,但是其余的都安装成功,有vs2013和2015就够啦!


这样就全部安装成功。



这个时候就要验证一下CUDA是否安装好了,有以下几种检验方法

第一种是打开cmd,输入nvcc -V,显示如下,则CUDA安装成功。如果安装8.0版本就是v8.0....


第二种,命令行中运行C:\Program Files\NVIDIA Corporation\NVSMI\nvidia-smi.exe,可以得到GPU运行时的监测界面,则CUDA安装成功


第三种,运行CUDA Samples,以deviceQuery.exe为例,打开VS2015,点击文件,打开刚刚安装的示例文件


在release条件下生成项目,会显示成功,则CUDA安装成功。

第四种,运行CUDA Samples,以bandwidthTest.exe为例,打开VS2015,点击文件,打开刚刚安装的示例文件

在debug条件下生成项目,会显示成功,则CUDA安装成功。第三种第四种本质上是一样的,都是运行示例文件,在此放一个截图即可。


第五种就厉害了,首先右键我的电脑,看系统变量中是否包含刚刚安装的CUDA文件夹。如果包含直接下一步,如果不包含加入系统变量


打开vs2015,新建项目,通过CUDA9.1新建cpp


复制粘贴以下代码

// CUDA runtime 库 + CUBLAS 库 #include "cuda_runtime.h" #include "cublas_v2.h" #include <time.h> #include <iostream> using namespace std;// 定义测试矩阵的维度 int const M = 5;int const N = 10;int main(){// 定义状态变量 cublasStatus_t status;// 在内存中为将要计算的矩阵开辟空间 float *h_A = (float*)malloc(N*M * sizeof(float));float *h_B = (float*)malloc(N*M * sizeof(float));// 在 内存 中为将要存放运算结果的矩阵开辟空间 float *h_C = (float*)malloc(M*M * sizeof(float));// 为待运算矩阵的元素赋予 0-10 范围内的随机数 for (int i = 0; i<N*M; i++) {h_A[i] = (float)(rand() % 10 + 1);h_B[i] = (float)(rand() % 10 + 1);}// 打印待测试的矩阵 cout << "矩阵 A :" << endl;for (int i = 0; i<N*M; i++) {cout << h_A[i] << " ";if ((i + 1) % N == 0) cout << endl;}cout << endl;cout << "矩阵 B :" << endl;for (int i = 0; i<N*M; i++) {cout << h_B[i] << " ";if ((i + 1) % M == 0) cout << endl;}cout << endl;/*** GPU 计算矩阵相乘*/// 创建并初始化 CUBLAS 库对象cublasHandle_t handle;status = cublasCreate(&handle);if (status != CUBLAS_STATUS_SUCCESS){if (status == CUBLAS_STATUS_NOT_INITIALIZED) {cout << "CUBLAS 对象实例化出错" << endl;}getchar();return EXIT_FAILURE;}float *d_A, *d_B, *d_C;// 在 显存 中为将要计算的矩阵开辟空间 cudaMalloc((void**)&d_A, // 指向开辟的空间的指针 N*M * sizeof(float) // 需要开辟空间的字节数 );cudaMalloc((void**)&d_B,N*M * sizeof(float));// 在 显存 中为将要存放运算结果的矩阵开辟空间 cudaMalloc((void**)&d_C,M*M * sizeof(float));// 将矩阵数据传递进 显存 中已经开辟好了的空间 cublasSetVector(N*M, // 要存入显存的元素个数 sizeof(float), // 每个元素大小 h_A, // 主机端起始地址 1, // 连续元素之间的存储间隔 d_A, // GPU 端起始地址 1 // 连续元素之间的存储间隔 );cublasSetVector(N*M,sizeof(float),h_B,1,d_B,1);// 同步函数cudaThreadSynchronize();// 传递进矩阵相乘函数中的参数,具体含义请参考函数手册。 float a = 1; float b = 0;// 矩阵相乘。该函数必然将数组解析成列优先数组 cublasSgemm(handle, // blas 库对象 CUBLAS_OP_T, // 矩阵 A 属性参数 CUBLAS_OP_T, // 矩阵 B 属性参数M, // A, C 的行数 M, // B, C 的列数N, // A 的列数和 B 的行数&a, // 运算式的 α 值 d_A, // A 在显存中的地址 N, // lda d_B, // B 在显存中的地址 M, // ldb &b, // 运算式的 β 值 d_C, // C 在显存中的地址(结果矩阵) M // );// 同步函数 cudaThreadSynchronize();// 从 显存 中取出运算结果至 内存中去cublasGetVector(M*M, // 要取出元素的个数 sizeof(float), // 每个元素大小 d_C, // GPU 端起始地址 1, // 连续元素之间的存储间隔 h_C, // 主机端起始地址1 // 连续元素之间的存储间隔 );// 打印运算结果 cout << "计算结果的转置 ( (A*B)的转置 ):" << endl;for (int i = 0; i<M*M; i++) {cout << h_C[i] << " ";if ((i + 1) % M == 0) cout << endl;}// 清理掉使用过的内存 free(h_A);free(h_B);free(h_C);cudaFree(d_A);cudaFree(d_B);cudaFree(d_C);// 释放 CUBLAS 库对象cublasDestroy(handle);getchar();return 0;}
在运行前还要进行如下操作:

右键生成自定义,选择安装好的CUDA9.1


右键cu属性,选择配置属性,项类型中选择cuda c++


右键属性,在vc目录中加入变量:

包含目录为:D:\professionalsoft\NVIDIA\CUDA Documentation&Development\v9.1\include

库目录:D:\professionalsoft\NVIDIA\CUDA Documentation&Development\v9.1\lib


配置属性–>连接器–>输入–>附加依赖项中添加库文件

cublas.lib 
cuda.lib 
cudadevrt.lib 
cudart.lib 
cudart_static.lib 
nvcuvid.lib 
OpenCL.lib


按F5运行,得到结果,则CUDA安装成功。


安装且配置验证好CUDA以后,下面安装cuDNN,其实并不叫安装,就是把解压后的文件复制到CUDA文件夹中



下面进行最后一步,验证cuDNN安装是否成功

打开vs2015,新建项目,新建cpp,复制粘贴以下代码

#include <iostream>#include <cuda_runtime.h>#include <cudnn.h>using namespace std;void main() {cudnnHandle_t handle;cudnnStatus_t t = cudnnCreate(&handle);cout << cudnnGetErrorString(t);getchar();}
项目属性/VC++ Directories/Include Directories 中添加入include的路径

在项目属性/VC++ Directories/Libary Directories 中添加入lib\x64路径


在项目属性/Linker/Input/Additional Dependencies  中添加入cudnn.lib;

项目属性/CUDA C|C++ / Device /Code Generation 中,将sm_20改为 sm_30或更高;

例如笔者的是1070.可以改为61


项目属性修改完毕。按F5运行。得到cudnn成功状态,则cuDNN安装成功


至此,CUDA8.0/9.1及对应cuDNN 5.1/7.0安装且配置成功。使用GPU计算是深度学习计算的基础,配置成功以后,深度学习计算速度使用GPU将更快了。



阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 女卫衣 秋冬卫衣 卫衣排行榜 男卫衣搭配 卫衣长款 卫衣搭配女 zara卫衣 supreme卫衣 卫衣配大衣 卫衣款式图 卫衣男士 帽衫卫衣 短卫衣 大牌卫衣 定制卫衣 卫衣为什么叫卫衣 黑卫衣搭配 卫衣配什么 翅膀卫衣 班服卫衣 秋款卫衣 冬季卫衣 卫衣款式 卫衣厂家 少女卫衣 aj卫衣 中年女卫衣 安踏卫衣女 卫衣开衫 阔腿裤卫衣 off卫衣 潮牌卫衣 卫衣的穿搭 潮流卫衣 女式卫衣 立领卫衣 安踏女卫衣 女卫衣套装 名牌卫衣 两面穿卫衣 女装卫衣