Ich versuche, ein dynamisches Array mit OpenMP in C zu initialisieren, aber es scheint langsamer zu sein als die serielle Methode. Die Funktion ich verwende istOpenMP - Initialisierung 1D Array
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;
}
ich ein Array von der angegebenen Größe enthält, Zufallszahlen, aber die weniger Threads ich je schneller die Funktion ist. Mache ich etwas falsch?
Es gibt viele Qs und As hier auf SO erklärt, warum nicht 'rand' in OpenMP-Programmen zu verwenden. Zum Beispiel: https: //stackoverflow.com/questions/10624755/openmp-program-is-slower-than-sequential-one/10625090#10625090 –
Mögliches Duplikat von [OpenMP-Programm ist langsamer als sequenzielles] (https: // stackoverflow.com/questions/10624755/openmp-program-is-slower-than-sequential-one) – Zulan