性能报告中的 __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()
调用自己的函数,但这些函数与 libm
的 pow()
具有相同的精度.
我致力于对使用 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()
调用自己的函数,但这些函数与 libm
的 pow()
具有相同的精度.