Concurrency omp并行并没有给矩阵乘法带来任何性能提升

Concurrency omp并行并没有给矩阵乘法带来任何性能提升,concurrency,parallel-processing,openmp,concurrent-programming,shared-resource,Concurrency,Parallel Processing,Openmp,Concurrent Programming,Shared Resource,我使用以下两个代码块来串行和并行计算矩阵乘法 连载- double** ary1 = new double*[in]; double** ary2 = new double*[in]; double** result = new double*[in]; for (int i=0;i<in;i++){ for (int j=0;j<in;j++){ result[i][j] = 0; for(int k = 0;k<in; k++){

我使用以下两个代码块来串行和并行计算矩阵乘法

连载-

double** ary1 = new double*[in];
double** ary2 = new double*[in];
double** result = new double*[in];
for (int i=0;i<in;i++){
    for (int j=0;j<in;j++){
        result[i][j] = 0;
        for(int k = 0;k<in; k++){
            result[i][j] += ary1[i][k]*ary2[k][j];
        }
    }
}
平行-

double** ary1 = new double*[in];
double** ary2 = new double*[in];
double** resultsP = new double*[in];
#pragma omp parallel for 
for(int i=0;i<size;i++){
  int raw = i/in;
  int column = i%in;
  double sum =0;
  for(int k = 0; k < in; k++){
       resultsP[raw][column] += ary1[raw][k]*ary2[k][column];
  }
  resultsP[raw][column] = sum;
}
我在四核计算机上运行了这两个程序,但得到了相同的结果。 为什么我不能通过并行运行来提高性能?
在并行循环中访问ary1、ary2、resultsP共享数组是否会导致它们串行运行?

这是因为编译代码时没有包含“-fopenmp”标志。通过添加它解决了问题。

为了防止将来出现此类错误,我建议使用-Wall标志进行编译,该标志将显示一些以前隐藏的编译器警告,例如未知的杂注。即使使用AVX进行乘法,您是否也能获得性能?我的问题是,使用AVX的元素相乘是否有内存限制?