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 库
我知道 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 库