CUDA 教程(一) GPU 编程概述和 CUDA 环境搭建

2,146 阅读7分钟

前言 本文将带大家了解 CUDA 编程,学习使用C和Python调用CUDA编程接口,对模型进行推理加速,性能优化。我们将从底层原理开始,带大家了解CUDA的工作机制,一步步掌握CUDA编程。相信大家会受益菲浅。

欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读、CV招聘信息。

计算机视觉入门1v3辅导班

本教程来自知识星球【CV技术指南】更多技术教程,可加入星球学习。

零教程的基本概述

在深度学习蓬勃发展的今天,模型变得越来越深,参数愈加庞大,虽然准确率不断增长,由于硬件受限,对实际场景部署的要求也越来越高,CUDA 编程成为了一门必备的武林绝学。如果你对模型的推理速度有较高要求,如果你有庞大的数据流等待推理,一起跟着教程了解这门技术。

该教程目前暂定有以下章节,如有添加将会另行说明:

通过这些教程,可以说初入了 CUDA 编程的世界,基本学会了如何部署加速自己的深度学习模型。

一 CUDA简介

首先介绍一下 GPU,在计算机中,GPU 相比 CPU,拥有非常多的内核,这意味着 GPU 可以以非常高的吞吐量执行程序,如同一条非常宽阔的道路可以同时让很多车辆同时通行,例如最新的 RTX 3090 的核心数达到了恐怖的 10496 个,而当前的顶级 CPU 通常只有不超过 32 核心。因此我们需要正确地设计并行化加速算法,就可以发挥 GPU 的强大优势。

CUDA 是由英伟达 NVIDIA 于 2007 年所推出针对 NVIDIA GPU 专有系统,通过 CUDA,用户可方便地使用封闭好的 SDK 对 GPU 进行复杂的数值计算,在深度学习领域,CUDA 提供了一套强大的加速并行计算和人工智能相关的代码库,同时,NVIDIA 官方提供了非常完善的安装程序。

二 CUDA 安装

Linux 安装

首先检查本机是否有 nvidia 的显卡

lspci | grep -i "nvidia"

请不要在vm虚拟机中安装 CUDA

以笔主的电脑为例,有一张 RTX 3060 的移动显卡

之后去 NVIDIA 官网 下载对应发行版的 CUDA Toolkit,这里根据自己的深度学习框架选择版本,在安装 Toolkit 时会自带 CUDA Driver

下载文件推荐选择 runfile 格式

文件比较大,等待时确保机器上有相应的依赖库,可以运行下面命令安装依赖库

如果系统为图形界面,需要检查系统是否自带开源 NVIDIA Nouveau 驱动

lsmod | grep -i "nouveau"

如果有输出,需要禁用 Nouveau 驱动

sudo vim /etc/modprobe.d/blacklist.conf

在文件中追加如下内容

同时卸载 nvidia 相关包

sudo apt purge nvidia-*

重启系统

sudo reboot

重启后使用Ctrl + Alt + F2进入 tt2,再次检查开源驱动是否启动

lsmod | grep -i "nouveau"

然后关闭显示服务,并修改安装文件权限

sudo service lightdm stop
chmod 777 cuda_10.2.89_440.33.01_linux.run

之后运行 CUDA 安装脚本,在安装时

sudo sh cuda_*_linux.run

安装完成后脚本会自动在/usr/local创建 cuda -> /usr/local/cuda-11.8/ 软链接,在 ~/.bashrc写入

在终端中输入 nvcc -V ,如有类似下面的输出,则安装成功

安装完成后重启图形界面

sudo service lightdm restart

接下来安装 cuDNN

developer.nvidia.com/rdp/cudnn-d…

下载完成后解压

zip -xf cudnn-linux-x86_64-8.6.0.163_cuda11-archive.tar.xz

将解压后的文件拷贝到 CUDA 对应的安装目录下,并添加权限

即安装完成

Windows 安装

打开设备管理器,查看当前显卡型号

以笔主的电脑为例,有一张 RTX 3060 的移动显卡

再在桌面右击或打开系统小托盘,打开 NVIDIA 控制面板

