为什么用OpenMp并行后程序反而比串行慢了好多
我的程序源码:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <omp.h>
#define length 1000
int main(void)
{
srand((unsigned)time(NULL));
float *A,*B,*C;
int i;
float min,max,avg,sum;
max = avg = sum = 0.0;
min = 10.0;
A = (float*)malloc(sizeof(float)*length);
B = (float*)malloc(sizeof(float)*length);
C = (float*)malloc(sizeof(float)*length);
for(i=0; i<length; i++)
{
A[i] = rand()%10;
B[i] = rand()%10;
}
#pragma omp parallel for
for(i=0; i<length; i++)
{
C[i] = (A[i]+B[i])/2;
}
free(A);
free(B);
free(C);
return 0;
}
我仅仅把C数组赋值那一部分并行了,为什么速度反而比串行还要慢了许多呢?我看了是有4个thread在跑。
我刚刚开始学openMp,希望能得到指导。
谢谢