2014-04-23 2 views
1

나는 긍정적 인 명확한 행렬을 가지고 있으며이를 해결하기 위해 Cholesky를 사용하고자합니다. 나는 Eigen을 사용하고 다음과 같이합니다.Eigen Linear Algebra 라이브러리가 너무 느림

VectorXd x1 =A1.ldlt().solve(B1); //35.7ms 

100 회 이상 실행하면 평균 35.7ms입니다. 이게 정상인가? 내 자신의 코드는 Red Hat과 Intel i7-3770 3.4 GHz를 사용하여 10ms에서 실행할 수 있습니다.

어떻게 속도를 높일 수 있습니까? 행렬 크기는 241x241이고 벡터는 241입니다.

답변

3

컴파일러의 최적화가 활성화되어 있는지 확인하십시오. 예를 들어, GCC 또는 그 소리에 대해 당신은 사용할 수 있습니다 :

-O2 -msse2 -DNDEBUG 

을 같은 매트릭스 크기 아이겐의 포획 0.8ms를 들어 코어 i7 2.6 GHz의 @.

+0

예, 속도가 빨라집니다. 나는 ARM Cortex A9를 사용해 보았는데 40ms가 걸렸습니다. 하지만 제 코드도 40ms가 걸렸습니다. 나는 그것이 슈퍼 빠른 될 운명이었다. 아니면 내 코드가 빠릅니다. 내 인텔에서 모두 0ms로 등록되어 있습니다. 03과 02 최적화를 사용했지만 차이는 없습니다. 내가 이것을 사용한다면 나는 생각할 필요가있을 것이다. – user1876942

+0

또한 EIGEN_NO_DEBUG = 1 – SAKrisT

+0

사실,'-DNDEBUG'는'EIGEN_NO_DEBUG = 1'을 의미하기 때문에 – ggael