Problems encountered in Parallel Processing
1 view (last 30 days)
Show older comments
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
0 Comments
Accepted Answer
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
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.
More Answers (0)
See Also
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!