这里推荐 Studio 驱动程序,不建议 Game Ready 驱动程序,可以在 NVIDIA 驱动程序下载 找到对应显卡的驱动程序。安装完成后如图所示

之后根据系统驱动程序版本下载 CUDA 安装程序,点击查看系统驱动程序版本和 CUDA 版本对应关系,推荐 exe(local)

下载完成后双击打开,这里使用默认位置

使用自定义安装

这里要记住安装位置,推荐默认

安装后会自动添加环境变量,打开 Powershell / CMD,输入nvcc -V

如有类似下面的输出,则安装成功

接下来安装 cuDNN

developer.nvidia.com/rdp/cudnn-d…

下载完成解压后如何下图

把这三个文件夹拷贝到 CUDA 的安装目录下,同名文件夹会自动合并。

将如下路径添加到系统环境变量中

即安装完成

三 PyCUDA

PyCUDA 是 NVIDIA 针对 python 编写的 CUDA API,底层使用 C++, 使用 PyCUDA 可以更方便地编写代码。同样 CUDA 错误都会自动转换为 Python 异常。

Linux 安装

确保电脑中安装了 python 环境和 pip,安装命令

pip install pycuda

Windows 安装

根据自己的 CUDA 版本 和 Python 版本下载 whl 文件 www.lfd.uci.edu/~gohlke/pyt…

安装命令

pip install pycuda*.whl

四 Nvidia Nsight Systems

简称 nsys,是一款低开销性能分析工具,旨在为开发人员提供优化软件所需的洞察力。无偏差的活动数据可在工具中可视化,可帮助用户调查瓶颈,避免推断误报,并以更高的性能提升概率实现优化。用户将能够识别问题,例如 GPU 闲置、不必要的 GPU 同步、CPU 并行化不足。

根据系统平台选择合适的安装包

developer.nvidia.cn/gameworksdo…

安装完成后输入命令

nsys --version

如有返回,即安装完成

本教程来自知识星球【CV技术指南】更多技术教程,可加入星球学习。

欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读、CV招聘信息。

计算机视觉入门1v3辅导班

【技术文档】《从零搭建pytorch模型教程》122页PDF下载

QQ交流群:444129970。群内有大佬负责解答大家的日常学习、科研、代码问题。

其它文章

深度理解变分自编码器(VAE) | 从入门到精通

计算机视觉入门1v3辅导班

计算机视觉交流群

用于超大图像的训练策略:Patch Gradient Descent

CV小知识讨论与分析(5)到底什么是Latent Space?

【免费送书活动】关于语义分割的亿点思考

新方案:从错误中学习,点云分割中的自我规范化层次语义表示

经典文章:Transformer是如何进军点云学习领域的?

CVPR 2023 Workshop | 首个大规模视频全景分割比赛

如何更好地应对下游小样本图像数据?不平衡数据集的建模的技巧和策

Transformer交流群

U-Net在2022年相关研究的论文推荐

用少于256KB内存实现边缘训练,开销不到PyTorch千分之一

PyTorch 2.0 重磅发布:一行代码提速 30%

Hinton 最新研究:神经网络的未来是前向-前向算法

聊聊计算机视觉入门

FRNet:上下文感知的特征强化模块

DAMO-YOLO | 超越所有YOLO,兼顾模型速度与精度

《医学图像分割》综述,详述六大类100多个算法

如何高效实现矩阵乘?万文长字带你从CUDA初学者的角度入门

近似乘法对卷积神经网络的影响

BT-Unet:医学图像分割的自监督学习框架

语义分割该如何走下去?

轻量级模型设计与部署总结

从CVPR22出发,聊聊CAM是如何激活我们文章的热度!

入门必读系列(十六)经典CNN设计演变的关键总结:从VGGNet到EfficientNet

入门必读系列(十五)神经网络不work的原因总结

入门必读系列(十四)CV论文常见英语单词总结

入门必读系列(十三)高效阅读论文的方法

入门必读系列(十二)池化各要点与各方法总结

TensorRT教程(三)TensorRT的安装教程

TensorRT教程(一)初次介绍TensorRT

TensorRT教程(二)TensorRT进阶介绍