C / Renderscript / Neon本征之间的电池功耗—视频滤波器(Edgedetection)APK

问题描述 投票:2回答:2

我使用Android NDK(使用Renderscript的C ++ API)开发了3个C / RS / Neon-Intrinsics版本的视频处理算法。从JAVA前端到NDK端的C / RS / Neon调用将达到本机级别。我发现由于某些原因,霓虹灯版本比C和RS版本要消耗很多功率。我在电源测试中使用了[[Trepn 5.0。

  1. 可以让我澄清一下这些方法C,Renderscript-GPU和Neon Intrinsics的功耗水平。哪一个消费最多?
  2. RS代码的理想功耗水平是多少?因为GPU以更少的时钟频率运行并且功耗必须更少!
  3. Renderscript API是否专注于功耗优化?

  • 视频-1920x1080(20帧)

      C-11115.067毫秒(0.80mW)
  • RS-9867.170 ms(0.43mW)
  • Neon固有-9160 ms(1.49mW)
  • android c android-ndk neon renderscript
    2个回答
    5
    投票
    首先,渲染脚本代码的功耗取决于SOC的类型,CPU,GPU运行的频率/电压等。

    即使您查看来自同一供应商的CPU,例如说A15和A9,也都是ARM,与A9相比,A15的CPU更加耗电。同样,Mali GPU4XX与6XX的相同任务也表现出功耗差异。此外,在执行相同任务的不同供应商(例如Intel和ARM CPU)之间也存在功耗差异。同样,即使它们以相同的频率/电压水平运行,也会注意到QCOM Adreno GPU与ARM Mali GPU之间的功率差异。

    [如果您使用的是Nexus 5,我们会以每CPU 2.3G的速度启动QUAD A15 CPU。 Renderscript将CPU和GPU推向最高时钟速度。因此,在此设备上,我希望基于CPU / Neon或仅基于CPU的RS代码的功耗最高,具体取决于您正在执行的操作类型,然后是RS GPU代码。因此,关于功耗,最重要的是,由于所使用的SOC有所不同,因此所用设备的类型至关重要。在目前出现的最新一代SOC中,我期望CPU / Neon的功耗比GPU高。

    RS会将CPU / GPU时钟频率推至最高速度。因此,我不确定是否可以在这里进行有意义的功耗优化。即使这样做,与CPUS / GPU最高速度所消耗的功率相比,这些功率节省也是微不足道的。

    此功耗在移动设备上是一个巨大的问题,从功耗的角度来看,使用过滤器在计算成像空间中处理几帧可能会很好。但是,即使在真正的视频处理中执行渲染脚本的那一刻,即使对于较低的视频分辨率,设备也会如此迅速地变热,然后OS系统热管理器开始发挥作用。这些热量管理器会降低总体CPU速度,从而导致CPU渲染脚本的性能不可靠。

    回复评论

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

    因此,无论复杂程度如何,如果您将GPU电压保持在1.25V@600 MHz之类的水平,您的功耗将非常高,可与[email protected]的CPU功耗相提并论...

    我测试了Neon内在函数-5X5进行了卷积运算,与不使用CPU来完成同一任务相比,它们相当快(3x-5x)。霓虹灯硬件通常与CPU在同一电源域(也称为MPU电源域)中。因此,即使Neon硬件正在工作,所有CPU仍保持电压/频率。由于Neon在给定任务上的执行速度比CPU快,因此,如果它相对于该任务消耗的功率大于CPU,我不会感到惊讶。如果要获得更快的性能,就必须付出一些努力-它显然是强大的功能。


    0
    投票
    ik这个线程很旧,但是我对trepn有疑问,您是如何在方法级别使用它的,我只能使用它来测量整个应用程序的功耗
    © www.soinside.com 2019 - 2024. All rights reserved.