- 主题:numpy超大矩阵相乘的问题
numpy矩阵相乘,如果到3000*3000级别就是分钟以上了,我有个3万的矩阵要平方,直接就挂了。
现在在写一个并行计算矩阵相乘的小函数,回头看看会快多少。
--
FROM 219.237.112.*
不是,我的内存是64G,系统总共只占了不到10G的内存
【 在 fanjiyouyi 的大作中提到: 】
: 是内存不足吗
--
修改:Blue FROM 219.237.112.*
FROM 219.237.112.*
实验了,这个主要取决于CPU或者GPU的并行计算能力,比如CPU如果是8核16线程的,就提高5-8倍的样子,总体看还可以。
numpy的矩阵乘法看上去计算时间与规模之间的关系是线性的。
--
修改:Blue FROM 114.253.3.*
FROM 114.253.3.*
昨天实验了GPU,用cupy来计算,一开始可高兴了,10000*10000矩阵的平方计算结果太快了,不到1秒,于是升级到20000*20000,挂了,out of memory,显存只有6G,两个这样的矩阵直接占用了5G的内存。唉,看来只有用numpy结合cupy,将矩阵掰碎到GPU中计算。
要是再大一个数量级的计算,可能只有去找spark了
--
FROM 114.253.3.*
你确定?1万*1万方阵的平方?
import numpy as np
m = 10000
adjacent_matrix = np.random.random((m,m))
m_squared = adjacent_matrix.dot(adjacent_matrix)
【 在 cafitren 的大作中提到: 】
: 你得换电脑了,我笔记本8G内存1万x1万都是几秒钟。
:
--
FROM 219.237.112.*
感谢
之前因为还要干Django等别的事情,没有使用anaconda,也就没有blas。才知道anaconda的numpy默认安装了blas的。
配置了mkl或者blas以后就是这个速度了
【 在 bsxfun 的大作中提到: 】
: 不过你电脑确实太差了,或者是你没有装blas
: 我在我的小米手机(Mix4)上运行 3000 * 3000矩阵的平方也就4分钟
: 在我的笔记本电脑上,运行只需要0.15秒
: ...................
--
修改:Blue FROM 219.237.112.*
FROM 219.237.112.*