Parallelizing Independent Tasks Help

1 回表示 (過去 30 日間)
Nimrod Sadeh
Nimrod Sadeh 2018 年 1 月 24 日
コメント済み: Greg 2018 年 1 月 25 日
Hi,
I have a model that I'm trying to parallelize. In this section, I run the same function four times on four independent sets, each time the function outputs three tables of reaction probabilities. I struggled using parfor to parallelize because it behaves strangely with indexing order and I don't understand it. Can anyone chime in with advice about how they would parallelize this task?
[HF,HA,HS] = reactions(H,1,Hprobs);
[OF,OA,OS] = reactions(O,16,Oprobs);
[U25F,U25A,U25S] = reactions(U25,235,U25probs);
[U28F,U28A,U28S] = reactions(U28,238,U28probs);
Thank you!
  9 件のコメント
Nimrod Sadeh
Nimrod Sadeh 2018 年 1 月 25 日
You're right on all counts, Greg. The code works, too. Thanks for your answer - please post it so I can accept. Thank you Walter, too.
I ran the speed test on the data, and it seems the old method is about 4 times faster than the parfor loop, so I'll probably stick to that. But thanks for the help.
Greg
Greg 2018 年 1 月 25 日
If you're looking for general performance improvement (rather than specifically multi-threading), run the profiler. It will identify individual lines of code that are taking especially long to execute. You can then post a new (related) question, identifying those lines and we can try to help optimize.

サインインしてコメントする。

採用された回答

Greg
Greg 2018 年 1 月 25 日
Per the comments, I think you're having curly-brace vs. parenthesis problems, and 1:3 in input, not 1:4:
input = { H, 1, Hprobs; ...
O, 16, Oprobs; ...
U25,235,U25probs; ...
U28,238,U28probs};
parfor i=1:4
[F{i},A{i},S{i}] = reactions(input{i,1:3});
end

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeParticle & Nuclear Physics についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by