并行矩阵乘法
39视图(30天)
显示旧的评论
接受的答案
詹姆斯Tursa
2015年5月20日
在MATLAB矩阵相乘的最好办法是使用*运营商,像平时一样。这将调用bla例程,高度优化的并行算法在背景中。如果你有稀疏矩阵,*操作符将调用专门的稀疏矩阵相乘的例程。你将会非常很难自己做得更好。
4评论
乔尔·林奇
2023年5月14日在15:07
编辑:乔尔·林奇
2023年5月14日15:08
“如果你有稀疏矩阵,*操作符将调用专门的稀疏矩阵相乘的例程。你将会非常很难自己做得更好。”
不幸的是,这句话是非常误导,如果不是错误的。至少R2023,稀疏矩阵乘法在CPU的仅限于单个线程。詹姆斯的测试没有表现出这一点,但是它很容易看到的:
N = 20000;
密度= 0.2;
一个= sprand (N, N,密度);
b =兰德(N, 1);
Nmax_threads = maxNumCompThreads (“自动”)
时间(@ ()A * b)
maxNumCompThreads (1);
时间(@ ()A * b)
这非常奇怪,因为MKL支持多线程稀疏矩阵数学相当长一段时间。金宝app直到这个更新,最好的最适合大型稀疏矩阵问题是使用gpuArray,甚至商业卡能做的更好。