最新CUDA环境配置(Win10 + CUDA 11.6 + VS2019)

本篇博客根据NVIDIA 官方文档所述, 并根据自己实践得出. 供各位需要的朋友参考.

1.前言

本篇文章的软件环境为:

  • Windows 10
  • CUDA 11.6
  • VS2019

CUDA是目前做人工智能, 深度学习等方向的必备工具库. 由CUDA衍生出的加速工具很多, 如: cuDNN, TensorRT, cuBLAS等HPC加速库, 或者涉及最新的元宇宙概念中的Omniverse等.

在很多时候, 非常多的NVIDIA加速库的底层加速方案都是CUDA. 我们可能在绝大多数时候不会直接利用CUDA写代码, 但是了解CUDA如何运转或者基本概念一定能让你如虎添翼.

如果大家感兴趣也可以查看本人翻译的官方的CUDA编程手册,希望能帮到大家.
https://blog.csdn.net/kunhe0512/category_11774233.html

2.VS 2019

对于VS, 我用的其实极少. 本人从一开始就被老板带进了Vim + Makefile的环境. 这里简单提一下.

目前我用的是VS2019, 大家可以根据自己需要下载所需版本, 下面是链接地址.
https://visualstudio.microsoft.com/zh-hans/vs/

这里需要重点提的是, 尽量把使用C++的桌面开发选择上.后续在用CMake的时候会比较方便.

3.CUDA下载

CUDA官方安装教程: https://docs.nvidia.com/cuda/cuda-installation-guide-microsoft-windows/index.html

CUDA Toolkit的下载: https://developer.nvidia.com/cuda-downloads

点击上述下载页面之后, 你会看到:

你需要自己选择你的操作系统, 系统架构, 系统版本 和 安装方式.

选择完成之后, 点击 Download(2.5 GB) 的按钮,就可以下载了.

当然, 如果你想安装历史版本(更早期的版本), 那么也可以点击下面的Archive of Previous CUDA Releases来下载, 操作方法同上.

下载好之后, 你就可以看到以下图标:

4.安装配置

双击你下载的CUDA Toolkit, 你就会看到工具包的解压路径(推荐默认).

解压完毕之后, 就开始安装了, 接下来点击同意并继续:

接下来设置安装选项, 这里推荐点击自定义(特别是第一次安装):

然后将能选的都选上, 很多东西可能你一开始用不上(比如nsight系统), 但是当你做的越来越多, 涉及的越来越深的时候就可能会用到.

然后选择安装路径, 这里也推荐默认, 毕竟是底层的调用库

接下来就不用你在操作了, 直到CUDA Toolkit 安装完毕.

5.环境变量

右键点击我的电脑(此电脑) --> 属性 --> 高级系统设置 --> 环境变量, 查看CUDA路径是否已经在系统中, 如果没有记得添加上.

6.测试CUDA安装是否成功

利用(Win + R)–>cmd, 打开系统终端命令行, 输入

nvcc -V

如果你看到如下结果, 证明你的CUDA已经安装完毕.

7.利用Visual Studio 2019 进行CUDA程序开发

打开已经安装好的VS 2019, 选择创建新项目:

选择CUDA 11.xx Runtime, 这里的xx代表你的版本.

给你的CUDA程序起个名字: Matrix_transpose
这里的名字随便起的, 因为我后面要写一个矩阵转置的示例,所以才用Matrix_transpose这个名字

创建之后, 你会发现里面已经有了一些代码, 那个是向量相加的示例. 你不用管他, 把kernel.cu中的代码删掉, 就可以开始你自己的开发了.

你可以尝试输入一下代码, 完成一个矩阵转置的实例:

