在Win10下安装CUDA8.0,并使用VS2013测试;

机器配置:

  1. Windows 10
  2. VS 2013
  3. CUDA8.0

CUDA 8.0:下载地址

CUDA其他版本:下载地址

1. 安装CUDA 8.0

双击安装下载的.exe文件,然后选择解压路径,如下图,解压到哪里无所谓,安装成功会自动删除;

解压完成后,得到如下图:

  • 精简:安装所有CUDA模块,并覆盖掉当前的NVIDIA驱动程序;(说实话,容易出问题)
  • 自定义:选择自己想要安装的模块,此处选择这里;

选择自定义后,出现下图所示:

下面几个模块准确具体有什么用,不能100%确定,但能大概才出来:

  • CUDA:这个是必须的,下面有CUDA Runntime、Samples一些东西;
  • NVIDIA GeForce Experience:这个好像是为了更好的游戏体验,之前安装显卡驱动程序时也提示是否安装,果断拒绝了;
  • Other components:这里的PhysX好像也是为了游戏体验来的;
  • Driver components:这个就要慎重了,意思就是重新安装显卡驱动程序;如果之前已经成功安装驱动程序,这里就不用选了;如果之前没安装驱动程序,建议还是去官网上单独下载驱动程序进行安装吧;

选择好需要安装的模块,就要选择安装路径了,我的选择如下图:

  • 在如图所示位置建立相应文件夹,然后再指定安装路径;

安装成功后;Ctrl+R,打开cmd:

  1. nvcc -V

输出版本信息,则表明安装成功;

配置环境变量

F:\CUDA\NVIDIA GPU Computing Tookit\CUDA\v8.0\lib\x64添加的系统变量的path中;

2. 安装CuDNN

下载对应CUDA 8.0版本的CuDNN:下载链接

(如果安装的是其他版本的CUDA,注意CuDNN的版本)

