GPU读书笔记
来源:互联网 发布:c语言输出字符串scanf 编辑:程序博客网 时间:2024/05/09 13:13
1.串行(serial)与并行(parallel)相对应,是指我们从事某项工作时一个步骤接着一个步骤的去实施。
2.GPU主要负责高度线程化的并行任务,CPU负责逻辑性强的事物处理和串行运算。
3.内核函数kernel是一系列的,理想情况下CPU串行代码是负责清理上一个内核函数并启动下一个内核函数。
4.CUDA(compute unified device architecture,统一计算设备架构)并行计算函数称为kernel函数,是负责并行运算的,内部分块为block并行,块block内又分为线程thread并行。
5.CUDA程序的完整执行流程:CPU串行代码->GPU并行kernel->串行代码->并行kernel...
6.CUDA中使用了dim3类型的内建变量threadID和blockID,这样可以使用一维,二维,三维的索引来标志线程块,比如可以直接操作二维数组。
7.避免在CUDA中使用整数的除法和求余以及分支和循环。
8.线程间可以通过sharememory通信,并通过syncthreads()函数同步。
9.一个GPU有多个核SM,一个SM有8个执行单元SP。kernel实质是以block为单位执行的,故一个block需要发送到一个SM处理,block中的线程发送到8个SP上处理,股活动线程不超过8个。
10.实际运行时,block被分成更下的wrap线程束,wrap由多个线程组成,Tesla架构的GPU有32个线程组成一个wrap。wrap中的指令最好相同,即一个wrap中最好不要分支。
11.进行一次一个GPU有多个核SM运算,要在多种存储器间进行几次数据传输,需消耗相当多的时间,这导致GPU不适合对实时性要求高的应用。(???)
SP:最基本的处理单元,streaming processor最后具体的指令和任务都是在SP上处理的。GPU进行并行计算也很多个SP同时做处理。
SM:多个SP加上其他的一些资源组成一个SM,streaming multiprocessor。其它资源也就是存储资源,共享内存寄存器等。
wrap:GPU执行程序时的调度单位,目前CUDA的wrap的大小为32,同在一个wrap的线程,以不同的数据资源执行相同的指令。
thread->block->grid:在利用CUDA进行编程时,一个grid分为多个block,而一个block分为多个thread。其中任务划分是否影响到最后的执行效果。划分的依据是任务特性和GPU本身的硬件特性。
- GPU读书笔记
- 读书笔记之----GPU大百科全书
- GPU Shader ALU读书笔记
- 《GPU高性能编程cuda实战》读书笔记
- [读书笔记-GPU GEMS C1] Effective Water Simulation from Physical Models
- 《GPU编程与CG语言之阳春白雪下里巴人》 读书笔记1
- 《GPU编程与CG语言之阳春白雪下里巴人》 读书笔记2
- 《GPU高性能编程 CUDA实战》(CUDA By Example)读书笔记
- GPU
- gpu
- GPU
- GPU
- GPU
- gpu
- gpu
- 《GPU编程与CG语言之阳春白雪下里巴人》 读书笔记3 漫反射与Lambert光照模型
- 《CUDA并行程序设计-GPU编程指南》读书笔记--(1)线程网格、线程块以及线程
- 《CUDA并行程序设计-GPU编程指南》读书笔记--(2)CUDA内存处理
- 2个或多个路由器有线连接怎么设置
- 修改win2003远程桌面端口3389端口
- /*求1-1000之间的所有奇数的和并输出*/
- NYOJ532 不吉利的数字
- Sprite Kit学习笔记
- GPU读书笔记
- 进度条(BackgroundWorker后台线程处理)--WPF应用
- Object转Integer
- 传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确。参数 1 (""): 数据类型 0x38 未知。
- No content provider found for permission revoke: file:///data/local/tmp/……
- 解决了一个隐蔽的内存泄漏——pthread_create后没有detach导致内存持续增长
- /*编写程序,其中自定义一函数,用来判断一个整数是否为素数,主函数输入一个数,输出是否为素数*/
- 内核kernel以及根文件系统rootfs是如何映射到对应的nand flash的
- discuz论坛设置帖子审核后才可发布