Parallel processing 使用RowMajor稀疏矩阵并行BiCGSTAB仍在siquential中运行

Parallel processing 使用RowMajor稀疏矩阵并行BiCGSTAB仍在siquential中运行,parallel-processing,eigen,Parallel Processing,Eigen,我用它来解一个稀疏的方程组。我已经使用了multiprecision和下面的代码,但是代码是按顺序运行的。 我跟着火车走 使用MatrixXmp=Eigen::Matrix; 使用向量xmp=特征::矩阵; ... omp_设置_num_线程(num_线程); 特征::setNbThreads(num_线程); mpfr::mpreal::set_default_prec(128); 特征::biggstab解算器; 求解器。设定公差(tol); 求解器.setMaxIterations(max

我用它来解一个稀疏的方程组。我已经使用了multiprecision和下面的代码,但是代码是按顺序运行的。 我跟着火车走

使用MatrixXmp=Eigen::Matrix;
使用向量xmp=特征::矩阵;
...
omp_设置_num_线程(num_线程);
特征::setNbThreads(num_线程);
mpfr::mpreal::set_default_prec(128);
特征::biggstab解算器;
求解器。设定公差(tol);
求解器.setMaxIterations(maxiter);
计算(A);
xx=解算器解算(b);
编译:

g++-o solver main.cpp-lmpfr-lgmp-fopenmp
我检查
top
的cpu使用情况。我的操作系统是Ubuntu 20.04。 我已经看到了几乎相同的,但我仍然有顺序运行的问题

编辑:我像这样填充矩阵
A

Eigen::SparseMatrix A(num_行,num_行);
A.保留(本征::RowVectorXi::常数(num_元素,3));
对于(int i=0;i
也许矩阵应该更大一些。或者,这可能是因为我的专业类型。你试过双精度吗?也就是说,您需要使用
-O3
,使您的代码能够快速优化。我已经尝试了所有方法,如果有一个可用的示例会更好。它真的有用吗?