
 
一 专业名词
1 分支断定

2 一致性和同一性

3 常见名词汇总

4 加速比

二 GPU架构构述
GPU就是将cpu的数据存储单元去掉,也就是保留执行单元,GPU就是多个执行单元
1 GPU设计思路,指令流共享,同时执行,数据切分成小块

 
2 GPU设计思路,单指令多数据处理

 
 分支如何工作,只有一个大脑,8个流输入的是同一段代码,有的是t,有的是f,执行t的时候,f只能等待
 
 停滞的解决方法:用别的独立的工作,来填满空余时间,延迟掩藏
 停滞是指等待的过程,数据还没来,前面还没算完

二
1 CPU 和GPU交互

 
2 GPU线程模型
开发者定义的是线程,以及每个block里面放多少线程
 

 
 


3 CUDA编程

 

 

 
 
 
假设只要1个block,block是二维的,i,j对应二维索引
 

cudaMalloc()    在设备端分配 golbal memory
cudaFree()  释放存储空间
GPU指针分配

数据拷贝函数

 
Cuda算法框架,通用
第1步:为数据分配GPU空间,将数据从cpu上拷贝到GPU上,同时为输出数据分配内存空间
 第2步:在GPU启动并行
 第3步:将数据拷贝回CPU,释放GPU上的占用内存
 
矩阵相乘算法

 在GPU启动并行计算矩阵,不需要锁,因为用不到别的部分的数据
 
 假设只使用一个block
 
函数声明
主要有三种函数,3个函数声明可以用于同时定义同一个变量
 
线程同步,一般是局部同步,也就是块内同步,全局同步开销太大
且线程同步之间的任务要时间接近,可以提高效率
 
 如果是采用了以下的这种调用情况,会导致程序逻辑错误
 
线程调度:软件调用的核数可能会大于实际的硬件核数
调度量不代表执行量,调度过程会存在一些等待的部分
 
Warp
1个warp是32个线程,block内的线程再次进行分组执行,因为资源有限,一个warp内的数据是默认同步的
 一个时间一个block内只有一个warp在执行
一个block只能分配在同一个SM上
变量声明

 

 
课程链接
 链接: https://www.bilibili.com/video/BV1LE411p7ej?p=6&spm_id_from=pageDriver&vd_source=ee789cf916563b0f6fa47fd0f3556c63