水木社区手机版
首页
|版面-数学工具(MathTools)|
新版wap站已上线
返回
下页
|
尾页
|
1/2
|
转到
主题:numpy超大矩阵相乘的问题
楼主
|
Blue
|
2022-10-02 22:02:53
|
只看此ID
numpy矩阵相乘,如果到3000*3000级别就是分钟以上了,我有个3万的矩阵要平方,直接就挂了。
现在在写一个并行计算矩阵相乘的小函数,回头看看会快多少。
--
FROM 219.237.112.*
1楼
|
fanjiyouyi
|
2022-10-02 23:01:35
|
只看此ID
是内存不足吗
--
FROM 60.1.7.*
2楼
|
Blue
|
2022-10-02 23:05:02
|
只看此ID
不是,我的内存是64G,系统总共只占了不到10G的内存
【 在 fanjiyouyi 的大作中提到: 】
: 是内存不足吗
--
修改:Blue FROM 219.237.112.*
FROM 219.237.112.*
3楼
|
Blue
|
2022-10-03 10:58:39
|
只看此ID
实验了,这个主要取决于CPU或者GPU的并行计算能力,比如CPU如果是8核16线程的,就提高5-8倍的样子,总体看还可以。
numpy的矩阵乘法看上去计算时间与规模之间的关系是线性的。
--
修改:Blue FROM 114.253.3.*
FROM 114.253.3.*
4楼
|
bsxfun
|
2022-10-13 09:50:16
|
只看此ID
和numpy没啥关系,你用matlab应该也一样
它们都是调用底层的blas/mkl
如果你用的是intel cpu,注意一下是不是安装了mkl(intel优化版的blas);
如果你用的是最新的amd cpu,注意的是某些版本的mkl给amd挖了个坑,默认设置速度会显著下降
详见:
https://sites.google.com/a/uci.edu/mingru-yang/programming/mkl-has-bad-performance-on-an-amd-cpu
【 在 Blue 的大作中提到: 】
: numpy矩阵相乘,如果到3000*3000级别就是分钟以上了,我有个3万的矩阵要平方,直接就挂了。
: 现在在写一个并行计算矩阵相乘的小函数,回头看看会快多少。
--
FROM 180.164.88.*
5楼
|
AutumnNight
|
2022-10-13 11:24:59
|
只看此ID
numpy只是个壳,底层都是调用openblas或者intel mkl,这些库都是多线程的,可以提高线程数配置试试
【 在 Blue 的大作中提到: 】
: numpy矩阵相乘,如果到3000*3000级别就是分钟以上了,我有个3万的矩阵要平方,直接就挂了。
: 现在在写一个并行计算矩阵相乘的小函数,回头看看会快多少。
--
FROM 106.120.201.*
6楼
|
RunningOn
|
2022-10-13 12:23:13
|
只看此ID
你这不太对劲。
3000*3000才多大数据量,就算是float64类型也不过 72MB,乘一下不是瞬秒么。
数据有1GB,相乘耗时才会到秒级。
所以你是不是把数据读取、预处理的时间给算进去了。
3万的矩阵要平方,如果是3000*3000的,你写个循环,单线程,我估计不到一小时就能算完。
你看看是不是数据读取消耗了时间,想想怎么优化一下。
【 在 Blue 的大作中提到: 】
: numpy矩阵相乘,如果到3000*3000级别就是分钟以上了,我有个3万的矩阵要平方,直接就挂了。
: 现在在写一个并行计算矩阵相乘的小函数,回头看看会快多少。
--
FROM 58.33.81.*
7楼
|
fyzjsmth
|
2022-10-13 20:29:37
|
只看此ID
自己写的基本上不会比eigen/mkl快,里面的道道不少
【 在 Blue 的大作中提到: 】
: numpy矩阵相乘,如果到3000*3000级别就是分钟以上了,我有个3万的矩阵要平方,直接就挂了。
:
: 现在在写一个并行计算矩阵相乘的小函数,回头看看会快多少。
: --
:
发自「今日水木 on iPhone 13 Pro」
--
FROM 124.160.72.*
8楼
|
Blue
|
2022-10-15 15:39:35
|
只看此ID
昨天实验了GPU,用cupy来计算,一开始可高兴了,10000*10000矩阵的平方计算结果太快了,不到1秒,于是升级到20000*20000,挂了,out of memory,显存只有6G,两个这样的矩阵直接占用了5G的内存。唉,看来只有用numpy结合cupy,将矩阵掰碎到GPU中计算。
要是再大一个数量级的计算,可能只有去找spark了
--
FROM 114.253.3.*
9楼
|
cafitren
|
2022-10-15 20:32:44
|
只看此ID
你得换电脑了,我笔记本8G内存1万x1万都是几秒钟。
【 在 Blue 的大作中提到: 】
: numpy矩阵相乘,如果到3000*3000级别就是分钟以上了,我有个3万的矩阵要平方,直接就挂了。
: 现在在写一个并行计算矩阵相乘的小函数,回头看看会快多少。
--
FROM 166.113.80.*
下页
|
尾页
|
1/2
|
转到
选择讨论区
首页
|
分区
|
热推
BYR-Team
©
2010.
KBS Dev-Team
©
2011
登录完整版