pragma,#pragma omp parallel for schedule(dynamic) private(i)

#include
#include
#include
int main()
{
int i;
#pragma omp parallel for schedule(dynamic) private(i)
for(i=0;i if( ((i&(i-1)) + (i&(-i))) == i){
continue;
}
printf("Not equal at i=%d\n",i);
}
return 0;
}
gcc lab.c –o lab –fopenmp -O3 //可以正常编译
gcc lab.c –o lab.s –O3
在Centos四核的机器上测试:
time ./lab
real 1m7.160s
user 4m27.885s
sys 0m0.004s
time ./lab.s
real 0m2.277s
user 0m2.268s
sys 0m0.000s
为什么多线程反而运行时间更长呢?不解。
#include
#include
#include
int main()
{
int i;
#pragma omp parallel for schedule(dynamic) private(i)
for(i=0;i if( ((i&(i-1)) + (i&(-i))) == i){
continue;
}
printf("Not equal at i=%d\n",i);
}
return 0;
}
gcc lab.c –o lab –fopenmp -O3 //编译出错
#include
#include
#include
int main()
{
int i;
#pragma omp parallel for schedule(dynamic) private(i)
for(i=1;i!=0;++i){
if( ((i&(i-1)) + (i&(-i))) == i){
continue;
}
printf("Not equal at i=%d\n",i);
}
return 0;
}
运行时间很长很长,是否是for(i=0;i!=0;++i)这种写法的问题呢?
是不是for(i=a;i不解
Tags:  pragma

延伸阅读

最新评论

发表评论