2016-05-15 110 views
0

我正在使用perf來剖析我的程序,其中涉及到使用exp()和pow()的負載。該代碼被編譯使用perf報告顯示「__libm_pow_l9」

icc -g -fno-omit-frame-pointer test.c 

與異形:

perf record -g ./a.out 

隨後是:

perf report -g 'graph,0.5,caller' 

和PERF了:

enter image description here

__libm_exp_l9()和__libm_pow_l9()這兩個函數消耗大量的計算能力。

所以我想知道它們是否分別只是exp()和pow()的別名?或者有什麼建議可以在這裏閱讀報告? 謝謝。

回答

1

它們不是別名,而是函數的內部實現。數學庫通常具有幾個版本的功能,取決於使用的處理器,指令集或參數。

沒有什麼可擔心的。 Exp和Pow是比通常更簡單的函數,因此需要一些時間。不幸的是,我沒有找到任何對它們的引用(英特爾數學庫可能不是開源的),但這是使用內部名稱空間名稱進行功能的常見做法。