parallel coding: how to solve linear system?
Mostra commenti meno recenti
Hi everyone! I need to solve a (very large) linear system in my code, so I'm trying to use a parallel session.
Basically my original local code does the following:
function U = myfun(U0,J0,nx,S0,Mbcs,Bbcs)
A = spdiags(funA(J0),0,nx,nx);
B = spdiags(funB(J0),0,nx,nx);
C = spdiags(funC(J0),0,nx,nx);
D = spdiags(funD(J0),0,nx,nx);
K = [A B; C D];
V = S0;
K([1,nx,nx+1,2*nx],:)=0;
V([1,nx,nx+1,2*nx])=0;
K = K + Mbcs;
V = V + Bbcs;
U = K\V;
The use of sparse array speeds up a lot the solver time. Now I tried to launch a parallel session:
parpool('local2');
And the code was modified as follows for distributing the matrices to the workers:
K = distributed(K);
V = distributed(V);
But at the end I get this error:
Error using \ (line 48)
Sparse input arguments are not supported.
Error in distributed/wrapRemoteCall>iInnerWrapper (line 83)
[varargout{:}] = fcnH( varargin{:} );
Error in spmd_feval_fcn>get_f/body (line 78)
[outCell{:}] = fcnH( inCell{:} );
Where is the error? I don't know much about parallel programming, but from the examples I found, it seems to me that I only need do distribute the matrix to the workers.
Thanks in advance for all your suggestions.
Pietro
Risposta accettata
Più risposte (0)
Categorie
Scopri di più su Linear Algebra in Centro assistenza e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!