我想在C中使用OpenMP初始化一個動態數組,但它似乎比串行方法慢。我正在使用的功能是OpenMP - 初始化一維數組
int* createArray(int size, int num) {
int i;
int* M = (int*)malloc(size*sizeof(int));
srand(time(NULL));
double start = omp_get_wtime();
#pragma omp parallel for num_threads(num)
for (i = 0; i < size; i++) {
M[i] = rand() % (MAX_NUMBER - MIN_NUMBER + 1) + MIN_NUMBER;
}
double end = omp_get_wtime();
printf("Create Array %f\n",end-start);
return M;
}
我得到一個包含隨機數的給定大小的數組,但我使用的線程越少功能越快。難道我做錯了什麼?
有很多Q和As在這裏解釋爲什麼不使用'rand'在OpenMP程序中。例如:https://stackoverflow.com/questions/10624755/openmp-program-is-slower-than-sequential-one/10625090#10625090 –
[OpenMP程序可能重複的速度比順序的慢](https:// stackoverflow.com/questions/10624755/openmp-program-is-slower-than-sequential-one) – Zulan