parfor usage in parallel computing tool

11 vues (au cours des 30 derniers jours)
Yize Wang
Yize Wang le 28 Août 2019
Commenté : Yize Wang le 29 Août 2019
Hi,
I am trying to implement parallel computing in MATLAB. The following code works,
A = zeros(10,5);
for k = 2:10
parfor i =1:5
A(k,i) = 1;
end
end
However, if I change it a little,
A = zeros(10,5);
for k = 2:10
parfor i =1:5
A(k-1,i) = 1;
end
end
an error returns
Error using parallel_computing_test (line 5)
Error: The variable A in a parfor cannot be classified.
See Parallel for Loops in MATLAB, "Solve Variable Classification Issues in parfor-Loops".
I already read the document, but I still do not understand what the problem is. Can anybody please help me?
Thank you in advance.

Réponse acceptée

Edric Ellis
Edric Ellis le 29 Août 2019
This is a documented restriction for sliced variables within parfor. The relevant doc page is here, and the relevant section is:
Form of Indexing. Within the first-level of indexing for a sliced variable, exactly one indexing expression is of the form i, i+k, i-k, or k+i. The index i is the loop variable and k is a scalar integer constant or a simple (non-indexed) broadcast variable. Every other indexing expression is a positive integer constant, a simple (non-indexed) broadcast variable, a nested for-loop index variable, colon, or end.
It's the sentence in bold at the end that is relevant. In your non-working case, the indexing expression k-1 does not meet the criteria. k is a broadcast variable, but the expression k-1 is not itself a broadcast variable. You could fix this like so:
A = zeros(10,5);
for k = 2:10
kLess1 = k - 1;
parfor i =1:5
A(kLess1,i) = 1;
end
end
because kLess1 is a broadcast variable.
  1 commentaire
Yize Wang
Yize Wang le 29 Août 2019
Thank you so much for the clear explanation!

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Loops and Conditional Statements dans Help Center et File Exchange

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by