高人帮看一下,openMP并行了以后怎么反而慢了
DWORD startTime,endTime;
double x,y,i,j;
long count=0,count1=0,count2=0;
startTime=timeGetTime();
#pragma omp parallel sections
{
#pragma omp section
{
for(x=0;x<=0.5;x+=0.0001)
for(y=0;y<=1;y+=0.0001)
{
if(x*x+y*y<=1) count1++;
}
}
#pragma omp section
{
for(i=0.5001;i<=1;i+=0.0001)
for(j=0;j<=1;j+=0.0001)
{
if(i*i+j*j<=1) count2++;
}
}
}
count=count1+count2;
endTime=timeGetTime();
cout << endl << "Calculations took " << endTime-startTime << "ms.\n";
在vs2008下,打开openMP开关比关闭openMP开关慢了2倍多。就是并行比串行慢了2倍多,为什么呢?并行的2段代码毫无数据相关性啊?