假設我有一個稀疏矩陣,除了沿着對角線(固定大小)的塊。使用特徵的高效塊稀疏矩陣乘法
Eigen::SparseMatrix<float> lhs;
LHS是大約2%的非稀疏,也可以是非常大的。那麼,讓我們說我有一個向量:
Eigen::MatrixXf rhs = Eigen::MatrixXf::Random(SomeSz, 1);
就目前而言,我們假設它是密集。
我想有效地計算:
result.noalias() = lhs * rhs;
如果我是-O3 -march =本地-mtune =原生(鏗鏘)進行編譯,這會產生最佳的結果呢?
而且,如果什麼RHS稀疏:
Eigen::SparseMatrix<float> rhs; rhs.resize(SomeSz, 1); rhs.reserve(SomeSz/SomeFactor);
是:
result = lhs * rhs;
仍然最優/次優?
我想我要問的是Eigen是否會利用塊稀疏結構,只執行必要的計算。