C/Renderscript/Neon内在函数之间的电池功耗 - 视频滤波器(Edgedetection)APK

 庚的右翼cs神 发布于 2023-01-07 13:20

我使用Android NDK(使用C++ API for Renderscript)开发了3个C/RS/Neon-Intrinsics版本的视频处理算法.来自JAVA前端的NDK侧的C/RS/Neon呼叫将进入本地级别.我发现由于某种原因,与C和RS版本相比,Neon版本消耗大量功率.我使用Trepn 5.0进行功率测试.

    有人可以澄清一下这些方法C,Renderscript - GPU,Neon Intrinsics的功耗水平.哪个消费最多?

    RS代码的理想功耗水平是多少?,因为GPU以较低的时钟频率运行,功耗必须更低!

    Renderscript API是否专注于功耗优化?

视频 - 1920x1080(20帧)

    C - 11115.067 ms(0.80mW)

    RS - 9867.170毫秒(0.43mW)

    Neon Intrinsic - 9160毫秒(1.49mW)

mahesh ren.. 5

首先,渲染脚本代码的功耗取决于SOC的类型,CPU,GPU运行的频率/电压等.

即使您从同一供应商处查看CPUS,例如ARM,例如A15和A9,A15的CPU比A9更耗电.同样,A Mali GPU4XX与6XX同样表现出同一任务的功耗差异.此外,不同供应商之间也存在功率增量,例如,英特尔和ARM CPU,用于执行相同的任务.同样,人们会注意到QCOM Adreno GPU和ARM Mali GPU之间的功率差异,即使它们在相同的频率/电压水平下运行.

如果你使用Nexus 5,我们得到一个QUAD A15 CPU,每个CPU的速度为2.3G.Renderscript将CPU和GPU推向最高时钟速度.所以在这个设备上,我希望基于CPU/Neon或者CPU的RS代码的功耗最高,具体取决于您正在进行的操作类型,然后是RS GPU代码.因此,在功耗方面,由于他们使用的SOC不同,您使用的设备类型很重要.在最新一代的SOC中,我预计CPU/Neon比GPU更耗电.

RS将CPU/GPU时钟频率推至最高速度.所以我不确定是否可以在这里进行有意义的功率优化.即使他们这样做,与CPUS/GPU在最高速度下消耗的功率相比,这些功耗也将微乎其微.

这种功耗在移动设备上是一个巨大的问题,从功耗角度来看,您可能会很好地使用滤波器在计算成像空间中处理几帧.但是,当真正的视频处理中出现渲染时,即使视频分辨率较低,设备也会迅速升温,然后OS系统热管理器就会发挥作用.这些热管理器降低了整体CPU速度,导致CPU renderscript的性能不可靠.

对评论的回应

仅频率不是功耗的原因.它是频率和电压的组合.例如,在1.25V下运行200Mhz,在1.25V运行550Mhz的GPU可能会消耗相同的功率.根据系统中电源域的设计方式,0.9V的电压应该足够200Mhz,理论上,当频率降低时,系统应该将GPU电源域转换为较低的电压.但是各种SOC存在各种问题,因此无法保证电压和频率的一致转换.这可能是即使对于标称负载,GPU功率可能很高的原因之一.

因此,对于任何复杂性,如果您将GPU电压保持在1.25V @ 600 MHz之间,那么您的功耗将相当高,并且可以与2G @ 1.25V时的CPU相媲美......

我测试了Neon内在 - 5X5卷积,与不使用CPU进行相同任务相比,它们非常快(3x-5x).霓虹灯硬件通常与CPU(也称为MPU电源域)处于相同的电源域中.因此,即使Neon硬件工作,所有CPU都保持在电压/频率.由于Neon对于给定任务的执行速度比CPU快,因此如果相对于该任务的CPU消耗的功率相对较多,我也不会感到惊讶.如果你的性能更快,那就必须给出一些东西 - 显然是力量.

1 个回答
  • 首先,渲染脚本代码的功耗取决于SOC的类型,CPU,GPU运行的频率/电压等.

    即使您从同一供应商处查看CPUS,例如ARM,例如A15和A9,A15的CPU比A9更耗电.同样,A Mali GPU4XX与6XX同样表现出同一任务的功耗差异.此外,不同供应商之间也存在功率增量,例如,英特尔和ARM CPU,用于执行相同的任务.同样,人们会注意到QCOM Adreno GPU和ARM Mali GPU之间的功率差异,即使它们在相同的频率/电压水平下运行.

    如果你使用Nexus 5,我们得到一个QUAD A15 CPU,每个CPU的速度为2.3G.Renderscript将CPU和GPU推向最高时钟速度.所以在这个设备上,我希望基于CPU/Neon或者CPU的RS代码的功耗最高,具体取决于您正在进行的操作类型,然后是RS GPU代码.因此,在功耗方面,由于他们使用的SOC不同,您使用的设备类型很重要.在最新一代的SOC中,我预计CPU/Neon比GPU更耗电.

    RS将CPU/GPU时钟频率推至最高速度.所以我不确定是否可以在这里进行有意义的功率优化.即使他们这样做,与CPUS/GPU在最高速度下消耗的功率相比,这些功耗也将微乎其微.

    这种功耗在移动设备上是一个巨大的问题,从功耗角度来看,您可能会很好地使用滤波器在计算成像空间中处理几帧.但是,当真正的视频处理中出现渲染时,即使视频分辨率较低,设备也会迅速升温,然后OS系统热管理器就会发挥作用.这些热管理器降低了整体CPU速度,导致CPU renderscript的性能不可靠.

    对评论的回应

    仅频率不是功耗的原因.它是频率和电压的组合.例如,在1.25V下运行200Mhz,在1.25V运行550Mhz的GPU可能会消耗相同的功率.根据系统中电源域的设计方式,0.9V的电压应该足够200Mhz,理论上,当频率降低时,系统应该将GPU电源域转换为较低的电压.但是各种SOC存在各种问题,因此无法保证电压和频率的一致转换.这可能是即使对于标称负载,GPU功率可能很高的原因之一.

    因此,对于任何复杂性,如果您将GPU电压保持在1.25V @ 600 MHz之间,那么您的功耗将相当高,并且可以与2G @ 1.25V时的CPU相媲美......

    我测试了Neon内在 - 5X5卷积,与不使用CPU进行相同任务相比,它们非常快(3x-5x).霓虹灯硬件通常与CPU(也称为MPU电源域)处于相同的电源域中.因此,即使Neon硬件工作,所有CPU都保持在电压/频率.由于Neon对于给定任务的执行速度比CPU快,因此如果相对于该任务的CPU消耗的功率相对较多,我也不会感到惊讶.如果你的性能更快,那就必须给出一些东西 - 显然是力量.

    2023-01-07 13:23 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有