【问题标题】:Is GEMM or BLAS used in Tensorflow, Theano, PytorchTensorFlow、Theano、Pytorch 中使用的是 GEMM 还是 BLAS
【发布时间】:2019-01-19 16:49:23
【问题描述】:

我知道 Caffe 使用通用矩阵到矩阵乘法 (GEMM),它是基本线性代数子程序 (BLAS) 库的一部分,用于执行卷积运算。其中卷积转换为矩阵乘法运算。我参考了下面的文章。 https://petewarden.com/2015/04/20/why-gemm-is-at-the-heart-of-deep-learning/

我想了解 Theano、Tensorflow、Pytorch 等其他深度学习框架如何执行卷积运算。他们是否在后端使用类似的库。可能有一些关于这个主题的文章。如果有人可以向我指出这些或可以用答案来解释。

PS:我在 datascience.stackexchange.com 上发布了同样的问题。由于我在那里没有得到回复,所以我也将其发布在这里。如果有更好的论坛可以发布这个问题,请告诉我。

【问题讨论】:

    标签: tensorflow deep-learning caffe pytorch blas


    【解决方案1】:

    tensorflow 有多种操作选择。

    对于 GPU,使用 cuda 支持。大部分操作都是用cuDNN实现的,有的用cuBLAS,有的用cuda。

    你也可以用openCL代替cuda,但是你应该自己编译tensorflow。

    对于 CPU,使用 intel mkl 作为 blas 库。

    我对pytorch和theano不熟悉,但是下面列出了一些常用的blas库:

    • cuDNN、cuBLAS 和 cuda:支持 nvidia GPU,最受欢迎的库
    • openCL:常见的 GPU 支持,我完全不知道。
    • MKL:英特尔提供的 CPU blas 库
    • openBLAS:CPU 库

    【讨论】:

    • 为 PyTorch 添加:The documentation 提到了一些特定的 BLAS/LAPACK 操作,例如addbmm,此外,值得一提的是,一些操作会退回到 NumPy,它可以具有可配置的 BLAS 后端(例如,Anaconda Python 附带的版本本身就启用了 Intel MKL)
    • @dennlinger:除非张凯宏更新他的答案以整合您的评论,否则我会说它值得自己回答...... :)
    • 我对 PyTorch 不太熟悉,能否请您添加一个新答案来解释它? @dennlinger
    • 我正在浏览这篇关于使用 cuDNN 实现卷积的博客 (goldsborough.me/cuda/ml/cudnn/c++/2017/10/01/…)。似乎所有高级深度学习库都使用 cuDNN 卷积函数,它具有三种实现卷积的方法:CUDNN_CONVOLUTION_FWD_ALGO_GEMM(将卷积建模为显式矩阵乘法)、CUDNN_CONVOLUTION_FWD_ALGO_FFT(使用快速傅里叶变换进行卷积)和 CUDNN_CONVOLUTION_FWD_ALGO_WINOGRAD(采用Winograd 算法来执行卷积)。
    • stackoverflow.com/questions/41518379/… 说 tensorflow 使用 'Eigen' 而不是 blas。 (Blas 可以通过 cublas 加速。一些框架可以使用 cudnn,使用 cuda 的更高级别的加速)
    猜你喜欢
    • 2020-03-18
    • 2018-01-12
    • 1970-01-01
    • 2021-06-15
    • 1970-01-01
    • 2021-07-28
    • 1970-01-01
    • 2018-02-12
    • 2021-02-27
    相关资源
    最近更新 更多