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。