GEMM 或 BLAS 用于 Tensorflow、Theano、Pytorch

Is GEMM or BLAS used in Tensorflow, Theano, Pytorch

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

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

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

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 库