Problems encountered in Parallel Processing

1 回表示 (過去 30 日間)
Benson Gou
Benson Gou 2019 年 8 月 30 日
コメント済み: Benson Gou 2019 年 8 月 30 日
Dear All,
I tried to use parfor to run my code which is given as follows:
function [A,B] = temp_test(x)
a = [1:2*x]; b = [1:x];
A = zeros(1,x); B = zeros(x,1);
parfor i = 1 : x
j = x + 1;
c = func1(a(j),b(i));
A(i) = c;
B(i) = a(j) + b(i);
end
function [d] = func1(e,f)
d = e*f;
end
end
But I was told I can not call func1 like this because it is a nested function. Would anybody tell me how I can fix this problem but I still want to keep the func1 as it is?
Thanks a lot.
Benson

採用された回答

Matt J
Matt J 2019 年 8 月 30 日
Is there any reason not to simply make func1 a local function?
function [A,B] = temp_test(x)
a = [1:2*x]; b = [1:x];
A = zeros(1,x); B = zeros(x,1);
parfor i = 1 : x
j = x + 1;
c = func1(a(j),b(i));
A(i) = c;
B(i) = a(j) + b(i);
end
end
function [d] = func1(e,f)
d = e*f;
end
  5 件のコメント
Matt J
Matt J 2019 年 8 月 30 日
編集済み: Matt J 2019 年 8 月 30 日
I don't think you read my initial post carefully. If you look, you will see that I did not relocate the code of func1 inside the parfor loop. I simply made it into a local function. You could also move func1 to its own file. This might be a good idea if its code is as long and involved as you say.
Benson Gou
Benson Gou 2019 年 8 月 30 日
Dear Matt,
I am very sorry I did not clearlly read your answer. I tried your changed code and it works very well.
Thanks a lot and have a good weekend!
Benson

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

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeGet Started with MATLAB についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by