Registered Member
|
Hello,
I've been learning Eigen by implementing some tools, and am now at a point where I am aiming to improve the speed of my methods. I've enabled openMP via -fopenmp and used gprof to profile my code, and found that my Matlab/Octave code is actually faster, by a factor of 5 or so. In looking over the results of my profiling, I've found that the largest consumer of run time is using the partialPivLu() solver for my linear systems. Specifically, gprof indicates the following for the largest consumer of time: Flat profile: Each sample counts as 0.01 seconds. % cumulative self self total time seconds seconds calls s/call s/call name 69.61 225.32 225.32 12923 0.02 0.02 Eigen::internal::inplace_transpose_selector<Eigen::Matrix<double, -1, -1, 0, -1, -1>, false, false>::run(Eigen::Matrix<double, -1, -1, 0, -1, -1>&) Looking at the call tree, I find specifically that the following call consumes most of the time (by making the most calls to the above method: Eigen::internal::triangular_solve_matrix<double, long, 1, 5, false, 0, 0>::run(long, long, double const*, long, double*, long, Eigen::internal::level3_blocking<double, double>&) I've also tried a different solver, colPivHouseholderQr(), with similar timing results. Is there a way to speed up some of these calls? I cannot use sparse or symmetric matrix solvers, since my matrices are generally neither. Any help would be appreciated. |
Registered users: Bing [Bot], daret, Google [Bot], sandyvee, Sogou [Bot]