【GPU】CUDA是什么?以及学习路线图!

简介: 【GPU】CUDA是什么?以及学习路线图!

什么是CUDA

作者:Keepin

  • 1、cuda是英伟达开发的一套应用软件接口(API)。其主要应用于英伟达GPU显卡的调用。
  • 2、云计算可以简单的理解为是通过网络组合成的计算机集群,用于各种加速,其中以CPU为主,GPU为辅。所以CUDA可以成为云计算的一个支柱。
  • 3、神经网络能加速的有很多,当然使用硬件加速是最可观的了,而目前除了专用的NPU(神经网络加速单元),就属于GPU对神经网络加速效果最好了:
  • 3.1、Cuda的整套软件非常完善,所以早期很多厂家用cuda能快速搭建神经网络加速软件框架,所以cuda也被广泛应用于神经网络加速。(当然英伟达还专门开发了一套神经网络套件,叫做tensorrt,在神经网络推理部署的时候更为广泛应用)
  • 3.2、从开发api来说,神经网络的加速不仅仅可以用cuda加速,还可以用其他API,例如GPU开发API很多,包括opencl,opengl,vulkan都可以在英伟达的GPU上加速神经网络,只不过在英伟达显卡上整体来说开发复杂,这些API优化效率不如cuda,毕竟cuda是英伟达自家开发的,自然适配地非常好
  • 3.3、从硬件角度来说,AMD的显卡也可以用于加速神经网络,只不过软件生态做得不如英伟达,自然应用程度也不如英伟达。事实上,AMD也开发一套Miopen的神经网络加速套件,类似于tensorrt;还开发了一套rocm套件,类似于cuda,只不过市场占有率较低而已。
  • 3.4、amd和nvidia都是以桌面端的GPU为主,在移动端,例如手机芯片,高通、苹果和arm的GPU也可以用于加速神经网络,主要使用opencl,vulkan,metal等开发API来实现。

cuda的官方文档:https://docs.nvidia.com/cuda/

学习路线

sazc

入门CUDA

说到入门,个人比较推荐《CUDA C编程权威指南》,虽然这本书年代比较久,原版书2014年出版的,使用的GPU最新也仅仅是2012年的CC3.X的Kepler,但这些基础知识仍然是掌握CUDA最新特性必不可少的,因此还是值得当作入门学习读物的。

进阶CUDA

CUDA C++ Programming Guide

要想Coding出高质量的Kernel,那么官方最新的《CUDA C++ Programming Guide》便是让我们可以全面了解到CUDA特性的最直接的办法,目前最新的版本是12.2。

注:此手册个人认为适合随时查阅,用到啥查啥,从头开始阅读学习,会耗费巨大的精力,效果甚微。

CUDA Samples

如果想利用CUDA特性,快速搭建“简单”的Kernel原型,那么官方的《CUDA Samples》便是再好不过的参考资料。

注:笔者曾经简单过了一遍这个repo,后面有任务需要编写分类算法、理解CUDA特性、学习CUDA 扩展库等,均从中找到了合适的Demo,快速搭建原型。

CUDA: NEW FEATURES AND BEYOND

如果对每代CUDA最新特性感兴趣,那么每年一次或两次的官方GTC发布的《CUDA: NEW FEATURES AND BEYOND》便是可以从宏观层面快速了解到该特性的最好方法之一。

注:观看视频,下载PDF需要注册,比较老的版本 Google可以搜到下载链接。

CUDA Library

cuDNN、cuBlas、cuDLA…。

GPU架构

搞CUDA的要不理解一些GPU的特性,那么永远写不出优质的代码,学习GPU架构可以从白皮书、GTC、官方Blog以及论坛的暗示入手。

SASS

官方的Binary Utilities与论坛的暗示、开源的Assembler、泄漏的SASS规格书、工具分析。

性能分析工具

Nsight System、Nsight Compute、Nsight VS Code等。

专业CUDA

答主目前还没到这个阶段,暂且挖坑。

学习资料

相关实践学习
部署Stable Diffusion玩转AI绘画(GPU云服务器)
本实验通过在ECS上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。
目录
相关文章
|
6月前
|
并行计算 TensorFlow 调度
推荐场景GPU优化的探索与实践:CUDA Graph与多流并行的比较与分析
RTP 系统(即 Rank Service),是一个面向搜索和推荐的 ranking 需求,支持多种模型的在线 inference 服务,是阿里智能引擎团队沉淀多年的技术产品。今年,团队在推荐场景的GPU性能优化上又做了新尝试——在RTP上集成了Multi Stream,改变了TensorFlow的单流机制,让多流的执行并行,作为增加GPU并行度的另一种选择。本文详细介绍与比较了CUDA Graph与多流并行这两个方案,以及团队的实践成果与心得。
|
6月前
|
并行计算 Linux Docker
Docker【部署 07】镜像内安装tensorflow-gpu及调用GPU多个问题处理Could not find cuda drivers+unable to find libcuda.so...
Docker【部署 07】镜像内安装tensorflow-gpu及调用GPU多个问题处理Could not find cuda drivers+unable to find libcuda.so...
658 0
|
2月前
|
存储 并行计算 算法
CUDA统一内存:简化GPU编程的内存管理
在GPU编程中,内存管理是关键挑战之一。NVIDIA CUDA 6.0引入了统一内存,简化了CPU与GPU之间的数据传输。统一内存允许在单个地址空间内分配可被两者访问的内存,自动迁移数据,从而简化内存管理、提高性能并增强代码可扩展性。本文将详细介绍统一内存的工作原理、优势及其使用方法,帮助开发者更高效地开发CUDA应用程序。
|
12月前
|
并行计算 Ubuntu PyTorch
Xshell远程连接配置 Ubuntu 18.04.6 + Anaconda + CUDA + Cudnn + Pytorch(GPU+CPU)(上)
Xshell远程连接配置 Ubuntu 18.04.6 + Anaconda + CUDA + Cudnn + Pytorch(GPU+CPU)
349 0
|
6月前
|
机器学习/深度学习 并行计算 算法框架/工具
Anaconda+Cuda+Cudnn+Pytorch(GPU版)+Pycharm+Win11深度学习环境配置
Anaconda+Cuda+Cudnn+Pytorch(GPU版)+Pycharm+Win11深度学习环境配置
836 3
|
6月前
|
并行计算 API C++
GPU 硬件与 CUDA 程序开发工具
GPU 硬件与 CUDA 程序开发工具
118 0
|
6月前
|
并行计算 API 开发工具
【GPU】GPU 硬件与 CUDA 程序开发工具
【GPU】GPU 硬件与 CUDA 程序开发工具
101 0
|
6月前
|
机器学习/深度学习 并行计算 流计算
【GPU】GPU CUDA 编程的基本原理是什么?
【GPU】GPU CUDA 编程的基本原理是什么?
158 0
|
6月前
|
弹性计算 并行计算 UED
GPU实例使用--自动安装NVIDIA GPU驱动和CUDA组件
GPU 云服务器正常工作需提前安装正确的基础设施软件,对于搭载了 NVIDIA 系列 GPU卡的实例而言,如果把 NVIDIA GPU 用作通用计算,则需安装 NVIDIA GPU 驱动、 CUDA、cuDNN等软件。
101371 3
|
6月前
|
弹性计算 并行计算 UED
带你读《弹性计算技术指导及场景应用》——4. 自动安装NVIDIA GPU驱动和CUDA组件
带你读《弹性计算技术指导及场景应用》——4. 自动安装NVIDIA GPU驱动和CUDA组件
146 0