前语 本文将带咱们了解 CUDA 编程,学习运用C和Python调用CUDA编程接口,对模型进行推理加快,功能优化。咱们将从底层原理开端,带咱们了解CUDA的工作机制,一步步掌握CUDA编程。相信咱们会受益菲浅。

欢迎重视公众号CV技能攻略,专心于计算机视觉的技能总结、最新技能盯梢、经典论文解读、CV招聘信息。

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

本教程来自常识星球【CV技能攻略】更多技能教程,可参加星球学习。

零教程的根本概述

在深度学习蓬勃发展的今天,模型变得越来越深,参数更加庞大,尽管准确率不断增加,因为硬件受限,对实践场景布置的要求也越来越高,CUDA 编程成为了一门必备的武林绝学。假如你对模型的推理速度有较高要求,假如你有庞大的数据流等待推理,一起跟着教程了解这门技能。

该教程现在暂定有以下章节,如有增加将会另行说明:

CUDA 教程(一) GPU 编程概述和 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 的移动显卡

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

之后去 NVIDIA 官网 下载对应发行版的 CUDA Toolkit,这儿依据自己的深度学习结构挑选版别,在装置 Toolkit 时会自带 CUDA Driver

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

下载文件引荐挑选 runfile 格式

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

文件比较大,等待时保证机器上有相应的依靠库,能够运转下面指令装置依靠库

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

假如体系为图形界面,需求检查体系是否自带开源 NVIDIA Nouveau 驱动

lsmod | grep -i "nouveau"

假如有输出,需求禁用 Nouveau 驱动

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

在文件中追加如下内容

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

一起卸载 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写入

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

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

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

装置完结后重启图形界面

sudo service lightdm restart

接下来装置 cuDNN

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

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

下载完结后解压

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

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

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

即装置完结

Windows 装置

翻开设备管理器,检查当时显卡类型

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

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

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

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

这儿引荐 Studio 驱动程序,不建议 Game Ready 驱动程序,能够在 NVIDIA 驱动程序下载 找到对应显卡的驱动程序。装置完结后如图所示

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

之后依据体系驱动程序版别下载 CUDA 装置程序,点击检查体系驱动程序版别和 CUDA 版别对应联系,引荐 exe(local)

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

下载完结后双击翻开,这儿运用默许方位

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

运用自定义装置

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

这儿要记住装置方位,引荐默许

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

装置后会主动增加环境变量,翻开 Powershell / CMD,输入nvcc -V

如有相似下面的输出,则装置成功

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

接下来装置 cuDNN

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

下载完结解压后怎么下图

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

把这三个文件夹拷贝到 CUDA 的装置目录下,同名文件夹会主动兼并。

将如下路径增加到体系环境变量中

CUDA 教程(一) GPU 编程概述和 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…

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

装置指令

pip install pycuda*.whl

四 Nvidia Nsight Systems

简称 nsys,是一款低开销功能分析东西,旨在为开发人员供给优化软件所需的洞察力。无偏差的活动数据可在东西中可视化,可帮助用户查询瓶颈,避免揣度误报,并以更高的功能提升概率完成优化。用户将能够辨认问题,例如 GPU 闲置、不必要的 GPU 同步、CPU 并行化缺乏。

依据体系平台挑选合适的装置包

developer.nvidia.cn/gameworksdo…

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

装置完结后输入指令

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进阶介绍

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。