【发布时间】:2016-07-13 11:34:35
【问题描述】:
我有一个大小为 (91716x91716) 的稀疏矩阵 A,其中包含 3096684 个非零元素和一个密集向量 rhs。我正在以这种方式使用 ConjugateGradient 解决系统问题:
initParallel();
ConjugateGradient<SparseMatrix<double>, Lower|Upper> solver;
solver.compute(A);
const VectorXd response = solver.solve(rhs);
我正在编译:
g++ -O3 -I./eigen -fopenmp -msse2 -DEIGEN_TEST_SSE=ON -o example example.cpp
使用多线程和不使用多线程的执行时间大致相同(大约 1500 毫秒)。 我正在使用本征版本 3.2.8。
多线程性能不佳有什么原因吗?我实际上在我的系统监视器中看不到多线程效果。有没有其他方法可以加速这个过程?
编辑: 对 Eigen::nbThreads() 的调用会响应 12 个线程。
【问题讨论】:
标签: multithreading linear-algebra sparse-matrix eigen eigen3