代码之家  ›  专栏  ›  技术社区  ›  Sam Hammamy

如何使用openBLAS改进矢量化操作?

  •  1
  • Sam Hammamy  · 技术社区  · 7 年前

    我正在自学如何编写高效、优化的深度学习代码;但我在这方面还是个新手。

    例如:我正在读 numpy 使用 vectorization 避免 python loops .

    他们也创造了这个词 broadcasting 根据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];
        }
    }
    

    就像一个内积,还是一个加法?

    0 回复  |  直到 7 年前