这里是OpenMP的我的测试代码为什么一个简单的没有OpenMP的环比它使用OpenMP更快
#include <stdio.h>
#include <stdlib.h>
#include <omp.h>
#include <time.h>
int main(int argc, char const *argv[]){
double x[10000];
clock_t start, end;
double cpu_time_used;
start = clock();
#pragma omp parallel
#pragma omp for
for (int i = 0; i < 10000; ++i){
x[i] = 1;
}
end = clock();
cpu_time_used = ((double) (end - start))/CLOCKS_PER_SEC;
printf("%lf\n", cpu_time_used);
return 0;
}
我有以下两个命令编译代码:
gcc test.c -o main
的输出朗姆酒main
是0.000039
然后我使用OpenMP
编译,输出为0.008020
谁能帮助我了解为什么会发生。事先感谢。
我认为你需要围绕'#pragma omp for'循环的'#pragma omp parallel'声明的括号 –
你的意思是这样吗? '#pragma omp parallel {......}',我试过了,它是一样的,不起作用。 –
自从我使用openMP已经有一段时间了,但代码的最大代价是线程的开销管理。在更大的执行时间内,你会看到更大的收益(尝试像100万)。 –