小编Tho*_*sen的帖子

Matlab中的多线程稀疏矩阵乘法

我正在执行NxN稀疏(~1-2%)矩阵的几个矩阵乘法,我们称之为B,使用NxM密集矩阵,我们称之为A(其中M <N).N很大,M也是如此; 大约几千.我正在运行Matlab 2013a.

现在,通常,矩阵乘法和大多数其他矩阵运算在Matlab中隐式并行化,即它们自动使用多个线程.如果任何一个矩阵都是稀疏的,那么看起来并非如此(参见例如StackOverflow讨论 - 没有对预期问题的答案 - 以及这个基本上没有答案的MathWorks线程).这对我来说是一个相当不愉快的惊喜.

我们可以通过以下代码验证多线程对稀疏矩阵操作没有影响:

clc; clear all; 

N = 5000;         % set matrix sizes
M = 3000;       
A = randn(N,M);   % create dense random matrices
B = sprand(N,N,0.015); % create sparse random matrix
Bf = full(B);     %create a dense form of the otherwise sparse matrix B

for i=1:3 % test for 1, 2, and 4 threads
  m(i) = 2^(i-1);
  maxNumCompThreads(m(i)); % set the thread count available to Matlab
  tic                      % starts …
Run Code Online (Sandbox Code Playgroud)

matlab multithreading sparse-matrix matrix-multiplication

9
推荐指数
2
解决办法
1952
查看次数