gprof объявляет слишком много «спонтанным» с Эйгеном - PullRequest
1 голос
/ 13 мая 2019

У меня есть проект C ++, который использует матрицу Eigen.Для повышения производительности мне нужно получить профиль для этого.Я пробовал использовать gprof, но в профиле есть куча таких результатов, где он помечается как «спонтанный»:

                                                 <spontaneous>
[1]     48.8 2535.09 38010.25                 GaugeField::read_lime_gauge_field_doubleprec_timeslices(double*, char const*, long, long) [1]
             20857.12    0.00 3419496363/5297636514     Eigen::internal::gebp_kernel<std::complex<double>, std::complex<double>, long, Eigen::internal::blas_data_mapper<std::complex<double>, long, 0, 0>, 1, 4, false, false>::operator()(Eigen::internal::blas_data_mapper<std::complex<double>, long, 0, 0> const&, std::complex<double> const*, std::complex<double> const*, long, long, long, std::complex<double>, long, long, long, long) [2]
             5844.01 11309.11 3350517373/3366570904     Eigen::internal::gebp_kernel<std::complex<double>, std::complex<double>, long, Eigen::internal::blas_data_mapper<std::complex<double>, long, 0, 0>, 1, 4, true, false>::operator()(Eigen::internal::blas_data_mapper<std::complex<double>, long, 0, 0> const&, std::complex<double> const*, std::complex<double> const*, long, long, long, std::complex<double>, long, long, long, long) [4]

Иногда вызов Eigen напрямую помечается как спонтанный.

Я провожу 85% времени в частях, которые помечены как спонтанные.Это не очень полезно, так как я уже знаю, что в моем коде сжатия тензора вызовы Eigen будут самыми дорогими.Мне нужно знать, из какой части моего кода поступают эти вызовы.

Есть ли способ заставить gprof извлекать более полезную информацию из моей программы?

...