MATLAB中的并行矩阵乘法

时间:2011-11-30 06:12:13

标签: matlab parallel-processing matrix-multiplication

是否有一种相对容易实现或透明的方法来并行地在Matlab中相乘两个大矩阵?

理想情况下,我想用最多几行代码执行此并行乘法,可能类似于:

    C_1 = A*B        % normal
    C_2 = pmult(A,B) % parallel
    % C_1 and C_2 have the same entries

如果有办法轻松做到这个并行乘法,有人可以指点我的代码吗?如果没有,有没有人对他们认为在Matlab中实现并行矩阵乘法算法的最佳方法有任何想法?

先谢谢,很棒的Stackoverflow社区。

编辑 - 我认为我遇到的部分问题是稀疏矩阵的矩阵乘法不会自动并行化;它会自动并行化为密集矩阵。新问题:Matlab可以并行进行稀疏矩阵乘法吗? (CPU并行化,因为我没有启用CUDA的显卡)

2 个答案:

答案 0 :(得分:6)

Matlab可能已经通过其隐式多线程支持实现了这一点。见http://www.mathworks.com/support/solutions/en/data/1-4PG4AN/?solution=1-4PG4AN;运营商。 Matlab已经为您完成了平凡的可并行化操作;只需在多核机器上运行它。

答案 1 :(得分:3)

你是什么意思并行?这两种方法使用显式并行,并且都需要Parallel Computing Toolbox(第二种方法也需要capable GPU)。

选项1:MPI并行性

matlabpool open local
D = distributed.rand(2000); % distributed across workers of matlabpool
R = D * D; % mtimes overloaded to compute in parallel

选项2:GPU并行性

G = gpuArray(rand(2000)); % place data on the GPU
G2 = G * G; % operate on it in parallel