cuda学习笔记(2)

在这里插入图片描述
在这里插入图片描述

一 专业名词

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

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值