고정 된 크기의 대각선을 따르는 블록을 제외하고는 드문 드문 행렬을 가지고 있다고 가정 해 보겠습니다.Eigen을 이용한 효율적인 블록 - 희소 행렬 곱셈
Eigen::SparseMatrix<float> lhs;
좌 약 2 % 비 희소이지만, 매우 클 수있다. 그럼, 내가 벡터가 있다고 가정 해 보자 순간
Eigen::MatrixXf rhs = Eigen::MatrixXf::Random(SomeSz, 1);
,의 그것 밀도의 가정하자.
I 효율적으로 계산 할:
result.noalias() = lhs * rhs;
내가 (연타와) -03 -march = 기본 -mtune = 네이티브 컴파일 할 수 있었다면,이 최적의 결과를 얻을 것인가? 우 스파 스 무슨 경우에도
:Eigen::SparseMatrix<float> rhs; rhs.resize(SomeSz, 1); rhs.reserve(SomeSz/SomeFactor);
은 다음과 같습니다
result = lhs * rhs;
여전히 최적/차선?
내가 원하는 것은 Eigen이 블록 스파 스 구조를 이용하고 필요한 계산 만 수행하는지 여부입니다.