
GPU&CUDA
文章平均质量分 81
GPU和CUDA的相关介绍
非晚非晚
一往无前,不急不躁,生命不熄,折腾不止!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【CUDA编程】CUDA内存模型
thread:每个线程都用自己的registers(寄存器)和local memory(局部内存)block:每个线程块(block)内都有自己的shared memory(共享内存),所有线程块内的所有线程共享这段内存资源grid:每个grid都有自己的global memory(全局内存),constant memory(常量内存)和texture memory(纹理内存),不同线程块的线程都可使用。其中常量内存和纹理内存为只读内存空间。原创 2022-11-04 15:33:08 · 3069 阅读 · 0 评论 -
【cuda编程】CUDA中的atomic原子操作
所谓原子操作,就是该操作绝不会在执行完毕前被任何其他任务或事件打断,也就说,它的最小的执行单位,不可能有比它更小的执行单位。CUDA的原子操作可以理解为对一个变量进行“读取-修改-写入”这三个操作的一个最小单位的执行过程。在它执行过程中,不允许其他并行线程对该变量进行读取和写入的操作。基于这个机制,原子操作实现了在多个线程间共享的变量的互斥保护,确保任何一次对变量的操作的结果的正确性。原创 2022-10-31 11:30:56 · 8027 阅读 · 0 评论 -
【cuda编程】CUDA中计算程序耗时
在我们日常使用CUDA优化程序时,为了方便分析,经常会统计自己写的程序耗时情况。一般情况下,可以使用C/C++的CPU方式,另外一种则选择则是使用CUDA的事件方式。原创 2022-10-31 11:26:57 · 2103 阅读 · 1 评论 -
【cuda编程】CUDA的运行方式以及grid、block结构关系
从GPU至线程的关系依次为:显卡(GPU)->网格(grid)->线程块(block)->线程(thread) 。从网格开始最大为3维,当然也可以1维了。网格(grid):一个内核函数(kernel)就是一个网格,里面所有线程都在这个网格范围内,里面的线程共享全局内存空间线程块(block):一个网格可以包含很多个block,block之间可以通过“同步”和“共享内存”进行协作,block之间的区分通过“blockIdx”线程(thread):一个线程块可以包含很多个thread,thread之间区原创 2022-10-26 13:54:24 · 4867 阅读 · 0 评论 -
【CUDA编程】CUDA入门笔记
显卡内部,有三级结构:网格(grid)、块(block)、线程(thread)。每个显卡只有很少的网格,一个核函数只能运行在一个网格中,而一个网格里有多个块,每个块包含了若干线程。kernel在device上执行时实际上是启动很多线程,一个kernel所启动的所有线程称为一个网格(grid),同一个网格上的线程共享相同的全局内存空间,grid是线程结构的第一层次,而网格又可以分为很多线程块(block),一个线程块里面包含很多线程,这是第二个层次。线程两层组织结构如下图所示,这是一个gird和block均为原创 2022-01-23 20:00:30 · 2138 阅读 · 3 评论