Problems encountered in Parallel Processing

1 view (last 30 days)
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

Accepted Answer

Matt J
Matt J on 30 Aug 2019
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 Comments
Matt J
Matt J on 30 Aug 2019
Edited: Matt J on 30 Aug 2019
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 on 30 Aug 2019
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

Sign in to comment.

More Answers (0)

Categories

Find more on Get Started with MATLAB in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!