如何在hexagon dsp模拟器中分析代码

时间:2018-04-28 12:16:15

标签: clang profiling hexagon-dsp

我一直在尝试使用-pg编译我的代码以在模拟器中启用分析,一旦我这样做,它就会给我链接器错误。

编制命令

hexagon-clang ++ main.cpp -o hello -mv62 -pg

错误

hexagon-clang++  main.cpp -o hello -mv62 -pg
Error: /tmp/main-924ac3.o(.text+0x30): undefined reference to `mcount'
Error: /tmp/main-924ac3.o(.text+0x130): undefined reference to `mcount'
Fatal: Linking had errors.

这是我第一次为DSP芯片编写代码,特别是六边形682.除了程序员参考手册之外,是否有任何教程或参考资料,因为它们对于帮助我理解工作原理并不是很有用。特别是我不明白SIMD编程是如何工作的。我不确定SIMD寄存器的大小是多少。似乎在DSP芯片中使用浮点也不是一个好主意。如果我将代码转换为使用固定点,那会更好。

1 个答案:

答案 0 :(得分:2)

您可以使用hexagon-sim生成分析数据,而无需重建已检测的二进制文件。

hexagon-sim --profile ./hello将生成gmon消费所需的hexagon-gprof输入文件。

e.g。 (摘自SDK 3.3.3 Examples/

hexagon-clang -O2 -g -mv5   -c -o mandelbrot.o mandelbrot.c
hexagon-clang -O2 -g -mv5 mandelbrot.o -o mandelbrot -lhexagon
hexagon-sim -mv5 --timing --profile mandelbrot
hexagon-gprof mandelbrot gmon.t*

另请注意,SDK附带hexagon-profiler,这是一个更丰富的工具,可让您深入查看性能计数器 - 除了执行代码的频率和频率之外的信息。

参见" Hexagon Profiler用户指南" (文件号80-N2040-10 A)了解详情。

  

除程序员之外是否有任何教程或参考   参考手册,因为它们对我没有帮助   了解事情是如何运作的。

     

特别是我不了解SIMD编程的工作原理。我不确定   什么是SIMD寄存器的大小。

海克斯康的矢量编程扩展称为" HVX"。在https://developer.qualcomm.com/software/hexagon-dsp-sdk/tools有一个特定于HVX的PRM,它描述了不同的512位和1024位矢量模式。