cuda编程的一些基础知识

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

const定义的变量

在CUDA编程中,const关键字用于声明一个常量,这意味着该变量的值不能被修改。在CUDA中,使用常量可以提高程序的性能,因为编泽去可以在代码中进行常量折叠,从而消除了在代码中使用变量的开销。此外,常量在内存中有其专用的存储区域,这意味着它们可以具有更快的访问速度。
在CUDA中,常量通常用于存储不变的值。例如数学常数或程序参数。可以使用__constant__修饰符将常量定义为CUDA全局内存中的常量,这样它们就可以在设备代码中使用。在主机代码中,可以使用cudaMemcpyToSymbol()函数将常量从主机内存复制到设备内存中。
需要注意的是,虽然CUDA中的常量是不可修改的,但是在某些情况下,可以通过一些技巧来修改它们的值。例如,可以使用cudaMemcpyTosymbol()函数将新值复制到常量的内存位置。但这通常是不推荐的做法,因为它可能会破坏代码的正确性和可维护性。

注意:在判断两个浮点数是否相等时,不能用运算符 ==,而要将这两个数 的差的绝对值与一个很小的数进行比较。在上述程序中,我们假定,当两个双精度 浮点数的差的绝对值小于 10−15 时它们就是相等的。求绝对值的函数在 C++ 头文 件 中声明,故需要在程序开头包含此头文件

GPU内存在这里插入图片描述

gridDim\blockDim 分别是网格维度、线程块维度
blockIdx、threadIdx 分别是线程块号(对应网格大小)、线程号(对应线程块大小)

共享内存使用:

在这里插入图片描述
shared 共享内存限定符。
需要强调的是,在一个核函数中定义一个共享内存变量,就相当于在每一个线 程块中有了一个该变量的副本。每个副本都不一样,虽然它们共用一个变量名。核函数中 对共享内存变量的操作都是同时作用在所有的副本上的。
Extern shared 动态共享内存,不能定义数组大小。
使用动态共享内存不会影响程序性能,但有时可提 高程序的可维护性

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值