parfor loop exit: deterministic concurrent?

8 vues (au cours des 30 derniers jours)
Holger I. Meinhardt
Holger I. Meinhardt le 5 Fév 2017
I have a set of independent problems, which I can transfer to a parfor loop. The return value of each of these iterations is false or true. To shorten the computation, I want to exit the parfor loop at the first time the return value "true" has materialized (deterministic concurrent). How can I accomplish this task?

Réponse acceptée

Walter Roberson
Walter Roberson le 5 Fév 2017
The documentation indicates
"If you change parfor to for, the use of s outside the reduction assignment relies on the iterations being performed in a particular order. In a parfor-loop, it matters that the loop "does not care" about the value of a reduction variable as it goes along. It is only after the loop that the reduction value becomes usable."
so there is nothing you can check in the loop to determine whether you should continue. Though I guess you could write to a file and check the file.
Cleaner would be to parfeval() and as the results come back, when you finally get a true, cancel the remaining futures.
  1 commentaire
Holger I. Meinhardt
Holger I. Meinhardt le 6 Fév 2017
Thanks a lot for your suggestion to use parfeval. It works as expected by some minor changes of my code.

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

Community Treasure Hunt

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

Start Hunting!

Translated by