如何在六边形 dsp 模拟器中分析代码
How to profile code in hexagon dsp simulator
我一直在尝试使用 -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 芯片中使用浮点数似乎也不是一个好主意。如果我将我的代码转换为使用定点会更好吗?
您可以使用 hexagon-sim
生成分析数据,而无需重建检测二进制文件。
hexagon-sim --profile ./hello
将生成 hexagon-gprof
使用所需的 gmon
个输入文件。
例如(取自 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 User Guide"(文档编号 80-N2040-10 A)。
Are there any tutorials or references other than the programmer
reference manual because they haven't been very useful in helping me
understand how things work.
Specially I don't understand how SIMD programming works. I am not sure
what's the size of SIMD registers.
Hexagon 的矢量编程扩展名为 "HVX"。 https://developer.qualcomm.com/software/hexagon-dsp-sdk/tools 提供了 HVX 特定的 PRM——它描述了不同的 512 位和 1024 位向量模式。
我一直在尝试使用 -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 芯片中使用浮点数似乎也不是一个好主意。如果我将我的代码转换为使用定点会更好吗?
您可以使用 hexagon-sim
生成分析数据,而无需重建检测二进制文件。
hexagon-sim --profile ./hello
将生成 hexagon-gprof
使用所需的 gmon
个输入文件。
例如(取自 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 User Guide"(文档编号 80-N2040-10 A)。
Are there any tutorials or references other than the programmer reference manual because they haven't been very useful in helping me understand how things work.
Specially I don't understand how SIMD programming works. I am not sure what's the size of SIMD registers.
Hexagon 的矢量编程扩展名为 "HVX"。 https://developer.qualcomm.com/software/hexagon-dsp-sdk/tools 提供了 HVX 特定的 PRM——它描述了不同的 512 位和 1024 位向量模式。