__xl_pow,__xl_log,__xl_exp在perf报告中

问题描述:

我正在研究用IBM POWER8处理器的IBM XL Fortran编译器编译的应用程序app的性能分析。这是perf report输出的一部分:__xl_pow,__xl_log,__xl_exp在perf报告中

3.88% app app    [.] __xl_pow 
2.91% app app    [.] __xl_log 
1.81% app app    [.] __xl_exp 

配置文件中显示的功能是什么?我的假设是,这些是编译器提供的pow()log()exp()的实现(请参阅a similar discussion)。那是对的吗?

当您启用-O3或更高的优化级别时,XL编译器会将几个libm函数调用替换为对编译器附带的高性能库的调用。您看到的__xl_*函数调用来自该库。如果你不需要它们,例如因为它们的精度有时与libm调用稍有不同,请使用-qstrict=library进行编译。

注:即使-qstrict=library,XL Fortran语言可能仍然称自己的功能pow(),但是这些功能具有相同的精度为libmpow()