
Cuda编程技术
文章平均质量分 57
记录一些GPU编程技术的笔记和心得
梦星辰.
本科北航数学专业应用数学方向,硕士北航计算机专业人工智能方向
展开
-
C/C++ 汇编基础知识概述
了解汇编基础可以提高C/C++的运用能力,但是我们不需要,也没有必要精通汇编语言,只需要大概理解汇编的基本思想,通过了解C/C++的底层实现去更好发挥这一门编程语言的极致性能,如果不是为了追求速度与效果,完全可以使用更容易进行问题建模的高级语言,比如Python或者Java。原创 2024-08-28 15:08:00 · 1375 阅读 · 0 评论 -
计算模型 观察分析 杂记
计算模式通常指的:用特定计算资源完成特定计算任务所采用的计算策略。计算资源主要指运算器和存储器,当然若其他设备影响因素较大的情况下也考虑控制器,输入输出设备;计算任务多种多样,可以是简单的加减乘除,也可以是稍复杂的向量运算,矩阵运算等。计算模式的演变动力通常来自于人类日益增长的计算任务需求和明显紧缺的计算资源之间的矛盾,正是这种矛盾的推动,才导致了从CPU到GPU,再到NPU等专用芯片的发展势头。进一步说,正是由于单体计算遇到的性能造价上的性价比瓶颈,才造就了异构并行计算的流行。原创 2024-04-03 22:41:04 · 1015 阅读 · 0 评论 -
Cuda实战-09 多线程多卡运行
样例的内容是每个CPU启用一个线程,执行一个核函数,然后这些线程平均分配给n个GPU上面运行,采用多线程技术实现。原创 2023-03-21 15:47:53 · 815 阅读 · 0 评论 -
C C++ 获取CPU处理器数量 Windows Linux适用
在此提供,欢迎复制使用,记得收藏原创 2023-03-21 11:53:17 · 624 阅读 · 0 评论 -
c c++ 多线程模板
在此记录,方便下次复制。原创 2023-03-20 23:16:36 · 148 阅读 · 0 评论 -
Cuda实战-08 官方样例concurrentKernels
针对初学者,对官方样例的内容有所删改,并添加了中文注释。原创 2023-03-20 13:00:18 · 537 阅读 · 0 评论 -
Cuda实战-07 官方样例clock
针对初学者,样例代码有所删改。原创 2023-03-17 16:37:15 · 180 阅读 · 0 评论 -
Cuda编程-07 内存动态操作
_share__每个SM都有一定数量的由线程块分配的共享内存,共享内存是片上内存,跟主存相比,速度要快很多,也即是延迟低,带宽高。其类似于一级缓存,但是可以被编程。共享内存在核函数内声明,生命周期和线程块一致,线程块运行开始,此块的共享内存被分配,当此块结束,则共享内存被释放。此语句相当于在线程块执行时各个线程的一个障碍点,当块内所有线程都执行到本障碍点的时候才能进行下一步的计算,这样可以设计出避免内存竞争的共享内存使用程序、注意,频繁使用会影响内核执行效率。原创 2023-03-17 16:17:42 · 643 阅读 · 0 评论 -
c++ clock的使用
【代码】c++ clock的使用。原创 2023-03-17 14:33:45 · 278 阅读 · 0 评论 -
Cuda配置-03 Clion远程连接Linux
前面我们已经实现了Visual Studio 2019的Cuda环境配置,但是考虑到有人可能需要其他的集成开发环境,所以这一篇介绍如何用Clion集成开发环境进行Cuda程序开发。注意,这里的Clion是运行在Windows操作系统上,Cuda驱动和编译环境是在远程服务器上面,而且操作系统为Linux系统。开始配置之前,请确保远程服务器已经安装了Cuda,Cmake,GCC,G++,GDB这些东西。这些东西的安装也不困难,网上都有很多教程。原创 2023-03-17 09:57:26 · 974 阅读 · 0 评论 -
Cuda实战-06 官方样例asyncAPI
这个是官方样例 asyncAPI.cu,内容有所删改,只是为了方便初学者理解,相对较为综合,但收获也挺大。里面的注释都是我根据自己的理解添加的。原创 2023-03-16 18:10:47 · 234 阅读 · 0 评论 -
Cuda实战-05 GPU任务计时
CUDA内核程序的所有启动都是异步的,CPU通过将命令写入命令缓冲区,来请求启动内核,然后直接返回结果,而不检查GPU的执行进度。内存复制也可以选择异步方式,这使CPU和GPU可以并发执行,也使内存复制和内核处理可以并发执行。原创 2023-03-16 17:48:12 · 294 阅读 · 0 评论 -
Cuda实战-04 内存操作模板化
仔细发现,Cuda编程里面内存操作多数都是重复的,那么我们就可以考虑把这些重复的代码封装成类的形式,这样以后使用的时候,直接调用就行了。需要的朋友可以考虑使用这套模板,当然也欢迎在模板的基础上重新制作适合自己的模板。原创 2023-03-15 17:54:52 · 155 阅读 · 0 评论 -
Cuda配置-02 VS环境配置
上述步骤只需要配置一次就行,下面的步骤需要每次Visual Studio新建项目都需要配置。“配置属性”->“链接器”->“输入”->“附加依赖项”原创 2023-03-15 14:16:21 · 2975 阅读 · 2 评论 -
Cuda配置-01 Cuda驱动安装
本教程为Windows操作系统下Cuda驱动软件的安装,请确保需要安装Cuda驱动的系统已经安装了,若存在英伟达显卡,但没有显卡驱动软件的话,参考其他教程即可。原创 2023-03-15 13:44:16 · 1081 阅读 · 0 评论 -
Cuda实战-03 显卡设备信息
【代码】Cuda实战-03 显卡设备信息。原创 2023-03-13 16:19:37 · 393 阅读 · 0 评论 -
Cuda实战-02 向量加法与内存分配
本节通过一个向量加法的实例程序探讨如何进行有效的内存分配,案例中定义了三个向量VectorAVectorBVectorC。VectorA和VectorB为待计算的两个向量,VectorC为结果向量。VectorA初始值为VectorB初始值为VectorC初始值为。经过正确运算后,结果向量VectorC的值应该为。整个过程中,涉及了许多的内存分配和释放操作,得重点关注。原创 2023-03-01 11:32:54 · 251 阅读 · 0 评论 -
Cuda实战-01 入门程序HelloWorld
不管是学习什么编程语言,一般入门的实战程序一般都是从Hello World开始的。这一节,我们就用Hello World程序进行Cuda实战,程序的内容主要是让CPU和GPU分别打印Hello World,在CPU中打印内容为,在GPU中打印内容为,具体实现请参考程序案例。原创 2023-03-01 09:43:38 · 407 阅读 · 0 评论 -
Cuda编程-06 硬件执行补充
最基本的处理单元,Streaming Processor,最后具体的指令和任务都是在SP上处理的。GPU进行并行计算,也就是很多个SP同时做处理。现在SP的术语已经有点弱化了,而是直接使用Thread来代替,一个SP对应一个Thread。流式单处理器SP表达的是物理层面概念,线程Thread表达的是逻辑层面概念。原创 2023-02-28 20:47:15 · 236 阅读 · 0 评论 -
Cuda编程-05 存储单元结构
芯片结构一直在变化,随之芯片物理上的结构也在变化着,而上层的应用使用逻辑结构,需要一个比较稳定的框架支持长期运行,因而有必要在逻辑结构层面定义存储层次,然后芯片设计在一定的框架下去调整,这方面Cuda就做得比较好。这里简单介绍一下CUDA的内存模型,如下图所示。可以看到,每个线程有自己的(Local Memory),而每个线程块有包含(Shared Memory),可以被线程块中所有线程共享,其生命周期与线程块一致。此外,所有的线程都可以访问(Constant Memory)和。原创 2023-02-28 17:47:05 · 227 阅读 · 0 评论 -
Cuda编程-04 计算单元结构
如下图,为Tesla架构芯片构造图:),在该GPU中,最核心的执行单元为SP,即真正的劳动者,一个SP执行一个线程thread,一个SM执行一个线程块threadBlock。上述Tesla架构中有14个SM,每个SM有8个SP,整个GPU芯片一共有112个SP。原创 2023-02-28 17:20:22 · 261 阅读 · 0 评论 -
Cuda编程-03 物理芯片结构
控制单元负责逻辑控制,计算单元负责处理运算,存储单元负责数据存储,它们各司其职,协同完成芯片的复杂功能。控制单元是整个芯片的指挥控制中心,对协调整个计算机有序工作极为重要。它根据用户预先编好的程序,依次从存储器中取出各条指令,确定应该进行什么操作,然后通过操作控制器OC,按确定的时序,向相应的部件发出微操作控制信号。运算单元是运算器的核心,可以执行算术运算和逻辑运算。原创 2023-02-28 16:52:02 · 165 阅读 · 0 评论 -
Cuda编程-02 逻辑线程结构
如果计算模型中使用了多块同类型架构的芯片进行运算,那么这种计算模型就叫做,比如使用了多块一样的CPU进行矩阵运算;如果计算模型中使用了多块不同类型架构的芯片进行协同运算,那么这种计算模型就叫做,比如用一块CPU加一块GPU进行矩阵运算。实际上GPU并行计算模型中,光靠GPU是无法完成所有工作的,数据的初始化和最终结果的处理都需要CPU去完成,所以GPU并行计算模型是一种异构计算模型,需要CPU和GPU协同工作。原创 2023-02-28 15:24:34 · 189 阅读 · 0 评论 -
Cuda编程-01 加速计算模型
图形处理器(Graphics Processing Unit),是一种专门在个人电脑、工作站、游戏机和移动设备上做图像和图形相关运算工作的微处理器。随着显卡的不断发展,GPU为显示图像做了许许多多的改进和优化,计算能力越来越强大。在并行计算的能力上,GPU已经远远超越了通用的CPU,如此强大的芯片如果只是作为显卡就太浪费了,因此NVIDIA推出CUDA,让显卡可以用于图像计算以外的目的。2006年,芯片公司NVIDIA(英伟达)发布了。原创 2023-02-27 17:26:49 · 238 阅读 · 0 评论