代码之家  ›  专栏  ›  技术社区  ›  Martin Ueding

gprof用Eigen声明了太多的自发性

  •  0
  • Martin Ueding  · 技术社区  · 5 年前

    我有一个C++项目,它使用特征矩阵库。为了提高性能,我需要得到它的配置文件。我尝试过使用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 直接标记为自发性。

    有什么方法可以让gprof从我的程序中提取更多有用的信息吗?

    0 回复  |  直到 5 年前
        1
  •  0
  •   Martin Ueding    5 年前

    似乎真的没有一种方法可以在不删除所有优化的情况下使用纯gprof来解决这个问题。这当然会扭曲绩效衡量标准,毫无用处。

    最后我只写了一点代码,只是以分层的方式跟踪调用。这个程序现在有一堆 TimingScope<3>("Diagram::request"); gprof2dot 给予:

    如果gprof对我们有用的话,这使我们能够用比gprof更多的上下文来理解out程序。

    推荐文章