CUDA 知识贴 part 1

本文介绍了CUDA编程的基础知识,包括函数类型、内建变量、线程与块的概念。重点讲解了warp的概念,强调了warp divergence对性能的影响,并提供了提高全局内存访问效率的策略,如内存对齐和共轭访问。此外,还讨论了grid和block的配置优化,以及减少设备与主机间通信延迟的方法,如使用cudaMallocHost和流处理技术。
摘要由CSDN通过智能技术生成

从笔记本中迁移至网上


函数类型

_global_        修饰内核函数的,只能被主机函数调用。内核函数:运行在GPU上的函数

_host_            可缺省,主机函数,运行在CPU上的函数。

_device_        只能被内核函数调用的内核函数


内建变量

dim3

threadId

bolckId

gridId


Dim3 Dg(Dg.x, Dg.y) 表示grid中每行有Dg.x个block,每列有Dg.y个block。第三维恒为1,。Dg.x与Dg.y的最大值为 65535

Dim3 Db(Db.x, Db.y, Db.z) 表示每个block中每行有Dg.x个thread,每列有Db.y个thread,高度为Db.z


对于(Dx, Dy)二维块, (x, y)ID: x + yDx

对于(Dx, Dy, Dz)三维块, (x, y, z)ID: x + yDx + zDxDy


thread、warp、processor

SP(streaming Process),SM(streaming multiprocessor)是硬件(GPU hardware)概念。而thread,block,grid,warp是软件上的(CUDA)概念。

在执行CUDA程序时,每个 stream processor 就对应一个 thread, 每个 multiprocessor 对应一个block。但由于stream processor 进行运算都有 latency,提取内存也有latency,因此CUDA执行程序时,以

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值