Why do my parfor loops run in parallel in matlab interactive mode, but in serial mode when I deployed, using Matlab compiler?

1 visualizzazione (ultimi 30 giorni)
I have multiple programs that contain parfor loops. These parfor loops successfully execute the relevants sections in parallel when I run in interactive Matolab.
However when I deploy these programs using Matlab compiler, they only run in serial. It seems the Matlab compiler is not honouring my setting "Automatically create a parallel pool (if one doesn't exist) when parallel keywords are executed", which I have enabled in my Matlab settings. (I am compiling using the same settings, so these settings should be baked into the deployed app).
  2 Commenti
Matt J
Matt J il 14 Feb 2018
Modificato: Matt J il 14 Feb 2018
I am compiling using the same settings, so these settings should be baked into the deployed app
I have a feeling that might not be a valid expectation. I don't see any such setting in the run-time options within the deploytool.
William Smith
William Smith il 14 Feb 2018
Modificato: William Smith il 14 Feb 2018
I'm compiling using mcc. I believe that the deployed program contains $PREFDIR and its contents, and unpacks these into $TEMPDIR/mcrCache9.1/ at runtime. I can see "parallel.settings" in that folder. And I can see
<key name="AutoCreate">
<bool>
<value>1</value>
</bool>
</key>
within that file.

Accedi per commentare.

Risposta accettata

William Smith
William Smith il 14 Feb 2018
Note, after 1 day messing around, I was able to work around this by explicitly calling parpool() just before my parfor. This should not be necessary because of the "Automatically create a parallel pool" settings.
Note, I am running Matlab 2016b. I have not verified this incorrect behaviour on a more recent version of Matlab.

Più risposte (0)

Categorie

Scopri di più su Standalone Applications in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by