Я изучаю основы параллельного выполнения цикла for, используя OpenMP.
К сожалению, моя паралельная программа работает в 10 раз медленнее, чем серийная версия. Что я делаю не так? Я пропускаю некоторые барьеры?
double **basicMultiply(double **A, double **B, int size) {
int i, j, k;
double **res = createMatrix(size);
omp_set_num_threads(4);
#pragma omp parallel for private(k)
for (i = 0; i < size; i++) {
for (j = 0; j < size; j++) {
for (k = 0; k < size; k++) {
res[i][j] += A[i][k] * B[k][j];
}
}
}
return res;
}
Большое спасибо!