How to convert dependent equation to independent for parallel computing (parfor)

1 回表示 (過去 30 日間)
Abhishek Saini
Abhishek Saini 2019 年 2 月 11 日
コメント済み: Walter Roberson 2019 年 2 月 11 日
I am trying to run my code using 'parfor' but getting error due to dependent term. How to resolve that.
The code similar to below. I am getting error for third loop expression
image(: , : , i) = image(: , : , i) + image(: , : , i -1);
parfor ix = 1:nx
% expression to calculate image_c and image_d
for i = 1:nt
image(:,:,i) = image_c(:,:,i) +image_d(:,:,i);
end
for i=2:nt
image(:,:,i) = image(:,:,i) +image(:,:,i-1);
end
end

回答 (1 件)

Walter Roberson
Walter Roberson 2019 年 2 月 11 日
You cannot do that in parallel.
What you can do is roughly
total = zeros(size(image));
parfor i = 1 : nt
total = total + image(:,:,i);
end
MATLAB recognizes total as being a "reduction variable" and will take care of doing the relevant additions and locking.
  5 件のコメント
Walter Roberson
Walter Roberson 2019 年 2 月 11 日
why bother to take a cumulative sum of snapshot_i but then only extract the last layer? Why not just sum(snapshot_i,3) ?
Walter Roberson
Walter Roberson 2019 年 2 月 11 日
Also it looks like
snapshot_i = snapshot_c .* snapshot_d;
with no loop needed ?

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

カテゴリ

Help Center および File ExchangeImages についてさらに検索

製品

Community Treasure Hunt

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

Start Hunting!

Translated by