python的numpy向量化语句为什么会比for快?

论坛 期权论坛 期权     
dominee dominee   2018-9-24 01:08   24569   4

霍华德:对于 Python 的科学计算有哪些提高运算速度的技巧?

numpy在矩阵乘法运算的时候也一定是按照定义一个个矩阵元素乘起来相加的,为什么会比几个for循环快呢?

分享到 :
0 人收藏

4 个回复

倒序浏览
2#
fleuria  4级常客 | 2018-9-24 01:08:42 发帖IP地址来自

向量化有天然并行的语义,可以利用 CPU 的 SIMD 加速指令,比 C 的 for 循环快也正常。除非做一些类似循环展开的优化手段,tirival 的 for 循环也挺伤流水线的,反观科学计算的库可以封装各种妖艳的小优化。

3#
霍华德  5级知名 | 2018-9-24 01:08:43 发帖IP地址来自

谢邀,前几天就看到邀请了,一直没空写。今天先来挖个坑。

大家可以去参观一下numpy.dot 的内核函数:

* This module provides a BLAS optimized matrix multiply, * inner product and dot for numpy arrays:cblas内核函数

你会发现np.dot就是分类讨论式的使用blas函数,先判断好你输入的数据类型,是标量,一维向量,还是矩阵,然后再调用相应的blas函数。

所以问题python的numpy向量化语句为什么会比for快?就可以转化为为什么blas库比for快?

为什么呢?先挖坑,慢慢来答

4#
匿名用户   | 2018-9-24 01:08:44 发帖IP地址来自
提示: 作者被禁止或删除 内容自动屏蔽
5#
匿名用户   | 2018-9-24 01:08:46 发帖IP地址来自
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:
帖子:
精华:
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP