#include
#include
#include
int main()
{
int i;
#pragma omp parallel for schedule(dynamic) private(i)
for(i=0;i< INT32_MAX-1;++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< INT32_MAX;++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 //编译出错