在Tensorflow,Theano,Pytorch中使用的是GEMM还是BLAS

GAU*_*AVA 4 blas deep-learning caffe tensorflow pytorch

我知道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上发布了相同的问题。由于我在那儿没有得到答复,因此我也将其张贴在这里。如果有更好的论坛发布此问题,请告诉我。

Kai*_*ang 5

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 添加:[文档](https://pytorch.org/docs/stable/torch.html) 提到了一些特定的 BLAS/LAPACK 操作,例如 `addbmm`,此外,提及一些操作也很有帮助回退 t NumPy,它可以有一个可配置的 BLAS 后端(例如,Anaconda Python 附带的版本本身就启用了 Intel MKL) (2认同)
  • /sf/ask/2906286561/说tensorflow使用“Eigen”而不是blas。(Blas可以通过cublas加速。有些框架可以使用cudnn,使用cuda进行更高级别的加速) (2认同)