3
我嘗試計算並行簡單代碼的加速。這是一個簡單的循環。首先,我用C++中的open-mp來並行化它。然後我想查找每個線程的執行時間,我使用最大線程時間作爲並行執行時間。我用不同的線程數重複它,但時間更糟!你可以幫幫我嗎?爲什麼在我的openmp代碼中增加執行時間?
#include "stdafx.h"
#include "omp.h"
#include "conio.h"
double diftime[64];
int a,i,threadnum;
int main()
{
threadnum=2;
omp_set_nested(1);
omp_set_dynamic(0);
#pragma omp parallel num_threads(threadnum)
{
double start_time,end_time;
int id = omp_get_thread_num();
start_time=omp_get_wtime();
#pragma omp for nowait schedule(static)
for (i=0;i<2000000;i++){a++;}
end_time=omp_get_wtime();
diftime[id]=diftime[id]+(end_time-start_time);
printf("thread[%d] = %.32g\n",id,end_time-start_time);
}
getch();
return 0;
}