高通SNPE - OpenCL简介(3)

46 篇文章 22 订阅
16 篇文章 13 订阅

标题波浪和纤维

在Adreno GPU中,执行的最小单位称为光纤。一根光纤对应一根OpenCL中的工作项。总是以锁步执行的一组纤维称为波。SP一次可以容纳多个活动波。每波通常可以使独立前进,而不管其他浪潮的状态如何。注意:
∎对于给定的GPU和内核,波长大小或波中的光纤数量通常是固定的。
∎波大小的Adreno GPU的依赖于GPU系列和层以及编译器;值可以是8、16、32、64、128等。
∎根据工作组的大小,一个工作组可以一次或多次执行。例如,如果工作组的大小小于或等于波浪,则一个波浪就足够了尺寸。通常,更多的wave会更好,因为它们可以更好地隐藏延迟。
∎ SP可以同时在一个或多个波执行ALU指令。
∎工作组中可传递的最大波数是硬件依赖。通常,Adreno GPU支持多达16个波形。
∎给定一个内核,一个SP中最大活动波数取决于内核的寄存器占用空间和文件大小,这又取决于GPU系列和层。
∎通常,内核越复杂,活动波就越少。
∎给定内核,最大工作组大小是最大允许数量的乘积和波的大小。OpenCL 1.x并未展示wave的概念,而OpenCL 2.0允许应用程序使用通过adreno A5x GPU支持的cl_khr_subgroups扩展名来实现。

延迟隐藏

延迟隐藏是GPU高效并行的最强大功能之一处理,并使GPU实现高吞吐量。这是一个例子:
∎ SP开始执行1个ST波。
∎经过几条ALU指令后,此波形需要来自外部存储器的其他数据(可能是全局/本地/专用内存)继续进行,该操作不可用。
∎SP为此波发送数据获取请求。
∎ SP切换执行到2次波,其已准备好执行。
∎ SP继续执行2次波到一个点,外部的依赖还没有准备好。
∎ SP可以切换到3次波,或切换回1个ST波,如果对于1个的数据ST波是可用。这样,SP总是很忙,并且像“全职”一样工作,因为延迟或依赖项可以隐藏好。

工作组分配

典型的OpenCL内核启动多个工作组。在Adreno GPU中,每个工作组都是分配给一个SP,每个SP通常一次处理一个工作组。剩余的工作组(如果有)在GPU中排队执行。以下图中的2DRange为例,并假定这是具有4个SP的GPU。
在这里插入图片描述
下图则显示了如何将工作组分配给不同的SP。在此示例中,有9个工作组总的来说,它们每个都由一个SP执行。每个工作组有四个浪潮,波形大小为16。
在这里插入图片描述
OpenCL标准既未定义工作组启动/执行的顺序,也未定义组同步的方法。对于Adreno GPU,开发人员无法假定在SP上按特定顺序启动工作组。波浪也是如此。在大多数Adreno GPU中,一个SP一次只能处理一个工作组,而该工作组必须先完成,然后才能开始。在较高级别或较新的系列中,例如Adreno A540 GPU,支持每个SP执行多个工作组。

OpenCL上的Adreno A3x,A4x和A5x差异

每个新系列的Adreno GPU都对OpenCL功能进行了许多改进,性能。本节讨论影响OpenCL性能的关键更改。

1. L2缓存

L2缓存体系结构已得到显着改进,以提高效率和性能从Adreno A320和A330 GPU到Adreno A420,A430,A530和A540 GPU,除了尺寸增加。

2. 本地内存

本地内存已从Adreno A3x改进到A4x和A5x系列,包括容量,负载/存储吞吐量和合并访问。合并访问是OpenCL和GPU并行计算的重要概念。基本上,它指基础硬件可以合并和合并数据加载/存储的情况将多个工作项的请求合并为一个请求,因此数据加载/存储效率为改善。没有合并的访问支持,硬件必须执行加载/存储操作每个单独的请求,都会导致性能下降。

图形和计算之间的上下文切换工作量

1. 上下文切换

在Adreno GPU中,如果需要高优先级任务,例如图形用户界面(UI)渲染当低优先级工作负载在GPU上运行时,后一种可能会被迫暂停,以便GPU切换到高优先级工作负载。当高优先级任务完成时,低优先级任务一个恢复。这种类型的工作负载切换称为上下文切换。上下文切换通常价格昂贵,因为它需要复杂的硬件和软件操作。但是,这很重要该功能可实现新兴和高级定时关键任务,例如汽车应用。

2.限制GPU上的内核/工作组执行时间

有时,计算内核可能运行时间过长,并触发警报使GPU重​​置。为避免意外行为,建议不要进行计算工作组需要很长时间才能完成的内核。通常在Android上进行UI渲染设备持续发生,例如,每30毫秒发生一次,并且长时间运行的计算内核可能导致用户界面滞后且无响应,从而损害用户体验。理想的执行时间将视情况而定。但是,一般的经验法则是内核执行时间应该在几十毫秒的范围内。

OpenCL标准相关的改​​进

Adreno A3x GPU支持OpenCL 1.1嵌入式配置文件,而Adreno A4x GPU支持OpenCL 1.2完整配置文件,而Adreno A5x GPU支持OpenCL 2.0完整配置文件。

从OpenCL 1.1嵌入式配置文件到OpenCL 1.2完整配置文件,大部分更改是在软件而非硬件上,例如改进的API功能。从OpenCL 1.2完整配置文件到OpenCL 2.0完整配置文件,有许多新功能引入了硬件功能,例如共享虚拟内存(SVM),内核队列内核,等。下表列出了三个Adreno在OpenCL配置文件支持方面的主要区别GPU。

在这里插入图片描述

OpenCL扩展

除了支持核心OpenCL功能之外,Adreno OpenCL平台还支持通过扩展的许多其他功能,这些功能可以改善OpenCL的可用性并公开Adreno GPU中的高级硬件功能。给定Adreno可用的扩展可以使用clGetPlatformInfo查询GPU 。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值