#include <stdio.h>
#include <stdlib.h>
#include "error.cuh"#define TILE_DIM 32   //Don't ask me why I don't set these two values to one
#define BLOCK_SIZE 32
#define N 3001 // for huanhuan, you know that!__managed__ int input_M[N * N];      //input matrix & GPU result
int cpu_result[N * N];   //CPU result//in-place matrix transpose
__global__ void ip_transpose(int* data)
{__shared__ int tile_s[TILE_DIM ][TILE_DIM + 1];__shared__ int tile_d[TILE_DIM ][TILE_DIM + 1];int x = blockIdx.x * TILE_DIM + threadIdx.x;int y = blockIdx.y * TILE_DIM + threadIdx.y;//Threads in the triangle belowif (blockIdx.y > blockIdx.x) {int dx = blockIdx.y * TILE_DIM + threadIdx.x;int dy = blockIdx.x * TILE_DIM + threadIdx.y;if (x < N && y < N){tile_s[threadIdx.y][threadIdx.x] = data[(y)*N + x];}if (dx < N && dy < N){tile_d[threadIdx.y][threadIdx.x] = data[(dy)*N + dx];}__syncthreads();if (dx < N && dy < N){data[(dy)*N + dx] = tile_s[threadIdx.x][threadIdx.y];}if (x < N && y < N){data[(y)*N + x] = tile_d[threadIdx.x][threadIdx.y];}}else if (blockIdx.y == blockIdx.x)//Threads on the diagonal{if (x < N && y < N){tile_s[threadIdx.y][threadIdx.x] = data[(y)*N + x];}__syncthreads();if (x < N && y < N){data[(y)*N + x] = tile_s[threadIdx.x][threadIdx.y];}}
}void cpu_transpose(int* A, int* B)
{for (int j = 0; j < N; j++){for (int i = 0; i < N; i++){B[i * N + j] = A[j * N + i];}}
}int main(int argc, char const* argv[])
{cudaEvent_t start, stop_gpu;CHECK(cudaEventCreate(&start));CHECK(cudaEventCreate(&stop_gpu));for (int i = 0; i < N; ++i) {for (int j = 0; j < N; ++j) {input_M[i * N + j] = rand() % 1000;}}cpu_transpose(input_M, cpu_result);CHECK(cudaEventRecord(start));unsigned int grid_rows = (N + BLOCK_SIZE - 1) / BLOCK_SIZE;unsigned int grid_cols = (N + BLOCK_SIZE - 1) / BLOCK_SIZE;dim3 dimGrid(grid_cols, grid_rows);dim3 dimBlock(BLOCK_SIZE, BLOCK_SIZE);ip_transpose << <dimGrid, dimBlock >> > (input_M);CHECK(cudaDeviceSynchronize());CHECK(cudaEventRecord(stop_gpu));CHECK(cudaEventSynchronize(stop_gpu));float elapsed_time_gpu;CHECK(cudaEventElapsedTime(&elapsed_time_gpu, start, stop_gpu));printf("Time_GPU = %g ms.\n", elapsed_time_gpu);CHECK(cudaEventDestroy(start));CHECK(cudaEventDestroy(stop_gpu));int ok = 1;for (int i = 0; i < N; ++i){for (int j = 0; j < N; ++j){if (fabs(input_M[i * N + j] - cpu_result[i * N + j]) > (1.0e-10)){ok = 0;}}}if (ok){printf("Pass!!!\n");}else{printf("Error!!!\n");}return 0;
}

点击运行之后, 你就可以看到如下结果:

OK, 到这里你就完成了CUDA环境的搭建, 并且写了第一个CUDA程序

