Parallel processing 阿姆达尔';s定律:矩阵乘法

Parallel processing 阿姆达尔';s定律:矩阵乘法,parallel-processing,matrix-multiplication,eigen,parallelism-amdahl,Parallel Processing,Matrix Multiplication,Eigen,Parallelism Amdahl,我试图计算代码中可以并行化的分数p,应用阿姆达尔定律,观察理论上的最大加速比 我的代码大部分时间都花在乘法矩阵上(使用特征库)。如果我认为这个部分完全可并行化?< P>如果你的矩阵足够大,比如说大于60,那么你可以用OpenMP启用(例如,GCC的-FOpenMP)编译,并且产品将为你并行化。然而,通常最好在尽可能高的级别进行并行化,尤其是当矩阵不是很大时。然后,这取决于您能否在算法中识别独立的任务 >首先,考虑特征库如何处理矩阵乘法是合适的。 然后,没有特征值的矩阵(mxn)-向量(nx1)乘

我试图计算代码中可以并行化的分数p,应用阿姆达尔定律,观察理论上的最大加速比


我的代码大部分时间都花在乘法矩阵上(使用特征库)。如果我认为这个部分完全可并行化?

< P>如果你的矩阵足够大,比如说大于60,那么你可以用OpenMP启用(例如,GCC的-FOpenMP)编译,并且产品将为你并行化。然而,通常最好在尽可能高的级别进行并行化,尤其是当矩阵不是很大时。然后,这取决于您能否在算法中识别独立的任务

>首先,考虑特征库如何处理矩阵乘法是合适的。 然后,没有特征值的矩阵(mxn)-向量(nx1)乘法可以这样写:

1  void mxv(int m, int n, double* a, double* b, double* c)
2  { //a=bxc
3    int i, j;
4
5    for (i=0; i<m; i++)
6    {
7      a[i] = 0.0;
8      for (j=0; j<n; j++)
9        a[i] += b[i*n+j]*c[j];
10   }
11 }
1 void mxv(int m,int n,double*a,double*b,double*c)
2{//a=bxc
3 int i,j;
4.
5表示(i=0;i