2017-07-26 12 views
2

Je travaille sur le profilage de performances d'une application app qui a été compilée avec le compilateur IBM XL Fortran pour processeur IBM POWER8. Ceci est une partie de la production de perf report:__xl_pow, __xl_log, __xl_exp dans le rapport de perf

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

Quelles sont ces fonctions indiquées dans le profil? Mon hypothèse est que ce sont les implémentations de pow(), log() et exp() qui sont fournis avec le compilateur (voir a similar discussion). Est-ce exact?

Répondre

3

Lorsque vous activez un niveau d'optimisation de -O3 ou supérieur, les compilateurs XL remplacent plusieurs appels de fonction libm par des appels vers une bibliothèque hautes performances livrée avec le compilateur. Les appels de fonction __xl_* que vous voyez proviennent de cette bibliothèque. Si vous ne les voulez pas, par exemple parce que leur précision est parfois légèrement différente des appels de libm, compilez avec -qstrict=library.

Note: Même avec -qstrict=library, XL Fortran peut encore appeler ses propres fonctions pour pow(), mais ces fonctions ont la même précision que l » pow()libm.