图像数据做并行规约时,如何确定共享内存和网格的大小

在进行CUDA并行规约时,确定共享内存和网格大小至关重要。共享内存一般设置为线程块的大小,例如32 * 32=1024个线程对应1650显卡。对于512 * 1024的图像,需要512个block,每个块的共享内存最多为49152字节。网格大小应确保所有像素值都能被分配到共享内存中,即块数*块大小>图像大小。通过全局ID和块内ID计算,线程将图像数据复制到共享内存进行规约操作。

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

做并行规约时,如何确定共享内存和网格的大小


注:1、这里记录使用笔记,不对cuda的名词做解释,没有详细数学原理和代码。
2、环境:cuda8.0,vs2013,GTX1650

3、理解错误请指出来

1、为什么要确定共享内存和网格大小

做并行规约时,可以使用共享内存和全局内存,如果使用共享内存,写代码之前,有两件事情需要确定一下,一是共享内存要多大,另一个是网格要多大。
在使用共享内存时,需要将全部的数据拷贝到共享内存中,才能进行并行规约,否则求出的结果只是部分数据的结果。

2、共享内存大小定义

个人理解,共享内存一般定义为一个块的大小。1650显卡,一个块有1024个线程,这里假设我们的块大小为32 * 32=1024个线程。
如果图像的大小为512 * 1024,需要512个block,定义块的大小为512 * 1 * 1。
通过运行安装例程,可直接查看设备的情况
进入到安装路径
C:\ProgramData\NVIDIA Corporation\CUDA Samples\v8.0\1_Utilities\deviceQuery
运行工程
在这里插入图片描述
每个块中共享内存最大为49152个字节,如果数据为float,4*1024=4096,符合。

tid=blockDim.x * threadIdx.y+thre

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

这是一个图像

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值