Parallel Computing (Job and task)
2 views (last 30 days)
Show older comments
hi i try to run matlab code that runs parallel . my problem is .i have 8 for loops and i want these loops to run at the same time because they are independent .any way to do that.my code is
a=imread('x.jpg');
[xx,yy]=size(a);
while x-1>0 && y-1>0
r=mean-a(x-1,y-1);
x=x-1;
y=y-1;
end
%north
while x-1>0 && y<yy
r=mean-a(x-1,y+1);
x=x-1;
end
%north west
while x-1>0 && y+1<yy
r=mean-a(x-1,y+2);
x=x-1;
y=y+1;
end
%west
while x>0 && y+3<yy
r=mean-a(x+1,y+3);
y=y+1;
end
%north west
while x+3<xx && y+3<yy
r=mean-a(x+3,y+3);
x=x+1;
y=y+1;
end
%norht
while x-1>0 && y-1>0
r=mean-a(x+3,y+1);
x=x-1;
y=y-1;
end
%north east
while x+3<xx && y-1>0
r=mean-a(x+3,y-1);
x=x+1;
y=y-1;
end
%eset
while x>0 && y-1>0
r=mean-a(x+1,y-1);
y=y-1;
end
0 Comments
Accepted Answer
Walter Roberson
on 28 Feb 2012
Those loops are not independent: the initial x and y values for any one of the loops depends upon the outcome of the previous loops.
If you want to execute different code per worker, then my understanding is that you would use smpd and use the labindex to switch() to the work to be done. (Or use an array of function handles and index in that by the labindex, I suppose.)
Looking at your code structure, it seems to me likely that the amount of work done would be unbalanced between the workers, with some doing little or no work. There is a high overhead cost to starting a worker, so it is best if each worker does sufficient work that the startup overhead is relatively negligible.
I cannot tell at the moment what your code is intended to do. Please do not use "mean" as a variable name, as it conflicts with the name of the important MATLAB routine mean()
5 Comments
Walter Roberson
on 29 Feb 2012
See Example 3
http://www.mathworks.com/help/techdoc/ref/function_handle.html
More Answers (1)
Isee You
on 29 Feb 2012
2 Comments
Walter Roberson
on 29 Feb 2012
Well, that code will do something in parallel.
It won't do anything _useful_ as you do not return or store any values in the functions.
It will also not do the equivalent of the serialized code, as in the serialized code, the input of each stage is the output of the previous stage.
But in terms of setting up parallelism... yes, those routines should get executed in parallel.
See Also
Categories
Find more on Parallel Computing Fundamentals 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!