int和float类型的Numpy数组dot运算效率比较

在使用Numpy的dot函数时遇到了一个非常有意思的问题: int类型的Numpy数组进行dot运算的效率要远远低于float类型的Numpy数组。

同样的shape,但由于类型的不同却导致几十倍的性能差距。

 

在stackoverflow的一个帖子里找到了原因:

“When Numpy is built with an accelerated BLAS like ATLAS, these functions are replaced to make use of the faster implementations. The faster implementations only affect float32, float64, complex64, and complex128 arrays. Furthermore, the BLAS API only includes matrix-matrix, matrix-vector, and vector-vector products. Products of arrays with larger dimensionalities use the built in functions and are not accelerated.“

原来为了实现更快的计算,Numpy采用了一个类似ATLAS的BLAS(Basic Linear Algebra Subprograms, 基础线性代数子程序)。但这些实现只能影响类型为float32, float64, complex64和complex128的数组。另外,BLAS API只包含矩阵和矩阵,矩阵和向量以及向量和向量的乘法。因此,更高维的数组乘法并不能被加速。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值