Parfor Step
6 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
I am attempting to run a ParFor statement with a step function and Matlab is giving me an error "The range of a parfor statement must be increasing consecutive integers. See Parallel Computing Toolbox, "parfor"." I'm wondering if this is possible or if I have to do some manipulation to my loop to get this to work in parallel. Would someone be able to make a suggestion as to how to modify one of these loops so that it will work in parallel?
Simplified Example
parfor (i = 1:10:75,8)
test3(i)= i*3;
end
Real Example
parfor (i = 1:10:75,8)
tic
recnum = min(i+9,length(test));
datainsert(conn,'dbo.tbl_FactorExposure_Security',{'CUSIP','MktDate','Factor_Exp','Factor_Num'},MyData(i:recnum,:));
disp(i)
toc
end
Thanks a lot! Brian
2 Commenti
Walter Roberson
il 11 Giu 2012
Sorry? What do you intend
for (i = 1:10:75,8)
to mean? Is it intended as
for i = [1:10:75, 8]
meaning
for i = [1 11 21 31 41 51 61 71 8]
?
Risposta accettata
Edric Ellis
il 12 Giu 2012
As the doc states, PARFOR needs to work with unit-step ranges. So you do need to re-work the loop slightly, something like this:
idx = 1:10:75;
parfor (i = 1:numel(idx), 8)
val = idx(i);
test3t(i) = val * 3;
end
That example leaves 'test3t' slightly different to 'test3' in your example, you can rearrange things by doing
test3(idx) = test3t;
2 Commenti
Edric Ellis
il 12 Giu 2012
By the way, the syntax using the extra parentheses around the PARFOR arguments is rarely needed, it's much simpler just to write "parfor i = 1:numel(idx)".
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Parallel for-Loops (parfor) in Help Center e File Exchange
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!