为什么用OpenMp并行后程序反而比串行慢了好多

killer890207 2012-10-22 07:07:00
我的程序源码:
#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,希望能得到指导。
谢谢



...全文
325 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

567

社区成员

发帖
与我相关
我的任务
社区描述
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
社区管理员
  • 英特尔技术社区
  • shere_lin
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