![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
从零开始学cuda
文章平均质量分 91
项目地址:https://github.com/hujianbin03/dive-into-cuda
不要那么孤单
~**代码改变世界,期待与你同行**~
展开
-
01.前言
工作三年社畜,因项目变动被辞退,在家闲时刷视频,看了各种大模型,机器学习,AGI等内容,看完之后感觉,如果再不参与到其中,下一秒就会被社会抛弃,感觉到深深的焦虑不安。由于在某音人工智能之父某某舟的影响,于是开始自学,希望可以以此谋生,也希望和同行的人有更多的交流,欢迎来call我。第一次写文章,不好的地方希望多包含。写的目的,一是为了记录,二是为了可以交到更多的朋友,手动鞠躬,~代码改变世界,期待与你同行。原创 2024-07-04 21:42:24 · 302 阅读 · 0 评论 -
02.安装环境
输入实例名称。GPU 选择 A10 或者 V100 都行,这俩是支持资源包抵扣的,其他的不支持,V100 性能更好,但消耗算力也更多,学习玩一玩的话就选 A10 就行,A10 显卡每小时消耗6.991计算时,如果不关机持续使用大概可以使用30天。选择镜像,用官方默认就行,或者根据自己需求选择。其他默认就可以,不需要修改,点击“确定”。原创 2024-07-05 12:08:00 · 419 阅读 · 0 评论 -
03.并行计算
1971年,Intel推出了4004,世界上第一款商用微处理器…1999 年,NVIDIA 发明了 GPU…2005年,英特尔推出了首款用于桌面PC的奔腾D双核处理器…2006 年,CUDA 架构问世…2015 年,搭载 TEGRA X1 的 NVIDIA DRIVE 问世,NVIDIA 正式投身于深度学习领域…随着社会发展需求,计算机的硬件、技术和架构也在不断变化,我们不停的在追求更大的内存,更快的运行速度,更小更薄的硬件。原创 2024-07-07 14:26:13 · 105 阅读 · 0 评论 -
04.异构计算
最初,计算机只包含用来运行编程任务的中央处理器(CPU),也被称为通用处理器,是计算机的心脏。它按照冯·诺依曼架构运行,包含运算器、控制器、存储器等主要部分。数据在存储器中存储,控制器从存储器中获取数据并交给运算器进行运算,运算完成后再将结果返回存储器。CPU的特点是通用性强,指令复杂,需要资源调度、中断处理、内存管理等,运算过程逻辑控制多,控制单元数量多,计算单元数量受限,性能限制较大。所以CPU就像是一个全能的选手,什么都会做,但是做的不精。原创 2024-07-07 14:27:03 · 95 阅读 · 0 评论 -
05.每一个编程语言第一个程序:“Hello world”
随着计算机架构和并行编程模型的发展,逐渐有了现在所用的异构系统。CPU+GPU的异构系统在高性能计算领域已经成为主流。这种变化使并行设计范例有了根本性转变:在GPU上执行数据并行工作,而在CPU上执行串行和任务并行工作。而CUDA平台帮助提高了异构架构的性能和程序员的工作效率。目前看起来,在异构系统中编写一个具有成百上千个核的CUDA程序就像编写一个串行程序那样简单,哈哈哈,继续加油!原创 2024-07-07 14:28:31 · 110 阅读 · 0 评论 -
06.CUDA编程模型概述(一)
是一个包含3个无符号整数的结构,可以通过x、y、z三个字段来指定。原创 2024-07-16 23:50:36 · 676 阅读 · 0 评论 -
06.CUDA编程模型概述(二)
作用是将某一块内存中的内容全部设置为指定的值, 这个函数通常为新申请的内存做初始化工作,它是直接操作内存空间。CUDA核函数:在GPU上并行执行的函数称为CUDA核函数(Kernel Function),它属于CUDA编程中最为重要且核心的一个环节,也是我们重点要写的代码部分。,核函数相对于CPU是异步的,在核函数执行完之前就会返回,这样CPU可以不用等待核函数的完成,继续执行后续代码。CUDA内核调用是对C语言函数调用语句的扩展,<<<>>>运算符内是核函数的执行配置,即需要指定网格和块的维度。原创 2024-07-16 23:51:31 · 955 阅读 · 0 评论 -
07.给核函数计时
在内核的性能转换过程中,了解核函数的执行需要多长时间是很有帮助并且十分关键的。衡量核函数性能的方法有很多。最简单的方法是在主机端使用一个CPU或GPU计时器来计算内核的执行时间。原创 2024-07-18 19:38:45 · 688 阅读 · 0 评论 -
08.组织并行线程
从前面的例子可以看出,如果使用了合适的网格和块大小来正确地组织线程,那么可以对内核性能产生很大的影响,执行时间要快很多。所以,根据。原创 2024-07-18 19:39:50 · 990 阅读 · 0 评论 -
09.设备管理
CUDA编程中独特的线程模型设计,使得我们可以充分的发挥GPU性能,使得每个线程执行相同的程序,处理不同的数据。所以,如何更好的设置网格和线程块的尺寸?即如何组织线程是CUDA编程的重点之一。对于内核执行来说网格和线程块代表了线程布局的逻辑视角。在后面的章节,我们将会从硬件视角研究相同的问题,加深对网格和线程块的理解。原创 2024-07-23 21:02:49 · 777 阅读 · 0 评论 -
10.CUDA执行模型概述
GPU架构是围绕一个流式多处理器(SM)的扩展阵列搭建的。通过复制这种结构来实现GPU的硬件并行。相同架构的GPU包含的SM数量通常代表了GPU的性能定位,有的低端GPU配备了1个SM,部分高端GPU则可以拥有多达数百个SM。而GPU类型则定义了这些SM的功能。SM结构下又会细分出不同的功能区域以及核心,这里简单介绍最重要的组成之一:流处理器。流处理器(Streaming Processor ,简称SP)是GPU最基本的处理单元。每个SM中包含多个SP,由GPU架构决定其功能区别。原创 2024-07-23 21:03:53 · 1063 阅读 · 0 评论