16、在GPU上优化和自动调优信念传播

在GPU上优化和自动调优信念传播

1. 优化概述

CUDA允许将GPU用作CPU的协处理器进行通用编程,可同时在多个线程上处理内核函数。每个线程在1D、2D或3D线程块结构中有唯一ID,每个线程块是1D或2D网格结构的一部分。块内的每个线程在同一个多处理器上执行,以32个线程的块(warp)形式处理。每个多处理器的活动warp数量受GPU特定的最大值限制,这限制了程序执行的并行性。活动warp数量常受每个多处理器上可用的寄存器或共享内存数量限制,内核执行期间实际活动warp数与最大活动warp数的比率代表多处理器占用率。

为说明潜在优化,以下是与信念传播实现中最常用的内核部分类似的算法:
1. 将浮点变量 currMin 设为无穷大。
2. 对于i从1到N执行以下操作:
- 计算mi,即从全局内存中四个独立数组(数据成本数组和三个邻居的消息数组)的特定索引访问的值之和,并将值存储到特定存储形式(本地、共享或寄存器内存)。
- 检查mi是否小于 currMin 的值;若是,将 currMin 设为mi。

mi值在后续操作中会被访问、操作和相互比较,因此将它们存储在数组等结构中便于通过索引值访问。

初始实现将mi值存储在线程本地的数组中,导致使用GPU上的本地内存。但本地内存的数据访问比寄存器或共享内存慢。后续生成了优化实现,将本地内存访问转换为寄存器或共享内存访问。代码示例如下:

float m[N];
float currMin = INFINITY;
for 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值