2016-05-15 6 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' 

и перфорация дал:

enter image description here

две функции __libm_exp_l9() и __libm_pow_l9() потребляют значительную вычислительную мощность.

Так что мне интересно, являются ли они просто псевдонимами для exp() и pow(), соответственно? Или любые предложения для чтения в отчете здесь? Спасибо.

ответ

1

Это не псевдонимы, а внутренняя реализация функций. Математические библиотеки обычно имеют несколько версий функций в зависимости от используемого процессора, набора команд или аргументов.

Не о чем беспокоиться. Exp и Pow - это функции, которые сложнее, чем просто инструкции (обычно), и поэтому они занимают некоторое время. К сожалению, я не нашел для них никакой ссылки (математическая библиотека Intel, вероятно, не является open source), но это обычная практика использования внутренних имен с именами для функции.