Problems encountered in Parallel Processing

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

 Respuesta aceptada

Matt J
Matt J el 30 de Ag. de 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 comentarios

Benson Gou
Benson Gou el 30 de Ag. de 2019
Actually func1 is a very large function. I just created a simple example to show my problem.
Thanks a lot.
Benson
Matt J
Matt J el 30 de Ag. de 2019
Editada: Matt J el 30 de Ag. de 2019
How does the size of func1 invalidate my advice? A local function can be any size.
Benson Gou
Benson Gou el 30 de Ag. de 2019
The function func1 has hunreds of lines. The code will becomes very hard to debug if I insert all lines of func1 in the loop of parfor. I am wondering if there is a way to solve this problem of nested function while func1 is kept the same way as it is.
Matt J
Matt J el 30 de Ag. de 2019
Editada: Matt J el 30 de Ag. de 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 el 30 de Ag. de 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

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Startup and Shutdown en Centro de ayuda y File Exchange.

Preguntada:

el 30 de Ag. de 2019

Comentada:

el 30 de Ag. de 2019

Community Treasure Hunt

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

Start Hunting!

Translated by