Python矩阵提供numpy.dot()

米哈伊尔

在认识Python(numba lib)中的CUDA期间,我实现了矩阵提供方法:

  • 只是与 numpy.dot()
  • Strassen算法与 numpy.dot()
  • GPU上的块方法
  • GPU上的Strassen算法

因此,我对2种类型的数据进行了测试:

  • numpy.random.randint(0, 5, (N, N)) # with int32 elements
  • numpy.random.random((N, N)) # with float64 elements

对于int32,我获得了预期的结果,其中我的GPU算法在性能上优于numpy的CPU: 在此处输入图片说明

但是,在float64类型上,numpy.dot()性能优于我的所有GPU方法:在此处输入图片说明

所以,问题是:为什么数组numpy.dot()这么快float64,而numpy是否使用GPU?

ali_m

典型的numpy安装将与BLAS库动态链接,该提供用于矩阵矩阵和矩阵向量乘法的例程。例如,当您np.dot()在一对float64数组上使用时,numpy将在后台调用BLASdgemm例程尽管这些库函数在CPU而非GPU上运行,但它们通常是多线程的,并且对其性能进行了很好的调整。良好的BLAS实现,例如MKLOpenBLAS,即使在GPU *上,在性能方面也可能难以匹敌

但是,BLAS仅支持浮点类型。如果调用np.dot()整数数组,则numpy将使用非常简单的内部C ++实现来回退,该实现是单线程的,并且比两个浮点数组上的BLAS点要慢得多。

在不了解您如何进行这些基准测试的更多信息的情况下,我敢打赌,简单地调用numpy.dot也会轻松击败float3,complex64和complex128数组的其他3种方法,这是BLAS支持的其他3种类型。


*击败标准BLAS的一种可能方法是使用cuBLAS,这是将在NVIDIA GPU上运行的BLAS实现。scikit-cuda库似乎为其提供了Python绑定,尽管我自己从未使用过。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

numpy.dot的逆

来自分类Dev

如何获得比numpy.dot更快的代码进行矩阵乘法?

来自分类Dev

使用numpy.dot乘以两个巨大的矩阵

来自分类Dev

Numpy等价于dot(A,B,3)

来自分类Dev

numpy.dot的意外结果

来自分类Dev

Python:用于多维数组的numpy.dot / numpy.tensordot

来自分类常见问题

Python“从[dot]包导入...”语法

来自分类Dev

How to create a DOT file in Python?

来自分类Dev

从python打开.dot格式的图

来自分类Dev

numpy.dot(a,b)在具有相似维数的矩阵相乘时给出错误结果

来自分类Dev

为什么numpy.dot与矩阵乘法的这些GPU实现一样快?

来自分类Dev

Numpy.dot()尺寸未对齐

来自分类Dev

加速列表理解内的numpy.dot

来自分类Dev

多维数组上的Numpy np.dot()

来自分类Dev

在循环中简化 numpy.dot

来自分类Dev

为什么jax.numpy.dot()在CPU上的运行速度比numpy.dot()更慢?

来自分类Dev

如何在Python中创建DOT文件?

来自分类Dev

numpy.dot-> MemoryError,my_dot->非常慢,但是可以。为什么?

来自分类Dev

np.dot 在矩阵相乘中的结果问题

来自分类Dev

我如何找出A * B是Numpy中的Hadamard或Dot产品?

来自分类Dev

为什么numpy.dot()抛出ValueError:形状未对齐?

来自分类Dev

numpy.dot 的结果不能使用 * 操作数

来自分类Dev

带有嵌套数组的 Numpy Dot 产品

来自分类Dev

在Perceptron学习模型的Python实现中将数组传递给numpy.dot()

来自分类Dev

从Linux中包含。(dot)的目录运行python文件

来自分类Dev

如何在python dot env文件中定义列表?

来自分类Dev

python3 AttributeError: 'list' 对象没有属性 'dot'

来自分类Dev

如何从 github python 安装“sparse_dot_topn”

来自分类Dev

theano-按规则操作两个矩阵,如T.dot

Related 相关文章

热门标签

归档