最新CUDA环境配置(Win10 + CUDA 11.6 + VS2019)相关推荐

  1. 深度学习环境配置Win10+CUDA+cuDNN+Tensorflow2.0+PyTorch1.2+Python3.7.6

    系统环境:Win10 Python版本:3.7.6 CUDA版本:10.0 cuDNN版本:7.6.5 Tensorflow-gpu版本:2.0.1 PyTorch版本:1.2.0 深度学习环境配置W ...

  2. windows下VS安装CUDA环境配置

    CUDA安装见:https://blog.csdn.net/Ang_go/article/details/122329715 本文内容均在已安装VS和CUDA情况下,如需安装教程,请自行搜索. win ...

  3. CUDA学习:Windows下的CUDA环境配置

    Windows下的CUDA环境配置 一.查看自己电脑的显卡信息 使用win+R打开运行窗口,在运行窗口中输入cmd打开命令行 在命令行中键入nvidia-smi查看显卡支持信息 从下图中可以看到,本机 ...

  4. GPU编程自学2 —— CUDA环境配置

    深度学习的兴起,使得多线程以及GPU编程逐渐成为算法工程师无法规避的问题.这里主要记录自己的GPU自学历程. 目录 <GPU编程自学1 -- 引言> <GPU编程自学2 -- CUD ...

  5. Windows环境配置Anaconda+cuda+cuDNN+pytorch+jupyter notebook

    Windows环境配置Anaconda+cuda+cuDNN+pytorch+jupyter notebook Anaconda 1.官网下载安装包 https://repo.anaconda.com ...

  6. jetson xavier nx 系统及相关环境配置(cuda,torchvision,torch,tensorflow,opencv)

    一.装载系统 首先下载系统镜像 到这里下载https://developer.nvidia.com/embedded/downloads,选择自己需要的jetpack版本.我当时安装的时候查的资料都说 ...

  7. 【SLAM】SLAM环境配置 Win10+VS2019+OpenCV+PCL+g2o+Vcpkg

    目录 SLAM环境配置 Win10+VS2019+OpenCV+PCL+g2o+vcpkg 软件及版本 1. Windows 10 2. Visual Studio 2019 3. OpenCV 4. ...

  8. maven环境配置 win10,配置阿里云私服和默认仓库地址

    maven环境配置 win10 前提 具体步骤 其它问题 前提 JDK环境已经配置,检查 具体步骤 1.下载maven: https://maven.apache.org/download.cgi 2 ...

  9. pytorch gpu版本的最全安装教程,含环境配置、CUDA(百度云下载)安装程序失败解决方案

    看过我cpu版本的pytorch小白安装教程CPU版pytorch小白教程应该已经会设置清华源了,这里不再叙述,gpu版本的pytorch会默认以清华镜像源来下载,速度不用担心. 请关闭杀毒软件 尤其 ...

最新文章

  1. #ifndef、#def、#endif宏
  2. iw工具安装和使用 (修正版)
  3. 深入探究VC —— 编译器cl.exe(1)
  4. 2019-02-25-算法-进化
  5. 阿里面试题BIO和NIO数量问题附答案和代码
  6. 简约好看的响应式app下载页面源码
  7. dubbo kryo序列化_为什么如此高效?解密kryo各个数据类型的序列化编码机制,强...
  8. 超酷消息警告框插件(SweetAlert)
  9. C语言 堆内存操作
  10. 动态解析dll及使用类
  11. Java基础SQL优化---面试题【一】
  12. arcpy 使用ListFields函数获取字段列表的名称、类型和长度
  13. Unicdoe【真正的完整码表】对照表(二)汉字Unicode表
  14. 无法删除文件:无法读源文件或磁盘
  15. 【detectron】FPN网络中RPN构建与相应的损失函数
  16. 服务器C盘内存不足,发现C盘TEMP文件夹占用44G
  17. 组装服务器实训总结,计算机组装与维护实训总结
  18. 【论文阅读】iSAM贝叶斯树相关内容理解与学习
  19. 碎片化时代,有哪些高效的学习方法?
  20. R语言/Python 将地址标记在地图上

热门文章

  1. 前端react+scatter钱包+EOS的对接及账户余额查询。
  2. AI: Python 的Matplotlib 绘图算法库 介绍。
  3. 解酒方法最全妙招 很灵的!
  4. 读书寄语:慎独自律,学思并重
  5. 用easyPoi导出excel,带多sheet,合并单元格,合计,单元格金额类型
  6. 基于32单片机的16通道ADC的数据采集
  7. vip结尾的域名到期查询,多久会被删除?
  8. Android 获取手机通讯录联系人列表(仅供学习)
  9. 已知有十六支男子足球队参加2008 北京奥运会。写一个程序,把这16 支球队随机分为4 个组。
  10. 首发“长辈款”私有云,极空间Z2S/新Z4引领行业变革