這裏是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萬)。 –