GPU(CUDA)学习日记(十)------ Kernal 内核函数 参数的传递

在CUDA编程中,遇到图片处理后出现条纹问题,发现参数通过cudamalloc在全局内存分配导致性能下降。了解到在Fermi架构前,参数存于共享内存,而Fermi以后则存储在常量内存中。频繁修改常量内存可能导致错误,因线程执行顺序不确定。内核函数中过多参数会影响寄存器效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       之前做了一个项目,内核函数什么的编写都没有问题,但是处理完的图片就是会产生条纹,这个问题困扰了我很长时间(真的很长时间。。。),我的内核函数传入的参数有很多,我做过实验,在host函数中给所有的参数都cudamalloc显卡空间(当初以为这样处理会更省显存一些,毕竟是开辟的线性存储器globle memory空间),但是实验结果是每一个参数都开辟cudamalloc的话,速度会降低,显卡的显存也没有实质性的节省(反而感觉少了~)。不明白其中的道理,后来查了一下,看了许多大家的看法,最后得出的结论是:

1、在fermi架构之前的参数都是在shared mem中的,而fermi这代则全都放在了constant memory里,内核参数在global memory里没有副本。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值