parfeval evaluation is slow
8 ビュー (過去 30 日間)
古いコメントを表示
Poul-Erik Hansen
2025 年 4 月 11 日
コメント済み: Walter Roberson
2025 年 4 月 15 日
Hi
I am using parfeval to calculate the eigenvalues of a matrix M with typical dimension of 1500x1500x100. The parfeval evaluations is slow since I read the output just after the evaluation of each matrix M(:,:,k) k=1,..,100. I want to store all the eigenvalues and eigenvectores in the variabel f and read the output after finishing the parfeval evaluation.
Current code:
eigMtr=complex(zeros(2*L,2*NumOfSlabs*L));
W=eigMtr;
W_1=complex(zeros(L,2*NumOfSlabs*L));W_2=W_1;
for k=1:NumOfSlabs
f=parfeval(@eig,3,M(:,:,k));
[Wt,Dt] = fetchOutputs(f);
start=1+(k-1)*2*L;stop=2*k*L;
eigMtr(1:2*L,start:stop)=sqrt(Dt);
W1=Wt(1:L,:);
W2=Wt(L+1:2*L,:);
W_1(:,start:stop)=W1;
W_2(:,start:stop)=W2;
W(1:L,start:stop)=W2;
W(L+1:2*L,start:stop)=W1;
end
I want to do something like this
for k=1:NumOfSlabs
f=parfeval(@eig,3,M(:,:,k));
end
for k=1:NumOfSlabs
[idx,Wt,Dt] = fetchNext(f)
start=1+(k-1)*2*L;stop=2*k*L;
eigMtr(1:2*L,start:stop)=sqrt(Dt);
W1=Wt(1:L,:);
W2=Wt(L+1:2*L,:);
W_1(:,start:stop)=W1;
W_2(:,start:stop)=W2;
W(1:L,start:stop)=W2;
W(L+1:2*L,start:stop)=W1;
end
Thanks for your help
Poul-Erik
0 件のコメント
採用された回答
Walter Roberson
2025 年 4 月 11 日
Note the correction to the number of output arguements parameter in the parfeval() call
f = cell(NumOfSlabs, 1);
for k=1:NumOfSlabs
f{k} = parfeval(@eig,2,M(:,:,k));
end
wait(f{1});
for k=1:NumOfSlabs
[Wt,Dt] = fetchOutputs(f{k});
start=1+(k-1)*2*L; stop=2*k*L;
eigMtr(1:2*L,start:stop)=sqrt(Dt);
W1=Wt(1:L,:);
W2=Wt(L+1:2*L,:);
W_1(:,start:stop)=W1;
W_2(:,start:stop)=W2;
W(1:L,start:stop)=W2;
W(L+1:2*L,start:stop)=W1;
end
8 件のコメント
Edric Ellis
2025 年 4 月 15 日
Ah, actually, the Parallel Computing Toolbox page for parfeval already does have examples showing arrays https://uk.mathworks.com/help/parallel-computing/parallel.pool.parfeval.html . @Walter Roberson were you looking at the page in the MATLAB doc? https://uk.mathworks.com/help/matlab/ref/parfeval.html .
Walter Roberson
2025 年 4 月 15 日
その他の回答 (1 件)
Steven Lord
2025 年 4 月 11 日
Have you compared the time of your parfeval call to the time required for a call to the pageeig function?
参考
カテゴリ
Help Center および File Exchange で Loops and Conditional Statements についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!