Parallel Computing (Job and task)
2 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
Walter Roberson
2012-2-28
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 个评论
Walter Roberson
2012-2-29
See Example 3
http://www.mathworks.com/help/techdoc/ref/function_handle.html
更多回答(1 个)
Isee You
2012-2-29
2 个评论
Walter Roberson
2012-2-29
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.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Parallel Computing Fundamentals 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!