Как использовать openBLAS для улучшения векторизованных операций? - PullRequest
0 голосов
/ 27 ноября 2018

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

Например: я читаю, что numpy использует векторизацию , чтобы избежать петель питона .

Они также в значительной степени придумали термин широковещательный по этой ссылке, который используется TensorFlow, PyTorch и др.

Я немного покопался и обнаружил, что ldd на моемОкно Debian показывает multiarray.so ссылки libopenblasp-r0-39a31c03.2.18.so.

Итак, давайте рассмотрим вариант использования матричного вычитания.Я хотел бы понять, как использовать openBLAS для улучшения этой очень наивной реализации:

void matrix_sub(Matrix *a, Matrix *b, Matrix *res)
{
  assert(a->cols == b->cols);
  assert(a->rows == b->rows);

  zero_out_data(res, a->rows, a->cols);

  for (int i = 0; i < (a->rows*a->cols); i++)
    {
      res->data[i] = a->data[i] - b->data[i];
    }
}

Как мудрый внутренний продукт или дополнение?

...