Are my variables sliced?

5 次查看(过去 30 天)
Sam
Sam 2013-3-20
Hello all. I'm trying to parallelize my code, and I'm having a devil of a time trying to understand what a sliced variable looks like. Below, I've included a cleaned-up version of the relevant parts of my code. If I'm not slicing the variables, please let me know what I can do to fix that. I think this might be important because each column of xdata is rather hefty. Thanks in advance.
x = nan(14,6) ;
parfor r = 1:14
x0 = [param_struct.region(r).param1 ...
param_struct.region(r).param2 ...
param_struct.region(r).param3 ...
param_struct.region(r).param4 ...
param_struct.region(r).param5 ...
param_struct.region(r).param6 ...
] ; % x0 is a vector
xdata = [data_struct(r).xdata1 ...
data_struct(r).xdata2 ...
data_struct(r).xdata3 ...
data_struct(r).xdata4 ...
data_struct(r).xdata5 ...
] ; % xdata is a matrix
ydata = data_struct(r).ydata ;
x = lsqcurvefit(fun,x0,xdata,ydata) ;
end

采纳的回答

Shashank Prasanna
Shashank Prasanna 2013-3-21
Sam, you've probably already went through this page, but I will paste it here anyway:
The slicing happens is there is first-Level indexing. In this case param_struct is not sliced because the whole param_struct is required to be passed to each worker.
data_struct(r).xdata1 is sliced. Which means under parfor, data_struct is sliced into 14 variables and sent off to workers. In the former case param_struct can't be sliced because it appears to parfor that all of it may be required.

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Matrix Indexing 的更多信息

产品

Community Treasure Hunt

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

Start Hunting!

Translated by