问一个icc编译openMP时出现的问题
为了验证openMP的效果,我对一个二重循环应用openMP
#include <stdio.h>
#include <stdlib.h>
#include <omp.h>
#include <time.h>
#include <math.h>
#define T 2
#define L 432400
#define N 100
#define P 100
float p,q;
int main()
{
int j,i,k,s1[L],s2[L];
float acc;
clock_t t1=clock();
for(k=0;k<N;k++){
#pragma omp parallel for private(i) schedule(static,1) num_threads(T)
for(i=0;i<L;i++)
{
s1[i] = sqrt(i)*(i-5)+ sin(i)*20+cos(i)*(i+pow(i,0.7))+sqrt(pow(i,0.9));
}
}
clock_t t2=clock();
p =(double)((t2-t1)/(double)CLOCKS_PER_SEC);
printf(" parallelized time is %fs\n",(double)(t2-t1)/(double)CLOCKS_PER_SEC);
clock_t t3=clock();
for(k=0;k<P;k++){
for(i=0;i<L;i++)
{
s2[i] = sqrt(i)*(i-5)+ sin(i)*20+cos(i)*(i+pow(i,0.7))+sqrt(pow(i,0.9));
}
}
clock_t t4=clock();
q = (double)((t4-t3)/(double)CLOCKS_PER_SEC);
printf("no parallelized time is %fs\n",(double)((t4-t3)/(double)CLOCKS_PER_SEC));
acc=q/p;
printf("accelerate ratio is %f\n",(N*acc)/P);
return (0);
}
我是用icc -openmp -c a.c -o a.o
icc -openmp a.o -o a 编译的
运行结果:
parallelized time is 4.030000s
no parallelized time is 0.000000s
accelerate ratio is 0.000000
怎么会出现这样的结果?是我编译选项没选对吗?