下载完成后,解压得到一个名为cuda的文件夹;将该文件夹下的文件复制到上一步安装的CUDA中;注意对应的文件夹;

  1. ./cuda/bin/**.dll 复制到 ./NVIDIA GPU Computing Tookit/CUDA/v8.0/bin/
  2. ./cuda/include/**.dll 复制到 ./NVIDIA GPU Computing Tookit/CUDA/v8.0/include/
  3. ./cuda/lib/x64/**.dll 复制到 ./NVIDIA GPU Computing Tookit/CUDA/v8.0/lib/x64/

安装完成;

3. 测试1

使用VS2013打开./cuda/v8.0/Samples_vs2013.sln;

加载完成后,执行本地Windows编译,最后输出成功,见下图;

4. 测试2

在VS2013上配置CUDA;

4.1 新建项目并进行配置

  1. 打开VS2013,新建空白项目,设置项目名称、位置信息,如下图;

  1. 在源文件添加—>新建项—>NVIDIA CUDA 8.0—>CUDA C/C++ File,命名为hello.cu,如下图;

    hello.cu右键—>属性—>配置属性—>常规—>项类型,配置如下图;

  1. 在项目上右键—>生成依赖项—>生成自定义—>选择CUDA 8.0,如下图;

  1. 在项目上右键—>属性—>常规—>配置管理器—>活动解决方案平台(新建)—>键入或选择新平台(选择x64),如下图;

  1. 项目右键—>属性—>VC++目录—>包含目录,如下图,添加;
  1. F:\CUDA\NVIDIA GPU Computing Tookit\CUDA\v8.0\include
  1. 项目右键—>属性—>VC++目录—>库目录,如下图,添加;
  1. F:\CUDA\NVIDIA GPU Computing Tookit\CUDA\v8.0\lib\x64

  1. 项目右键—>属性—>链接器—>常规,如下图,添加;
  1. $(CUDA_PATH_V8_0)\lib\$(Platform)

  1. 项目右键—>属性—>链接器—>输入—>附加依赖项,如下图,添加;

注意:不同版本的CUDA,下面的lib是不同的;当然,一个项目也不一定需要所有的lib;

具体有哪些lib,位于:F:\CUDA_Dev_Doc_Sam\v8.0\lib\x64;

  1. cublas.lib
  2. cublas_device.lib
  3. cuda.lib
  4. cudadevrt.lib
  5. cudart.lib
  6. cudart_static.lib
  7. cudnn.lib
  8. cufft.lib
  9. cufftw.lib
  10. curand.lib
  11. cusolver.lib
  12. cusparse.lib
  13. nppc.lib
  14. nppi.lib
  15. nppial.lib
  16. nppicc.lib
  17. nppicom.lib
  18. nppidei.lib
  19. nppif.lib
  20. nppig.lib
  21. nppim.lib
  22. nppist.lib
  23. nppisu.lib
  24. nppitc.lib
  25. npps.lib
  26. nvblas.lib
  27. nvcuvid.lib
  28. nvgraph.lib
  29. nvml.lib
  30. nvrtc.lib
  31. OpenCL.lib

4.2 编译

在上面建的hello.cu文件中添加下面代码:

  1. // CUDA runtime 库 + CUBLAS 库
  2. #include <cuda_runtime.h>
  3. #include <cublas_v2.h>
  4. #include <device_launch_parameters.h>
  5. #include <time.h>
  6. #include <iostream>
  7. # pragma warning (disable:4819)
  8. using namespace std;
  9. bool initDevice(void)
  10. {
  11. int cnt, i;
  12. cudaGetDeviceCount(&cnt);
  13. if (cnt < 0){
  14. cout << "Can not find CUDA device" << endl;
  15. return false;
  16. }
  17. for (i = 0; i < cnt; i++){
  18. cudaDeviceProp porp;
  19. if (cudaGetDeviceProperties(&porp, i) == cudaSuccess){
  20. if (porp.major >= 1) {
  21. break;
  22. }
  23. }
  24. }
  25. if (i == cnt){
  26. cout << "< 1.0" << endl;
  27. }
  28. return true;
  29. }
  30. __global__ void kernel_compute(float *model, float *input, float *output)
  31. {
  32. int idx_x, idx_y;
  33. idx_y = blockIdx.x;
  34. idx_x = idx_y * blockDim.x + threadIdx.x;
  35. float sum = 0;
  36. for (int i = 0; i < 9; i++){
  37. sum += input[idx_x] * model[i];
  38. }
  39. //printf("%3d %d %2.6f %2.6f\n", idx_x, idx_y, sum, input[idx_x]);
  40. output[idx_x] = sum;
  41. }
  42. /*block ---> row*/
  43. int buildMaps(float *model, float *input, float *output, int height, int width)
  44. {
  45. initDevice();
  46. float *dev_m = NULL, *dev_i = NULL, *dev_o = NULL;
  47. int size = height * width;
  48. cudaMalloc((void **)&dev_m, 9 * sizeof(float));
  49. cudaMalloc((void **)&dev_i, size * sizeof(float));
  50. cudaMalloc((void **)&dev_o, size * sizeof(float));
  51. cudaMemcpy(dev_m, model, 9 * sizeof(float), cudaMemcpyHostToDevice);
  52. cudaMemcpy(dev_i, input, size * sizeof(float), cudaMemcpyHostToDevice);
  53. dim3 grid(height, 1, 1);
  54. dim3 block(width, 1, 1);
  55. kernel_compute << <grid, block >> > (dev_m, dev_i, dev_o);
  56. cudaMemcpy(output, dev_o, size * sizeof(float), cudaMemcpyDeviceToHost);
  57. return 0;
  58. }

新建main.cpp文件;

  1. #include <iostream>
  2. #include <Windows.h>
  3. #include <stdlib.h>
  4. #include <time.h>
  5. using namespace std;
  6. extern int buildMaps(float *model, float *input, float *output, int height, int width);
  7. void show(float *ptr, int height, int width, char *str)
  8. {
  9. cout << str << " : " << endl;
  10. for (int h = 0; h < height; h++){
  11. for (int w = 0; w < width; w++){
  12. int cnt = h * width + w;
  13. printf("%5.5f ", ptr[cnt]);
  14. }
  15. cout << endl;
  16. }
  17. }
  18. #define width 5
  19. #define size (width * width)
  20. int main()
  21. {
  22. float *model = (float *)malloc(9 * sizeof(float));
  23. float *input = (float *)malloc(size * sizeof(float));
  24. float *output = (float *)malloc(size * sizeof(float));
  25. if (!model || !input || !output){
  26. std::cout << "Malloc Error" << endl;
  27. exit(-1);
  28. }
  29. for (int i = 0; i < 9; i++){
  30. model[i] = (float)(i);
  31. }
  32. srand((unsigned)time(0));
  33. for (long long int i = 0; i < size; i++){
  34. input[i] = ((rand() % 100) * 1.f) / (rand() % 100 + 1);
  35. }
  36. buildMaps((float *)model, (float *)input, output, width, width);
  37. show(model, 3, 3, "model");
  38. show(input, width, width, "input");
  39. show(output, width, width, "output");
  40. int a;
  41. cin >> a;
  42. }

编译,输出结果为:

