MatLab并行工具箱:用核心划分工作
在我的笔记本电脑上,我有MatLab和并行工具箱,我想执行以下任务(我有12个物理核):使用parfor循环计算6个不同(大)矩阵的最大特征值 我有两种可能:MatLab并行工具箱:用核心划分工作,matlab,matrix,parallel-processing,parfor,Matlab,Matrix,Parallel Processing,Parfor,在我的笔记本电脑上,我有MatLab和并行工具箱,我想执行以下任务(我有12个物理核):使用parfor循环计算6个不同(大)矩阵的最大特征值 我有两种可能: 2芯用于第一个矩阵(A1),2芯用于第二个矩阵(A2),…,2芯用于第六个矩阵(A6) 6芯用于第一个基体(A1),6芯用于第二个基体(A2)。然后我对循环进行另一次迭代,第三次(A3)使用6个核,第四次(A4)使用6个核,通过另一次迭代,我还可以计算最后两个矩阵的光谱半径 让我们关注第一种方法:使用并行工具箱,我如何将“前两个核在
- 2芯用于第一个矩阵(A1),2芯用于第二个矩阵(A2),…,2芯用于第六个矩阵(A6)
- 6芯用于第一个基体(A1),6芯用于第二个基体(A2)。然后我对循环进行另一次迭代,第三次(A3)使用6个核,第四次(A4)使用6个核,通过另一次迭代,我还可以计算最后两个矩阵的光谱半径
%initialize six large random matrices A(1),...,A(6)
x = zeros(6,1);
parfor i=1:6
x(i) = max(abs(eig(A(i))));
end
我希望现在,对于
I=1
,我的前两个核心工作是计算x(1)
,等等。这是正确的方法吗?我认为你的A
矩阵的大小决定了哪种方法更好;无论哪种情况,您都需要将矩阵分发给工人。问题是这六个操作(包括eig()
操作)是否同时放入内存。此外,如果矩阵没有那么大,在操作完成之前,六个核可能无法达到全部操作功率,因此每个矩阵使用两个核的速度更快。@Adriaan A是一个2000x2000矩阵。你说得对!事实上,我想做模拟来发现这件事!:)确切地说,我的问题是,我在工具箱里写的东西是否符合我的想法。你认为是吗?关于这个问题的答案可能会提供一些见解。@Adrian从我所看到的,我应该使用spmd
,因为我可以说“对于每个矩阵,使用2个核”,对吗?我几乎没有使用spmd
的经验,对不起。通常,我只是将所有内容放入parfor
循环中。