почему этот алгоритм умножения матриц быстрее, чем другой? - PullRequest
0 голосов
/ 17 марта 2019
int mmult_omp(double *c,
           double *a, int aRows, int aCols,
           double *b, int bRows, int bCols, int numThreads)
{
  for (i = 0; i < aRows; i++) {
for (j = 0; j < bCols; j++) {
  c[i*bCols + j] = 0;
}
for (k = 0; k < aCols; k++) {
  for (j = 0; j < bCols; j++) {
                c[i*bCols + j] += a[i*aCols + k] * b[k*bCols + j];
  }
}

}

for (i = 0; i < aRows; i++) {
    for (j = 0; j < bCols; j++) {
    c[i*bCols + j] = 0;
    for (k = 0; k < aCols; k++) {
    c[i*bCols + j] += a[i*aCols + k] *  b[k*bCols + j];
  }
}

}

Почему первый алгоритм быстрее второго?Я использовал библиотеку времени С, и первый алгоритм объективно быстрее второго.Почему это так?

1 Ответ

0 голосов
/ 17 марта 2019

Этот код очень сложен для понимания. Я должен был скопировать это и переформатировать это, чтобы видеть, что петли были чем. Я не совсем уверен, почему так быстрее, но вот отличный ресурс, чтобы понять почему.

Вот ссылки для проверки вывода сборки:

ссылка для # 1
ссылка для # 2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...