Windows下安装CUDA8.0的更多相关文章

  1. Ubuntu下安装CUDA8.0及nvidia驱动

    参考:https://blog.csdn.net/qq_35379989/article/details/80147630 cuda的历史版本下载地址:https://developer.nvidia ...

  2. ubuntu16.04下安装cuda8.0

    一.首先安装NVIDIA显卡驱动 通过NVIDIA-Linux-x86_64-367.44.run文件安装. 1. 添加 PPA. sudo add-apt-repository ppa:graphi ...

  3. Ubuntu16.04下安装CUDA8.0和tensorflow

    GPU版的Tensorflow无疑是深度学习的一大神器,当然caffe之类的框架也可以用GPU来加速训练. 注意:以下安装默认为python2.7 1. 安装依赖包 $ sudo apt-get in ...

  4. Ubuntu14.04下安装Cuda8.0

    https://blog.csdn.net/sinat_19628145/article/details/60475696 https://developer.nvidia.com/cuda-down ...

  5. Ubuntu 14.04下安装CUDA8.0

    配置环境如下: 系统:Ubuntu14.04 64bit 显卡:Nvidia K620M 显卡驱动:Nvidia-Linux-x86_64-375.66.run CUDA8.0 +  cudnn8.0 ...

  6. windows下安装mysql8.0压缩版

         下面总结下安装过程: 首先解压下载好的压缩版本. 将解压后mysql的bin文件目录配置系统环境path变量中 使用cmd打开命令窗口,输入mysqld  --initialize命令初始化 ...

  7. 在Windows下安装Elasticsearch5.0

    1.准备工作 安装和配置Java环境 2.下载 地址:https://www.elastic.co/downloads/elasticsearch 老版本:https://www.elastic.co ...

  8. windows下安装mysql-8.0.18-winx64

    1.下载安装包 安装包现在地址: https://dev.mysql.com/downloads/mysql/ 2.解压缩至安装目录 解压缩下载之后的zip,我这里使用的安装路径为: C:\Progr ...

  9. windows下安装Mongodb_4.0.6最新版及常用命令

    今天下载了最新版Mongodb进行安装,发现相比较于以前,方便了很多,直接下载: 一.下载地址:https://www.mongodb.com/download-center/enterprise 二 ...

随机推荐

  1. 我的Android进阶之旅------>Android中MediaButtonReceiver广播监听器的机制分析

    今天看公司的一段关于MediaButtonReceiver的代码看的比较混乱,幸好看了下面的这篇文章,才能茅塞顿开的理解好代码.在此转载下来,以备以后理解,希望都到这篇文章的人也能够有所帮助. 本文转 ...

  2. FI 常用表

    FI 常用表 GL部分:FAGLFLEXT(FMGLFLEXT)   总账汇总表 GLT0        旧总帐汇总表           SKA1        总账科目主记录 (科目表)      ...

  3. mysql服务器启动问题

    The server quit without updating PID file (/usr/local/mysql/data/snsgou.pid);可能的情况是启动的用户不对,

  4. A. Drazil and Date

    这是codeforces#292 div2 的一道题,因为本人比较水,目前只能做div2了.问题简化版就是: 从 (0,0) 走到 (a, b) ,s 步能不能走完.每次能向上下左右走,且只能走一步. ...

  5. glViewport()函数和glOrtho()函数的理解(转)

    转:http://www.cnblogs.com/yxnchinahlj/archive/2010/10/30/1865298.html 摘要:glOrtho相当指定图框的大小,由此会使得图框里的图形 ...

  6. Linux学习之路(四)帮助命令

    帮助命令man .man 命令 #获取指定命令的帮助 .man ls #查看ls的帮助 man的级别 1 查看命令的帮助 2 查看可被内核调用的函数的帮助 3 查看函数的函数库的帮助 4 查看特殊文件 ...

  7. css(4)

    类选择器和id选择器都有父子选择器. 在css文件中国,有时候为了简化样式,可以把相同的样式拿出来放在一起. display:inline display:block 行内元素里只能放行内元素,而块内 ...

  8. C# 多线程、控制线程数提高循环输出效率

    C#多线程及控制线程数量,对for循环输出效率. 虽然输出不规律,但是效率明显提高. 思路: 如果要删除1000条数据,只使用for循环,则一个接着一个输出.所以,把1000条数据分成seed段,每段 ...

  9. listen 72

    Warmer Temps May Bollux Botanicals Global warming might seem like a botanical boon. After all, milde ...

  10. ZJOI2012题解

    t1灾难 给一个食物网 如果一个生物吃的所有东西都灭绝了 它也跟着灭绝 求每个生物灭绝时跟着灭绝的生物数量 支配树裸题,我们先拓扑排序,然后建立一棵树满足一个点灭绝时,有且仅有它的子树跟着灭绝 考虑如 ...