부스트 ublas 제품 성능을 향상시킬 수있는 방법이 있습니까?부스트 uBLAS 매트릭스 제품이 매우 느림
나는 두 행렬 A, 내가 추가/mulitply 할 B를/부/...이 C 대 MATLAB에서
++ 내가 얻을 2000x2000 매트릭스 운영OPERATION | MATLAB | C++ (MSVC10)
A + B | 0.04 | 0.04
A - B | 0.04 | 0.04
AB | 1.0 | 62.66
A'B' | 1.0 | 54.35
에 대해 다음 번 [S]
여기 왜 이렇게 큰 성능 손실이 있습니까?
매트릭스는 실제 2 배입니다. 그러나 나는 또한 긍정적 인 한정, 대칭, 사각형 제품이 필요합니다.
EDIT : 코드는 사소한
matrix<double> A(2000 , 2000);
// Fill Matrix A
matrix<double> B = A;
C = A + B;
D = A - B;
E = prod(A,B);
F = prod(trans(A),trans(B));
EDIT 2 결과 할려고 10의 평균 값이다. (!) : 모든이 릴리스에서 퇴장했다 (NDEBUG/MOVE_SEMANTICS/..) 모드 STDDEV는 내가 요인 2-3 어쩌면에 있지만 50
EDIT 3 기대 이하 0.005
했다.
EDIT 4 : 제품 결과에 사전 할당 된 행렬은 런타임에 영향을 미치지 않습니다.
깨끗한 Matlab 재실행을 꼭해야합니다. 캐시하는 경향이 있습니다. 음, 모든 것. 완전히 관련이 없지만 괜찮은 성능과 [Eigen] (http://eigen.tuxfamily.org/index.php?title=Main_Page)의 쉬운 구문을 얻을 수 있어야합니다. (나는 당신의 작은 벤치 마크, 힌트 힌트와 관련이있는 방법에 관심이있다 :-) – rubenvb
나는 곱셈 vs 추가에 ~ 2000x 시간을 기대한다. – ruslik
uBlas의 해제 모드를 켜는 것을 잊지 않았다. [link = http : //www.boost.org/doc/libs/1_47_0/libs/numeric/ublas/doc/index.htm] 끝에있는 [http://www.boost.org/doc/index.htm] 끝에있는 FAQ를 참조하십시오. '-DNDEBUG'또는 일부 다른 플래그를 사용하여 ublas를 릴리스 용으로 컴파일합니다. –