性能报告中的 __xl_pow、__xl_log、__xl_exp

__xl_pow, __xl_log, __xl_exp in perf report

我致力于对使用 IBM XL Fortran 编译器针对 IBM POWER8 处理器编译的应用程序 app 进行性能分析。这是 perf report:

输出的一部分
 3.88%  app  app                [.] __xl_pow
 2.91%  app  app                [.] __xl_log
 1.81%  app  app                [.] __xl_exp

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

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

进行编译

注意:即使使用 -qstrict=library,XL Fortran 可能仍会为 pow() 调用自己的函数,但这些函数与 libmpow() 具有相同的精度.