我正在使用perf来分析我的程序,其中涉及使用exp()和pow()的负载。代码编译使用
icc -g -fno-omit-frame-pointer test.c
并描述:
perf record -g ./a.out
接下来是:
perf report -g 'graph,0.5,caller'
和perf给出了:
两个函数__libm_exp_l9()和__libm_pow_l9()正在消耗大量的计算能力。
所以我想知道它们是否只是exp()和pow()的别名?或者在报告中阅读的任何建议? 感谢。
答案 0 :(得分:1)
它们不是别名,而是函数的内部实现。数学库通常有几个版本的函数,具体取决于使用的处理器,指令集或参数。
没有什么可担心的。 Exp和Pow的功能比指令(通常)更复杂,因此需要一些时间。不幸的是我没有找到任何参考(英特尔数学库可能不是开源),但这是通常的做法,使用内部命名空间名称的功能。