cuda基本知识

GPU计算适合解决的问题是简单逻辑,计算相互独立可并行的,而CPU适合解决的问题是,逻辑复杂,计算间相互依赖的问题。

GPU的设计思想是高并发吞吐,而CPU的设计思想为低时延。所以我们可以看到,在CPU中拥有多级缓存并且拥有强大的控制单元,引入多级缓存的目的就是为了降低时延,而GPU中,则是拥有大量的计算单云,而控制单元则比较简单,缓存数目也相对较少。

1. 内存模型

硬件侧:

        SP:线程处理器,具备自己的registers(寄存器)和自身的local memory(局部内存)。registers和local memory只能由SP自己访问。

        SM:多核处理器,由多个SP以及shared memory(共享内存)组成。shared memory 可以被SM中的所有SP访问。

        GPU:显卡,由多个SM以及global memory(全局内存)组成。global memory 可以被所有的SP访问。

软件侧:

        thread:线程,对应着SP。

        block:线程块,由多个tread 组成,对应着SM。

        grid:由多个block组成,一个GPU可以拥有多个grid。

        warp:线程束,由32个tread组成。通常而言,block是32的倍数。

线程的索引:

        对于这个概念,实际上是在计算当前线程在定义的计算单元中的索引,索引从零开始。理解这个计算的关键是引入空间的想象,一维是线,二维是面,三维是立体。

dim3 grid1(2, 1, 1); // x=2, y=1, z=1,这是一维,yz为1
dim3 grid2(4, 2, 1); // x=4, y=2, z=1,这是二维,z为1
dim3 grid3(2, 3, 4); // x=2, y=3, z=4,这是三维,xyz均不为1

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值