主题:[讨论]openmp问题
最近在学openmp,写了一个简单的代码,如下
void test()
{
int a = 0;
clock_t t1 = clock();
#pragma omp parallel for
for (int i = 0; i < 100000000; i++)
{
a = i+1;
}
clock_t t2 = clock();
printf("Time = %d\n", t2-t1);
}
我的电脑是双核的,运行后结果发现,确实程序在并行执行时(配置openmp属性)比串行执行(不配置openmp属性)快两倍。
但是问题来了,当我把循环次数变小时,并行执行速度却远远不如串行速度。这是为什么?
是不是并行执行时需要一些啥开销之类的,当循环次数少时,开销比重很大?有高手指导一下吗?