Qcom平台通过Hexagon IDE 测试程序性能指导
- 1 安装Hexagon IDE工具
- 2 测试工程
- 2.1 打开Hexagon IDE
- 2.2 新建工程
- 2.3 添加测试案例
- 2.3.1 方法一:新建
- 2.3.2 方法二:拷贝
- 2.4 配置测试环境
- 2.4.1 包含头文件
- 2.4.2 添加程序优化功能(需先bulid一下)
- 2.4.3 添加gprof测试性能
- 2.5 编译
- 2.6 运行
- 3 解析gmon.t_0文件
- 4 解读生成的txt文件
1 安装Hexagon IDE工具
安装包在共享盘中的地址为:Z:\Software_Data\Software\tool\Qcom,我安装的3.4.3版本:
安装时,可选择默认路径,也可选择其他路径。
2 测试工程
2.1 打开Hexagon IDE
在安装路径下打开Launch Hexagon IDE
2.2 新建工程
-
依次选择菜单栏的File >> New >> Hexagon Project:
-
弹出建立工程的对话框:
-
Project name栏里填写项目名称,注意项目名称不能包含空格;
-
Project location栏为打开Hexagon IDE工具时的工作地址,选择默认路径即可;
-
Tools location栏为安装hexagon_sdk的工具路径,一般不能修改;
-
Hexagon SDK location栏用来选择SDK的路径,打开Hexagon IDE时就自动填上;
-
Project type栏里选择Executable(.exe),因为这个程序我们在Windows环境下运行;
-
Architecture栏选择V60(-mv60);
-
Choose project template栏选择General下的Empty Executable;
-
其余的无须修改,保持默认,如下:
-
点击Finish新建完成,因Project location选择的是C:/Users/xx(我的workspace路径),此时在该路径下可以找到新建的工程:
2.3 添加测试案例
添加测试案例有两个方法:新建和拷贝,新建适用于代码量小的测试,当测试代码文件较多时,建议使用拷贝。
2.3.1 方法一:新建
-
在项目名称上单击右键,选择New >> Source File
-
弹出如下对话框
注意:Source file框中填写源文件名称时,要加上文件类型,这里可以是C或者C++。在Template框中选择C或者C++,这里选择的要与填写的源文件类型相符。
3. 点击Finish完成创建
2.3.2 方法二:拷贝
将头文件、源文件和配置文件拷贝到新建的工程下,如下图
注意,可以将包含主函数的源文件放至src文件夹,拷贝完成之后需要在Hexagon IDE主界面中的Project Explorer中刷新,有两个方法:其一,在Project Explorer空白处单击右键,选中Refresh;其二,快捷键F5。
2.4 配置测试环境
配置测试环境主要包含三个:包含头文件、添加程序优化功能和添加gprof测试性能。包含头文件主要配置项目头文件路径,添加程序优化功能主要实现优化代码的功能,添加gprof测试性能主要是生成测试文件。
2.4.1 包含头文件
-
将头文件路径包含在工程中,在项目名称上单击右键,打开当前工程的Properties
-
在弹出的界面中依次点击C/C++ General >> Paths and Symbols >> Includes >> GNU C >> Add
-
接着在弹出的界面中点击File system,如下图
-
选择头文件的路径,如下图
-
点击OK保存,此时在Project Explorer中显示包含的文件
2.4.2 添加程序优化功能(需先bulid一下)
-
同样打开当前工程的Properties,在弹出的界面中依次点击C/C++ Build >>Settings >> Tool Settings,Optimization为优化等级,将Hexagon C++ Compiler下的Optimization和Hexagon C Compiler下的Optimization均设置为为Optimize more(-O2)
-
点击OK,设置成功。
2.4.3 添加gprof测试性能
-
同样打开当前工程的Properties,在弹出的界面中依次点击Run/Debug Settings >> SHS_haptic_effect(工程名),在弹出的界面中点击Simulator,并在当前界面的Miscellaneous flags框中添加- -profile命令,用于生成gmon文件
-
点击OK,设置成功。
2.5 编译
-
在项目名称上单击右键,点击Build Project编译,或者直接采用快捷键Ctrl + B。编译完成后,会在项目下生成编译好的Binaries文件
-
同时在项目路径下的LLVM Debug文件夹下生成可执行文件
2.6 运行
-
在工具栏点击运行按钮
-
运行结束会显示如下界面
-
运行结束后会在项目所在的文件夹下生成gmon.t_0文件
3 解析gmon.t_0文件
-
cmd进入高通SDK路径下的bin目录下,有一个hexagon-gprof.exe文件,gprof是一个用于读取profile结果文件的工具
-
将gmon.t_0文件拷贝至该文件夹下,并在cmd界面执行hexagon-gprof.exe,命令如下:
注意:如须重新解析新生成的gmon.t_0文件,需将新生成的gmon.t_0文件重新拷贝到该目录下。
指令:.\hexagon-gprof.exe C:\Users\xx\xxxxx_effects\LLVM_Debug\xxxxx_effects gmon.t_0>xxxxxx_effects.txt
4 解读生成的txt文件
-
通过gprof解析生成的txt文件头如下
-
各参数代表含义如下
%time 函数执行占时百分比
cumulative cycle(s) 函数和以上所有函数累积执行周期
self cycle(s) 函数执行周期
calls 函数执行总次数
self Mc/call 函数每执行一次的执行周期
total Mc/call 函数及其衍生函数执行一次的执行周期
name 函数名 -
MCPS(Million Cycles Per Second)计算公式:
某函数的MCPS = total_cycles × Fs / (time × number of channels × Fs ×1000000) -
示例
如函数butter_filter_process_new执行周期9340704,采样率48k,time为2s,number of channels为2,则函数butter_filter_process_new的MCPS为
MCPS = 934070448000/(22480001000000)
注意:如果某函数有衍生函数,则计算MCPS时需加上所有衍生函数的self cycles。