为了账号安全,请及时绑定邮箱和手机立即绑定

python / numpy中的多线程blas

python / numpy中的多线程blas

千巷猫影 2019-12-21 11:18:03
我正在尝试在Python中实现大量的矩阵矩阵乘法。最初,我假设NumPy将自动使用我的线程BLAS库,因为我是根据这些库构建它的。但是,当我查看顶部或其他内容时,似乎代码根本不使用线程。有什么想法是错误的,或者我可以做些什么来轻松使用BLAS性能?
查看完整描述

3 回答

?
慕仙森

TA贡献1827条经验 获得超7个赞

并非所有的NumPy都使用BLAS,只有某些功能-特别dot()vdot(),和模块中的innerproduct()一些功能numpy.linalg。还要注意,许多NumPy操作受大型阵列的内存带宽限制,因此优化的实现不太可能带来任何改善。如果受到内存带宽的限制,多线程能否提供更好的性能取决于硬件。


查看完整回答
反对 回复 2019-12-21
?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

可能是因为Matrix x Matrix乘法受内存限制,所以在同一内存层次结构上添加额外的内核不会给您太多。当然,如果切换到Fortran实施时看到大幅提高,那我可能是不正确的。


我的理解是,对于此类问题,适当的缓存比计算能力更为重要。大概BLAS为您做到了。


对于一个简单的测试,您可以尝试安装Enthought的 python发行版进行比较。它们链接到英特尔的数学内核库,我相信它会利用多个内核(如果有)。


查看完整回答
反对 回复 2019-12-21
  • 3 回答
  • 0 关注
  • 804 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信