Quantcast
Channel: 英特尔开发人员专区文章
Viewing all articles
Browse latest Browse all 583

使用英特尔® 内联函数在安卓*平台上优化功耗比的代码示例

$
0
0

观看视频

简介

电池续航时间,尤其是移动设备,对于用户的重要性不言而喻。我们都遇到过这样的时刻,即在最需要的时候设备突然断电 — 无论是在一座新城市中导航,还是正在接听一个重要的电话。虽然看上去不是那么明显,但是通过优化应用性能,开发人员能够降低系统功耗,进而为用户带来帮助。

借助英特尔® 图形性能分析器  + VTune™ 放大器的组合对应用进行分析

提高应用的功耗比首先要做什么?首先,您必须了解您的应用是 CPU 密集型还是 GPU 密集型。您可以使用一套英特尔® 工具组合来实现这一点:

英特尔® 图形性能分析器 or GPA是一种用于图形分析以及优化 Microsoft DirectX* 应用和 Android* OpenGL ES* 应用的工具。了解更多信息,请访问:https://software.intel.com/en-us/articles/gpa-which-version

出于优化安卓平台的目的,我倾向于使用 GPA 控制台客户端。了解相关信息,请访问:https://software.intel.com/en-us/android/articles/using-intel-graphics-performance-analyzers-console-client-for-android-application

VTune™ 放大器可帮助您分析算法选择,并发现您的应用如何从可用的硬件资源获益。使用 VTune 放大器定位或确定:

  • 应用和/或整个系统中最耗时的功能(热点)
  • 无法有效利用可用处理器时间的代码段
  • 针对连续处理性能和线程性能优化的最佳代码段
  • 影响应用性能的同步对象
  • 应用是否处理输入/输出操作,以及具体的位置和处理方式
  • 不同同步方法、不同的线程数量或不同算法对于性能的影响
  • 线程活动和转换
  • 代码中与硬件相关的瓶颈

配置主机系统(Linux*、OS X* 或 Windows*),并在远程系统(Linux 或 Android)上运行分析。仅面向系统的 VTune 放大器支持在安卓和嵌入式 Linux 系统上执行远程分析。

了解更多信息,请访问:https://software.intel.com/en-us/node/496918

下图展示了如何使用 GPA 和 VTune 放大器的组合来分析和优化应用。

什么是英特尔® 内联函数

英特尔® 内联函数是使用汇编编码的函数,支持您使用 C/C++ 函数调用和变量来取代汇编指令。内联函数提供了使用标准 C 和 C++ 语言结构而无法生成的指令。

内联函数支持内嵌扩展,进而消除了函数调用的开销。内联函数提供了与使用内嵌汇编相同的优势,有助于提高代码可靠性、帮助指令调度以及减少调试。

了解更多信息,请访问:https://software.intel.com/en-us/node/523351

如何查找面向安卓*操作系统的英特尔® C++ 编译器,并将其连接至您的项目?

随英特尔® INDE 套件提供。面向安卓*的英特尔® C++ 编译器集成了安卓 NDK,并且提供了编译 x86 库的优化方案。

下载并安装面向安卓的英特尔 C++ 编译器。安装过程中提供 NDK 目录的路径,以便将面向安卓的英特尔 C++ 编译器集成至安卓 NDK。

成功安装后,面向安卓的英特尔® C++ 编译器将自动集成至安卓 NDK 工具链,并将编译面向 x86 架构的优化库。

示例

请查看下面的 C++ 代码,了解英特尔内联函数的使用:

Float x = 1.0f / sqrtf( y );

这种代码(尤其是物理算法中)经常出现在热点之中。

通过分析 VTune 放大器中的字符串,配置文件  将会显示编译器生成 sqrt + div(而不是 rsqrt)。

使用英特尔内联函数可修复此问题:

Float x = rsqrt( y );

Where rsqrt is:

         #include

         …

         inline float rsqrt(const float x)
         {
             float r;
             _mm_store_ss(&r, _mm_rsqrt_ss( _mm_load_ss(&x)));
             return r;
         }

参考资料

如欲了解更多信息,请观看我的视频:https://videoportal.intel.com/media/0_qgvcof5s

 

关于作者

Stanislav Pavlov 任职于英特尔公司的软件 & 服务事业部。他在技术领域拥有十几年的丰富经验。他关注的主要领域包括性能优化、功耗和并行程序设计。作为英特尔的一名高级应用工程师,Stanislav 与软件开发人员和 SoC 架构师紧密协作,帮助他们在英特尔平台上实现尽可能出色的性能。Stanislav 毕业于国立研究大学高等经济学院,拥有数理经济学硕士学位。他目前正在攻读莫斯科商学院的 MBA。


Viewing all articles
Browse latest Browse all 583

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>