有没有一本讲解gpu和CUDA编程的经典入门书籍?

部署运行你感兴趣的模型镜像

作者 | JerryYin777  编辑 | 自动驾驶之心

原文链接:https://www.zhihu.com/question/26570985/answer/3465784970

点击下方卡片,关注“自动驾驶之心”公众号

戳我-> 领取自动驾驶近15个方向学习路线

>>点击进入→自动驾驶之心CUDA技术交流群

本文只做学术分享,如有侵权,联系删文

Preface

去年给实验室学弟学妹写的入门指南,内容儿童友好型,from scratch层级的指南,也总结了我自己的学习经验,当然部分内容也偏向LLM这边(毕竟确实很有用嘛),写作时间是2023年9月,可能和现在有一定时间上的间隔,还望海涵。(另:感谢CUMT的叶同学,推荐了很多有用的资料和资源)

如果让我现在推荐一个项目,我会建议去看Karpathy的llm.c,写得巨好:https://github.com/karpathy/llm.c

CUDA入门

WHY CUDA?

GPU 底层的硬件设计导致它特别擅长于执行逻辑简单但是并行程度极高的计算任务,而 CUDA 的主要目的是“向显卡提交一个又一个任务,每一个任务都形如“给定一个函数,与调用它的参数,请在显卡上运行这个函数”。

关于CPU和GPU的工作原理,Nvidia给出了一个比较生动的例子:

NVIDIA现场形象展示CPU和GPU工作原理上的区别:https://www.bilibili.com/video/BV1ry4y1y7KZ/?

How to Start CUDA Learning?

知乎找到的一个官方学习路线,同样也可以参考:https://zhuanlan.zhihu.com/p/273607744

首先,至少要有一块GPU,以及配置相应的CUDA环境(安装CUDA-Toolkit等)

Configure Software Environment

  • 教程:https://zhuanlan.zhihu.com/p/432092988

  • 推荐OS:任意Linux系统(推荐Ubuntu)

  • 推荐IDE:VSCode(Remote SSH)/Clion(Jetbrain配置CUDA环境便捷)

  • 推荐CUDA版本:11.x(12.x有点问题)

  • 推荐GPU:实验室的V100/Titan/P100

配好后,验证是否已经安装好,只需建立hello_world.cu执行下面的例程:

// hello_world.cu
// CUDA: Hello,World
#include <stdio.h>

__global__ void hello_world(void)
{
    printf("GPU: Hello world!\\n");
}

int main(int argc, char** argv)
{
    printf("CPU: Hello world!\\n");
    hello_world<<<1, 10>>>();
    cudaDeviceReset(); // 如果没有这一行,无法从GPU输出 "hello world"
    return 0;
}
nvcc hello_world.cu -o hello_world
./hello_world
//Output:
// CPU: Hello world!
// GPU: Hello world!
// GPU: Hello world!
// GPU: Hello world!
// GPU: Hello world!
// GPU: Hello world!
// GPU: Hello world!
// GPU: Hello world!
// GPU: Hello world!
// GPU: Hello world!
// GPU: Hello world!

How to Understand CUDA?

如何理解包括Block、Thread、wrap等概念和操作

推荐的相关资料:

  • 谭升的博客:https://face2ai.com/program-blog/#GPU编程(CUDA)
    我见过的最好的中文入门CUDA教程
    相关代码:https://github.com/Tony-Tan/CUDA_Freshman

  • CUDA - From Correctness to Performance:https://wiki.lcpu.dev/zh/hpc/from-scratch/cuda
    尝试在纠错中理解CUDA相关概念和注意事项
    相关代码:https://github.com/interestingLSY/CUDA-From-Correctness-To-Performance-Code

  • Xiao's CUDA Optimization Guide:https://github.com/XiaoSong9905/CUDA-Optimization-Guide
    同样是一份不错的中文入门CUDA教程,更偏向优化方面

  • 高性能并行编程与优化:https://github.com/parallel101/course
    尝试理解并行计算的本质,和写CUDA本身无关但能够明白并行化思维
    相关视频:https://space.bilibili.com/263032155

  • Efficient Distributed GPU Programming for Exascale, an SC/ISC Tutorial
    尝试理解如何利用MPI在单机多卡/多机多卡实现GPU Programming,世界最顶级超算会议ISC23/SC23教程
    相关代码:https://github.com/FZJ-JSC/tutorial-multi-gpu/tree/main

推荐的书籍:

  • Programming Massively Parallel Processors(好像链接失效了,如果有需要可以问我要):https://github.com/h3ct0rjs/HighPerformanceComputing/blob/master/BookRef/Programming Massively Parallel Processors.pdf

