
CUDA
Huo的藏经阁
linux爱好者,平时喜欢阅读内核源码,从源码角度解开操作系统神秘面纱
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
关于GPU一些笔记(SIMT方面)
GPU组成现代GPU中一般都是由比CPU多的core组成,每个core 相当于一个单独线程进行计算,可以同时触发执行相同的单一指令但是每个计算单元数据不同(称之为SIMD),在英伟达GPU中一般称之为之为cuda core,GPU内部一般集成了成千上万个cuda core。为了方便进行进行对这么多的核进行管理调度,GPU将按照一定数量的core(一般为32或者64)组成一个 SM(streaming multiprocessor 称之为流式多处理器),在AMD GPU中称之为CU(compute uni原创 2020-11-21 15:21:00 · 13121 阅读 · 5 评论 -
CUDA bank 及bank conflict
bank 是CUDA中一个重要概念,是内存的访问时一种划分方式,在CPU中,访问某个地址的内存时,为了减少读写内次次数,访问地址并不是随机的,而是一次性访问bank内的内存地址,类似于内存对齐一样,一次性获取到该bank内的所有地址内存,以提高内存带宽利用率,一般CPU认为如果一个程序要访问某个内存地址时,其附近的数据也有很大概率会在接下来会被访问到。在CUDA中 在理解bank之前,需要了解共享内存。shared memoryshared memory为CUDA中内存模型中的一中内存模式,为一原创 2020-05-17 12:59:22 · 5671 阅读 · 0 评论 -
CUDA 网格级并发-流(2)
上节中描述到CUDA中可以通过流来实现网格级并发,按照流的划分主要分为两种:空流(默认创建) 非空流(需要使用API创建)空流为一个同步流,在空流中的大部分操作都会堵塞主机,kernel运行除外,而非空流为一个异步流,其上所有的操作都不堵塞主机执行。而非空流按照与空流直接的关系还可分为两种类型堵塞流 非堵塞流这个时候可能就有点晕乎,可以借用另外一个博客大牛的图片来说明:非空流中的堵塞和非堵塞主要是针对与空流之前的关系而划分,下面来根据几种情况来说明:1:空流对非空流的堵.原创 2020-05-10 18:47:33 · 622 阅读 · 0 评论 -
CUDA 网格级并发-流(1)
CUDA中的程序并发可以分为两种内核级并发 网格级并发内核级并发是开发程序中经常使用到的,即通过划分block和thread实现同一个内核在GPU上同时并发,将同一个核分别部署到不同的SP上进行同时运行,上述并发方式为我们经常使用到的方式。然而在内核级并发中,其实 还是存在同步忙等待现象,比如内存copy时,将数据从CPU copy到GPU或者在GPU中的数据结果 copy到CPU中这些过程都需要进行忙等待,以及有时经常遇到两个不相关的内核函数可以同时运行以提升以最大利用率,此时就需要用到CUD原创 2020-05-10 15:05:46 · 741 阅读 · 0 评论 -
线程束分化
在英伟达GPU中,线程束是最小的执行单位,线程束的大小代表了一个SM同时并发的线程数目。一般在SM实际调度中,SM获取到当前指令后,会将该指令广播到SM内所有的硬件core中即SM中, 这样做可以减少从内存中读取指令的次数,提高效率。而在CPU中,每个核是单独执行一个任务,在执行前每个核各自从内存中读取指令,这样会降低指令吞吐量。由于GPU的这种特性,一次性将所有指令广播到所有SP中,意味...原创 2020-03-28 20:58:09 · 1622 阅读 · 0 评论 -
线程块和网格划分
在实际编写调用CUDA的内核函数中,对线程块和网格的划分往往是十分困难的,不同的划分方法经常会造成很大的性能差异,其划分与具体的硬件以及算法kernel的实现有很大关系,属于性能调优中一个比较重要的环节。线程块划分线程块划分其实质就是划分每个线程块包含的线程数量,以及线程块数量,与硬件有很大关系。首先看一个线程块包含多少个线程合适,《CUDA中的一些基本概念》文章中了解到一些基本的GP...原创 2020-03-23 11:45:41 · 1043 阅读 · 0 评论 -
CUDA中的一些基本概念
线程线程是CUDA中并行程序的基本构建,一个线程就是程序中国的一个单一的执行流,就像一件衣服上的一块棉,一块块棉交织在一起组成衣服,同样 一个个线程组成成并行程序。随着处理器的核越来越多,硬件可以支持的同时运行的线程数量也越来越多,传统的串行编程方法已经可以演变为可以调动硬件资源实行并行编程,GPU上并行编程方法其实质就是最大调用硬件资源实行程序最大并行化。CUDA的硬件调度方式...原创 2020-03-21 17:07:55 · 1514 阅读 · 0 评论 -
CPU VS GPU笔记
最近在阅读《CUDA Programming A Developer's Guide to Parallel Computing with GPUs》这本书,顺便记下笔记CPU和GPU差异架构设计目的CPU是用来设计运行比较复杂任务,GPU是用来设计运行大量比较简单任务。CPU针对执行大量离散而不相干任务的系统,GPU是用来设计针对解决那些可以分解成千上万个小块并可独立运行的问题。...原创 2020-03-04 20:27:24 · 385 阅读 · 0 评论 -
CUDA GPU内存结构
了解CUDA编程首先必不可少的,需要熟悉英伟达GPU的内存分布,如下图:整体内存结构按照层次划分,和OpenCL类似:SM:流处理器簇,为GPU的对小硬件调度单位,一次性可以调度多个SP SP:GPU 硬件内核执行单元,每个SP相当于一个CPU核。 Register File:寄存器文件,访问速度最快的存储单元,用来存储SP上运行的线程内部活跃的寄存器。 shared memor...原创 2020-03-01 18:05:16 · 2219 阅读 · 0 评论 -
计算机组成原理 — GPU 图形处理器
目录显卡GPUGPU 与深度学习GPU 与 CPU 体系结构的区别GPU 显存与 CPU 主存的区别GPU 与 CPU 之间的数据交互方式GPU 的体系结构GPU 的工作原理GPU 的关键参数CUDA 编程模型CUDA 的架构CUDA 的核心概念CUDA 的工作原理云主机显卡的实现方式虚拟显卡物理显卡直通物理显卡虚拟化KV...转载 2019-09-09 14:42:30 · 3835 阅读 · 0 评论