How to Understand CUDA in a Real Project

在项目中尝试理解CUDA的用处,目前来说,它最热门的用处是大模型的训练、推理以及CG方向的渲染,当然它也可以迁移到图计算、图卷积神经网络(GCN)方面

  • LightSeq:A High Performance Library for Sequence Processing and Generation
    字节跳动开源的生成模型推理加速引擎,BERT、GPT、VAE等等全都支持,速度很快
    代码地址:https://github.com/bytedance/lightseq

  • FasterTransformer:Transformer related optimization, including BERT, GPT
    英伟达开源的Transformer推理加速引擎
    代码地址:https://github.com/NVIDIA/FasterTransformer

  • Flash-LLM: Enabling Cost-Effective and Highly-Efficient Large Generative Model Inference with Unstructured Sparsity
    当前推理的SOTA,达摩院9月的最新研究
    代码地址:https://github.com/AlibabaResearch/flash-llm

  • HierarchicalKV:A part of NVIDIA Merlin and provides hierarchical key-value storage to meet RecSys requirements
    将键值特征嵌入存储在GPU的高带宽内存和主机内存中,还可以用作通用键值存储
    代码地址:https://github.com/NVIDIA-Merlin/HierarchicalKV

  • GPTQ inference TVM kernel
    TVM推理,能完整理解一个小模型的训练、推理,亮点是用了TVM(深度学习模型编译框架)编译,这是一个未来的好方向
    代码地址:https://github.com/LeiWang1999/AutoGPTQ.tvm

  • 3D Gaussian Splatting for Real-Time Radiance Field Rendering(CG方向)
    代码地址:https://github.com/graphdeco-inria/gaussian-splatting

  • Instant Neural Graphics Primitives with a Multiresolution Hash Encoding(CG方向)
    代码地址:https://github.com/NVlabs/instant-ngp

课程推荐

  • 课程推荐:CS344: Intro to Parallel Programming:https://developer.nvidia.com/udacity-cs344-intro-parallel-programming

自动驾驶之心知识星球』欢迎加入交流!重磅,自动驾驶之心科研论文辅导来啦,申博、CCF系列、SCI、EI、毕业论文、比赛辅导等多个方向,欢迎联系我们!

e2720690b0cc6988967be5d210493905.jpeg

① 全网独家视频课程

端到端自动驾驶、仿真测试、自动驾驶C++、BEV感知、BEV模型部署、BEV目标跟踪、毫米波雷达视觉融合多传感器标定多传感器融合多模态3D目标检测车道线检测轨迹预测在线高精地图世界模型点云3D目标检测目标跟踪Occupancy、CUDA与TensorRT模型部署大模型与自动驾驶NeRF语义分割自动驾驶仿真、传感器部署、决策规划、轨迹预测等多个方向学习视频(扫码即可学习

d7a7f5f031a4d1dd2c1186f302109fe3.png

网页端官网:www.zdjszx.com

② 国内首个自动驾驶学习社区

国内外最大最专业,近4000人的交流社区,已得到大多数自动驾驶公司的认可!涉及30+自动驾驶技术栈学习路线,从0到一带你入门自动驾驶感知端到端自动驾驶世界模型仿真闭环2D/3D检测、语义分割、车道线、BEV感知、Occupancy、多传感器融合、多传感器标定、目标跟踪)、自动驾驶定位建图SLAM、高精地图、局部在线地图)、自动驾驶规划控制/轨迹预测等领域技术方案大模型,更有行业动态和岗位发布!欢迎扫描下方二维码,加入自动驾驶之心知识星球,这是一个真正有干货的地方,与领域大佬交流入门、学习、工作、跳槽上的各类难题,日常分享论文+代码+视频

0d6fe398e63bcd53308b57a53a622d01.png

③【自动驾驶之心】技术交流群

自动驾驶之心是首个自动驾驶开发者社区,聚焦感知、定位、融合、规控、标定、端到端、仿真、产品经理、自动驾驶开发、自动标注与数据闭环多个方向,目前近60+技术交流群,欢迎加入!扫码添加汽车人助理微信邀请入群,备注:学校/公司+方向+昵称(快速入群方式)

5bc45451c494cff83208919aacb4f20b.jpeg

④【自动驾驶之心】全平台矩阵

2be1c9ac754e3841fe15ca597b12d721.png

您可能感兴趣的与本文相关的镜像

PyTorch 2.5

PyTorch 2.5

PyTorch
Cuda

PyTorch 是一个开源的 Python 机器学习库,基于 Torch 库,底层由 C++ 实现,应用于人工智能领域,如计算机视觉和自然语言处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值